Avatar billede nizo Nybegynder
05. november 2005 - 21:50 Der er 8 kommentarer og
1 løsning

Open URL

Hej,

hvordan aabner jeg en URL med C++?
Avatar billede nizo Nybegynder
05. november 2005 - 21:58 #1
Jeg fandt et script med en header fil til som den skal inkludere, men jeg fik en masse fejl.

Min kode:

#include <url.h>

int main()
{
  CURL url;
  url.Open(_T("http://unpro.dk/=/"));
  return 0;
}


Header filen:

#pragma once

class CURL
{
private:
    // The default browser
    CString m_strBrowser;
public:
    void Open(LPCTSTR lpszURL, bool bNewWindow = true)
    {
        if (bNewWindow)
            ::ShellExecute(NULL, NULL, GetBrowser(), lpszURL, NULL, SW_SHOWNORMAL);
        else
            ::ShellExecute(NULL, NULL, lpszURL, NULL, NULL, SW_SHOWNORMAL);
    }

    LPCTSTR GetBrowser(void)
    {
        // Do we have the default browser yet?
        if (m_strBrowser.IsEmpty())
        {
            // Get the default browser from HKCR\http\shell\open\command
            HKEY hKey = NULL;
            // Open the registry
            if (::RegOpenKeyEx(HKEY_CLASSES_ROOT, _T("http\\shell\\open\\command"), 0,
                    KEY_READ, &hKey) == ERROR_SUCCESS)
            {
                // Data size
                DWORD cbData = 0;
                // Get the default value
                if (::RegQueryValueEx(hKey, NULL, NULL, NULL, NULL, &cbData) == ERROR_SUCCESS && cbData > 0)
                {
                    // Allocate a suitable buffer
                    TCHAR* psz = new TCHAR [cbData];
                    // Success?
                    if (psz != NULL)
                    {
                        if (::RegQueryValueEx(hKey, NULL, NULL,
                            NULL, (LPBYTE)psz, &cbData) ==
                            ERROR_SUCCESS)
                        {
                            // Success!
                            m_strBrowser = psz;
                        }
                        delete [] psz;
                    }
                }
                ::RegCloseKey(hKey);
            }
            // Do we have the browser?
            if (m_strBrowser.GetLength() > 0)
            {
                // Strip the full path from the string
                int nStart = m_strBrowser.Find('"');
                int nEnd = m_strBrowser.ReverseFind('"');
                // Do we have either quote?
                // If so, then the path contains spaces
                if (nStart >= 0 && nEnd >= 0)
                {
                    // Are they the same?
                    if (nStart != nEnd)
                    {           
                        // Get the full path
                        m_strBrowser = m_strBrowser.Mid(nStart + 1, nEnd - nStart - 1);
                    }
                }
                else
                {
                    // We may have a pathname with spaces but
                    // no quotes (Netscape), e.g.:
                    //  C:\PROGRAM FILES\NETSCAPE\COMMUNICATOR\PROGRAM\NETSCAPE.EXE -h "%1"
                    // Look for the last backslash
                    int nIndex = m_strBrowser.ReverseFind('\\');
                    // Success?
                    if (nIndex > 0)
                    {
                        // Look for the next space after the final
                        // backslash
                        int nSpace = m_strBrowser.Find(' ', nIndex);
                        // Do we have a space?
                        if (nSpace > 0)
                            m_strBrowser = m_strBrowser.Left(nSpace);               
                    }
                }
            }
        }
        // Done
        return m_strBrowser;
    }
};
Avatar billede bertelbrander Novice
05. november 2005 - 22:49 #2
Det kommer an på hvad du mener med "åbner en url".

Så vidt jeg kan se gør koden ikke andet end at forsøge at åbne en side i default browser, det kan gøres meget simplere.

Koden bruge CString, som er en MFC ting.
Avatar billede nizo Nybegynder
06. november 2005 - 00:53 #3
Hvordan bruger man den?
Avatar billede bertelbrander Novice
06. november 2005 - 00:54 #4
Man kan forsøge at oversætte fra CString til std::string.
CString kræver at du har VisualC++ 5.0 eller 6.0 eller evt. BorlandBuilderX.

Men hvad er det du vil opnå?
Avatar billede nizo Nybegynder
06. november 2005 - 00:56 #5
Bare at faa et script til at aabne en alm side, ved fx en kommando..
Avatar billede bertelbrander Novice
06. november 2005 - 00:59 #6
#include <windows.h>
#include <iostream>

int main()
{
  ShellExecute(0, "open", "www.google.dk", 0, 0, SW_SHOW);
}
Avatar billede nizo Nybegynder
06. november 2005 - 01:10 #7
Perfekt! Giv et svar!
Avatar billede bertelbrander Novice
06. november 2005 - 01:12 #8
Jeg samler ikke på point.
Avatar billede nizo Nybegynder
06. november 2005 - 01:19 #9
Fair nok :) Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester