通过网页执行程序(如Steam)

时间:2014-01-07 15:28:35

标签: c++ html

我正在尝试执行我在PC上使用C ++编写的程序。我不想像病毒或恶意软件一样使用它。

但是我在Steam上看到了这个,如果你想下载一个游戏,网页会要求你打开Steam,如果你点击确定就会执行Steam!

有人可以给我一些代码吗?

2 个答案:

答案 0 :(得分:2)

简单的答案就在这里:http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx

换句话说,您需要先安装应用程序,然后才能接收来自以该协议开头的浏览器的请求。

在Windows上,协议存储在HKEY_CLASSES_ROOT下的Windows注册表中。只需查看http键等,这就是引用默认浏览器应用程序的位置(例如,“你想让Chrome成为默认浏览器吗?”对话框设置)。

请注意,当您单击链接时,这将始终启动一个新进程,因此,如果您只希望消息到达已打开的应用程序,则必须有一些启动逻辑,以确定是否已在运行另一个实例,然后发送消息并关闭。

答案 1 :(得分: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"的instad,您可以提供-uri "%1"然后在char*[] args内查找-uri并处理下一个arg作为传入请求。这完全是你的电话。