Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Mở một trang web bằng Visual C++?

  1. #1
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Mặc định Mở một trang web bằng Visual C++?

    Hi everyone !

    Mình đã cố gắng tìm kiếm trên mạng rồi, nhưng ra toàn kết quả linh tinh thôi. Mong các bạn giúp chút.

    Tớ muốn muốn mở một trang web từ ứng dụng của mình. Ví dụ trong app có 1 cái button mà nhấn vào đó là nó bật ngay trình duyệt ( nếu là trình duyệt mặc định thì càng tốt ) để xem trang chủ của mình.

    Thankz !

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    166

    dùng lớp CHtmlView
    Đã được chỉnh sửa lần cuối bởi vinhie47 : 10-02-2007 lúc 12:27 AM.

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    75

    Code:
    #include <windows.h>
    #include <shellapi.h>
    #include <tchar.h>
    
    #define NOT !
    #define EXIT_SUCCESS 0
    #define EXIT_FAILURE 1
    
    int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hNotUse,
                            LPTSTR lpszCmdLine, int nCmdShow)
                            
    {
        
        TCHAR szDefaultBrowserFolder[] = TEXT("C:\\Program Files\\Internet Explorer");
        TCHAR szDefaultBrowserName[] = TEXT("iexplore.exe");
        TCHAR szDefaultWebsite[] = TEXT("congdongcviet.com");
        TCHAR szOperation[] = TEXT("open");
        
        HINSTANCE hBrowserInstance = ShellExecute (NULL, 
                                        szOperation, 
                                        szDefaultBrowserName, 
                                        szDefaultWebsite,
                                        szDefaultBrowserFolder,
                                        SW_SHOWDEFAULT);
                                        
        int nResult = int (hBrowserInstance);
        BOOL bSuccess = (nResult > 32);
        
        if (NOT bSuccess)
            {
                //Check nResutl's value for error id
                        
                MessageBox (NULL, TEXT("Cannot run the requested program!"), TEXT("Error"), MB_OK | MB_ICONERROR);
                return EXIT_FAILURE;
            }
            
        return EXIT_SUCCESS;                                
    }
    Here are some predefined error ids:

    Code:
    0 The operating system is out of memory or resources. 
    ERROR_FILE_NOT_FOUND The specified file was not found. 2
    ERROR_PATH_NOT_FOUND The specified path was not found. 3
    ERROR_BAD_FORMAT The .exe file is invalid (non-Microsoft Win32 .exe or error in .exe image). 11
    SE_ERR_FNF	2
    SE_ERR_PNF	3
    SE_ERR_ACCESSDENIED	5
    SE_ERR_OOM	8
    SE_ERR_DLLNOTFOUND	32
    SE_ERR_SHARE	26
    SE_ERR_ASSOCINCOMPLETE	27
    SE_ERR_DDETIMEOUT	28
    SE_ERR_DDEFAIL	29
    SE_ERR_DDEBUSY	30
    SE_ERR_NOASSOC	31
    Our dreams are young and we both know they take us where we want to go...

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Cảm ơn ilovecplusplus nhiều lắm. Mặc dù nó chỉ chạy IE, nếu mày người ta set Firefox mặc định thì nó vẫn chạy IE. Dù sao tế cũng tốt lắm rồi. => very good.

    Nếu ai mà cao tay hơn, thì cho xin code mà nó bật trình duyệt mặc định lên thì excellent.

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    75

    Code:
    #include <windows.h>
    #include <tchar.h>
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #define SIZE_LIMIT 16300 //in bytes
    
    #ifdef UNICODE
    #define tstring wstring
    #define tcout wcout
    #else
    #define tcout cout
    #define tstring string
    #endif
    
    using namespace std;
    
    int _tmain(void)
    {
       
        TCHAR szSubKey[] = TEXT("HTTP\\shell\\open\\command"); //or HTTPS...
        TCHAR szBuffer[SIZE_LIMIT];
        LONG  cbBufferSize = SIZE_LIMIT * sizeof(TCHAR); //this because the buffer size specified in bytes
        
        LONG nResult = RegQueryValue (HKEY_CLASSES_ROOT, szSubKey, szBuffer, &cbBufferSize);
        BOOL bSuccess = (nResult == ERROR_SUCCESS);
        
        if (bSuccess)
        {
           
           tstring szKeyValue = szBuffer;
           
           DWORD posDOT_EXE = szKeyValue.find_last_of (TEXT(".EXE"));
           DWORD posLAST_BACKSLASH = szKeyValue.find_last_of (TEXT("\\"));
           
           DWORD nBrowserNameLength = posDOT_EXE - posLAST_BACKSLASH;
           DWORD nBrowserFolderPathLength = posLAST_BACKSLASH;
           
           TCHAR szBrowserName [nBrowserNameLength + 1];
           TCHAR szBrowserFolder [nBrowserFolderPathLength + 1];
           
           szKeyValue.copy (szBrowserName, nBrowserNameLength, posLAST_BACKSLASH + 1);
           szKeyValue.copy (szBrowserFolder, nBrowserFolderPathLength, 0);
           
           szBrowserName [nBrowserNameLength] = TEXT('\0');
           szBrowserFolder [nBrowserFolderPathLength] = TEXT('\0');
           
           tcout << TEXT("Key Value (HKEY_CLASSES_ROOT\\HTTP\\shell\\open\\command)") << endl;
           tcout << szKeyValue.c_str() << endl;
           tcout << TEXT("Extracting from key value...") << endl;
           tcout << TEXT("----------------------------") << endl;
           tcout << TEXT("Default Browser Name:") << szBrowserName << endl;
           tcout << TEXT("Default Browser Folder:") << szBrowserFolder << endl;
           
           //Using szBrowserName & szBrowserFolder for ShellExecute
        }
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    /*
    Size limit of Value (ref: MSDN)
    
    Available memory (latest format)
    1MB (standard format)
    
    Windows Me/98/95:  16,300 bytes.
    Windows 95:  There is a 64K limit for the total size of all values of a key.
    
    Because MS modifies the size limit for each OS, you should use GetVersionEx to determine your platform version. 
    */
    Đã được chỉnh sửa lần cuối bởi ilovecplusplus : 11-02-2007 lúc 02:38 AM.
    Our dreams are young and we both know they take us where we want to go...

  6. #6
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Mặc định Mở một trang web bằng Visual C++?

    Lỗi tùm lum rồi bạn ơi !
    Code:
    Compiling...
    Temp.cpp
    E:\My Documents\My Projects\Temp\Temp.cpp(39) : error C2057: expected constant expression
    E:\My Documents\My Projects\Temp\Temp.cpp(39) : error C2466: cannot allocate an array of constant size 0
    E:\My Documents\My Projects\Temp\Temp.cpp(39) : error C2133: 'szBrowserName' : unknown size
    E:\My Documents\My Projects\Temp\Temp.cpp(40) : error C2057: expected constant expression
    E:\My Documents\My Projects\Temp\Temp.cpp(40) : error C2466: cannot allocate an array of constant size 0
    E:\My Documents\My Projects\Temp\Temp.cpp(40) : error C2133: 'szBrowserFolder' : unknown size
    Error executing cl.exe.
    
    Temp.exe - 6 error(s), 0 warning(s)

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    75

    Code:
    #define _STLP_THREADS //comment if you not use STLport
    #define _STLP_WCHAR_T //comment if you not use STLport
    #define SIZE_LIMIT 16300
    
    #include <windows.h>
    #include <tchar.h>
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    #ifdef UNICODE
    #define tcout wcout
    typedef wstring tstring;
    #else
    #define tcout cout
    typedef string tstring;
    #endif
    
    int _tmain(void)
    {
       
        tstring szCmdValue = "";
        TCHAR szCmdSubKey[] = TEXT("HTTP\\shell\\open\\command"); //or HTTPS...
        TCHAR szBuffer[SIZE_LIMIT];
        LONG  cbBufferSize = SIZE_LIMIT * sizeof(TCHAR); //this because the buffer size specified in bytes
        
        LONG nResult = RegQueryValue (HKEY_CLASSES_ROOT, szCmdSubKey, szBuffer, &cbBufferSize);
        BOOL bCmdSuccess = (nResult == ERROR_SUCCESS);
        
        if (bCmdSuccess)
        {
           
           szCmdValue = _tcslwr (szBuffer);               
           DWORD posLAST_BACKSLASH = szCmdValue.rfind (TEXT("\\"));
           DWORD posROOT = szCmdValue.find (TEXT(":\\"));
           DWORD posDOT_EXE = szCmdValue.rfind (TEXT(".exe"));
           
           DWORD nBrowserNameLength = posDOT_EXE - posLAST_BACKSLASH + lstrlen (TEXT(".exe")) - 1; 
           DWORD nBrowserFolderPathLength = posLAST_BACKSLASH - posROOT + 1;
              
           tstring szBrowserName = szCmdValue.substr (posLAST_BACKSLASH + 1, nBrowserNameLength);
           tstring szBrowserFolder = szCmdValue.substr (posROOT - 1, nBrowserFolderPathLength);
        
           tcout << TEXT("Command Value (HKEY_CLASSES_ROOT\\HTTP\\shell\\open\\command)") << endl;
           tcout << szCmdValue.c_str() << endl;
           tcout << TEXT("Extracting from key value...") << endl;
           tcout << TEXT("----------------------------") << endl;
           tcout << TEXT("Default Browser Name:") << szBrowserName.data() << endl;
           tcout << TEXT("Default Browser Folder:") << szBrowserFolder.data() << endl;
           
        }
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    Try again!
    Our dreams are young and we both know they take us where we want to go...

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Xem code của IloveCplusplus cho thấy: Để mở trình duyệt mặc định thì cần Query cái KEY "HKEY_CLASSES_ROOT\HTTP\shell\open\command" để quyết định open cái file exe của trình duyệt nào.

    Vậy cứ theo cái nguyên tắc này để mà tiến hành tùy biến. Phải không IloveCplusplus?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  9. #9
    Ngày gia nhập
    01 2007
    Nơi ở
    Hải Phòng
    Bài viết
    210

    Hic hic ! Cái ông ilovecplusplus ko chịu bảo gì cả, mình cứ tưởng Project kiểu Win32 Application mà xài. Ai dè báo lỗi tùm lum, hóa ra là cái kiểu Win32 Console Application.

    Cảm ơn ông lắm nha.

Các đề tài tương tự

  1. Source code visual 2008 không chay được trên visual 2005
    Gửi bởi hungmq trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 11-07-2013, 11:28 AM
  2. Report Hiển thị tiêu đề của bảng trong report chuẩn của Visual Studio lặp lại ở trang sau?
    Gửi bởi phungha trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 0
    Bài viết cuối: 14-09-2012, 11:43 AM
  3. Visual assist Build 1814 support Visual studio 2010
    Gửi bởi haian trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 0
    Bài viết cuối: 12-04-2010, 06:00 PM
  4. Tạo trang Upload với visual Basic.Net
    Gửi bởi hanam1601 trong diễn đàn Thắc mắc chung
    Trả lời: 4
    Bài viết cuối: 09-05-2009, 01:00 AM
  5. Phân trang trong Richtextbox với visual C#
    Gửi bởi ngocthangmediasoft trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 09-12-2008, 11:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn