2012-11-01 71 views
0

我使用C++ builder 5並在程序中獲得了一些鏈接。我希望這些鏈接在默認系統瀏覽器或Firefox中打開,如果默認爲無選項的話。在C++ builder中設置默認瀏覽器5

我用:

ShellExecute(NULL, "open", "http://maps.google.nl/maps?f=q&hl=nl&q=", NULL, NULL, SW_SHOWNORMAL); 

但對一些鏈接也不會與已存在的代碼工作。

// this is not working 
    case 4: if(Qry_shipment->RecordCount == 0){return;} 
         webaddress = "http://maps.google.nl/maps?f=q&hl=nl&q="; 

        //we need the info from clicked shipment-not from overflow 
        if(Qry_shipment->FieldByName("tstohn")->AsString == pAuthorization[7]) 
        { 
          webaddress = webaddress 
              + Qry_shipment->FieldByName("tslpla")->AsString + "," 
              + Qry_shipment->FieldByName("tslzcd")->AsString + "," 
              + Qry_shipment->FieldByName("lalaad")->AsString; 
        } 
        else 
        { 
          webaddress = webaddress 
              + Qry_shipment->FieldByName("tsupla")->AsString + "," 
              + Qry_shipment->FieldByName("tsuzcd")->AsString + "," 
              + Qry_shipment->FieldByName("lalos")->AsString; 

        } 
        break; 

有可能的代碼PICE如此,所以我不必須編輯所有的鏈接我可以定義程序它自己默認的瀏覽器。

+2

你到底有什麼問題?瀏覽器是否顯示但不打開您的頁面(確保您的URL構建正確),還是ShellExecute自行失敗? – Stan

+0

ShellExecute *將*使用默認瀏覽器打開URL。如果在從數據庫添加參數時代碼失敗,請告訴我們失敗的完整URL。由於我不是心靈上的,我無法推斷出你的數據庫的內容...... – Roddy

回答

0

由於您使用C++ Builder的5,我假設主機操作系統爲Windows。因此,不需要關心多平臺問題。

Windows有一個 「啓動」 命令。根據參數,它將啓動相關的可執行文件。所以,你可以只嘗試:

system("start http://maps.google.nl/"); 

只要參數與http://開始,我不認爲你有任何問題。你也許可以把它變成ShellExecute(),但不幸的是我沒有C++ Builder來檢查它。

希望這會有所幫助。

+0

@stan我想讓程序打開默認的系統瀏覽器而不是IE。我不知道如何重寫代碼,所以它會工作。 – user1746378

+0

但在我的系統(Windows 7)中,它打開默認的瀏覽器,這是我的情況下的Firefox ... – Baltasarq

+0

是在我的系統上也是如何添加參數? + Qry_shipment-> FieldByName(「tsupla」) - > AsString +「,」 + Qry_shipment-> FieldByName(「tsuzcd」) - > AsString +「,」 + Qry_shipment-> FieldByName(「lalos」) - > AsString ; – user1746378

0

如果我理解你的問題(和附加註釋)正確,您目前遇到ShellExecute的問題,這將啓動IE瀏覽器,而不是默認瀏覽器的。如果是這樣,這裏是你可以嘗試的。

  1. 默認系統瀏覽器在系統註冊表中註冊的路徑HKEY_CLASSES_ROOT\http\shell\open\command。可能還有其他位置,但是您可以從這個位置開始,看看它是否適用於大多數系統。您應該從代碼中讀取此條目,並且您將得到一個確切的命令行來啓動默認瀏覽器。

  2. Windows支持的一種特殊類型的文件 - *.url文件(它們只是文本文件)。它們可以用於通過默認瀏覽器打開特定的網址。您可以生成一個臨時文件*.url包含以下內容:

[InternetShortcut]

URL = HTTP://www.domain.com/path查詢

有?像往常一樣,您可以使用ShellExecute執行該文件。

+0

默認瀏覽器工作正常,但我不知道如何將任何參數添加到shellexecute命令。所以我可以添加到網址的東西。 – user1746378

+0

@ user1746378從您的問題中可以清楚地看到,您可以根據需要追加參數,然後可以使用此URL執行瀏覽器。無論哪種方式,我提到應該工作。例如,如果您從註冊表中獲得「C:\ Program Files \ Google \ Chrome \ chrome.exe」 - 「%1」,那麼只需將%1替換爲您的URL並運行整個命令即可。使用互聯網短籌碼方法,只需將您的完整URL放在'URL'鍵中。 – Stan

+0

但沒有一種方法來告訴程序不使用IE瀏覽器,只使用其他瀏覽器 – user1746378

0

當您撥打ShellExecute()時,請將參數lpOperation設置爲NULL而不是"open"。將執行http://協議的真正默認操作,如"open"並不總是默認註冊的動詞。