2014-01-07 47 views
1

我想執行一個程序,我已經在我的PC上用C++編程。我不想像病毒或惡意軟件一樣使用它。通過網頁執行程序(如蒸汽)

但是我在Steam上看到過,如果你想下載遊戲,網頁會要求你打開Steam,如果你點擊確定,它會執行Steam!

有人能給我一個代碼或什麼?

+1

沒有蒸汽,但很可能這是大多數程序做的事情;他們註冊一個協議(如'irc://'或'ftp://'),然後指定應用程序來處理該協議。 ([msdn文檔](http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx)) –

+0

我相信這是推出iTunes等相同。 href協議在應用程序中註冊。即itunes是'itms://' –

+0

@BradChristie你是對的,它使用'steam://' – howderek

回答

2

簡單的答案就在這裏:http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx

換句話說,你需要有首次安裝應用程序,然後就可以收到來自與該協議啓動瀏覽器的請求。

在Windows上,協議存儲在Windows註冊表下的HKEY_CLASSES_ROOT。例如,只需看看http等等關鍵字,這就是默認瀏覽器應用程序被引用的位置(這就是「你想讓Chrome成爲默認瀏覽器嗎?」對話框)。

請注意,當你點擊一個鏈接時,這總是會啓動一個新的過程,所以如果你只想讓消息到達一個已經打開的應用程序,你必須有一些啓動邏輯來發現另一個實例是否已經存在運行,然後發送消息並關閉。

+0

謝謝,我明白了! –

2

因此,假設你要註冊myscheme://到您的應用程序,它是位於C:\Program Files\My Application\MyApplication.exe

首先,創建一個用於創建這個新計劃並把它給您的應用程序進行處理的註冊表文件。

demo.reg

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\myscheme] 
@="URL:MyApplication Protocol" 
"URL Protocol"="" 

[HKEY_CLASSES_ROOT\myscheme\DefaultIcon] 
@="C:\Program Files\My Application\MyApplication.exe,1" 

[HKEY_CLASSES_ROOT\myscheme\shell] 

[HKEY_CLASSES_ROOT\myscheme\shell\open] 

[HKEY_CLASSES_ROOT\myscheme\shell\open\command] 
@="\"C:\Program Files\My Application\MyApplication.exe\" \"%1\"" 

類似的東西,但從來沒有測試和校對其

然後,您更新您的應用程序來處理傳入的請求。因此,例如帶有鏈接:

<a href="myscheme://foo">Click Me!</a> 
然後

將將傳遞給一個打電話給你的應用程序,它類似於:

"C:\program Files\My Application\MyApplication.exe" "myscheme://foo" 

因此,更新應用程序來處理這個傳入的請求,然後執行任何您希望收到切換後的行動。

後續

理想情況下,上述都會自動進行。例如,在安裝時,您可以使用安裝的文件夾位置添加註冊表項。但是,爲了簡單和演示,我已將它製作爲可用於測試的.reg文件。

此外,您可以使用command鍵中的默認值進行播放,並添加另一個參數以更輕鬆地處理傳入請求。例如只需通過"%1"即可提供-uri "%1",然後在char*[] args之內查找-uri並處理下一個arg作爲傳入請求。這完全是你的呼叫。