簡體   English   中英

使用ShellExecute在瀏覽器中打開文件

[英]Using ShellExecute to open file in browser

我正在嘗試使用ShellExecute在默認瀏覽器中打開.txt文件。

我目前正在使用

ShellExecute(0, L"open", L"http://E:/path/to/file.txt", 0, 0, 1);

這會在瀏覽器中正確創建一個新窗口,但嘗試打開

E / path / to / file.txt(不帶“:”)

然后找不到關聯的文件。 文件位置絕對正確,因為在瀏覽器中手動添加“:”可以打開文件。

選項1

使用AssocQueryStringIQueryAssocations找出默認瀏覽器,然后在命令行上使用文本文件啟動該瀏覽器。

選項2

使用<meta>標簽創建一個臨時.html文件,該標簽重定向file:// URL,該URL加載了文本文件。 然后用您的臨時.html文件執行ShellExecute。 由於臨時文件的類型為.html ,因此它應加載用戶的默認瀏覽器。 然后,重定向將導致瀏覽器加載文本文件。

訣竅是弄清楚何時清理臨時文件。 ShellExecute並不容易獲得已啟動進程的句柄(實際上,您啟動的進程可能只是啟動了另一個進程),因此您沒有一種簡單的方法來知道何時使用瀏覽器完成瀏覽器臨時文件。 您可能只跟蹤創建的臨時文件,並在應用程序關閉時嘗試將其刪除。

ShellExecute將在默認的文本查看器中打開一個txt文件,這不是我認為的瀏覽器。 要在瀏覽器中打開,請顯式運行瀏覽器並將文件作為參數。 例如:

ShellExecute(
    0,
    L"open",
    L"C:\\Program Files\\Internet Explorer\\iexplore",
    L"E:\\path\\to\\file.txt",
    0,
    1
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM