您的位置:首页 > 其它

在网页中启动调用客户端桌面程序

2011-08-10 15:25 363 查看
如何通过js来打开客户端的应用程序

在网上获得了如下资料:

<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">

请输入要运行的程序:<br/><input name=exe type=text size=20 value="regedit"><BUTTON class=button onclick="Run(exe.value)">确定</BUTTON><BUTTON class=button onclick=exe.value="";>重新输入</BUTTON><br/>

<BUTTON class=button onclick="Run('notepad')">记事本</BUTTON><br/>

<BUTTON class=button onclick="Run('mspaint')">画图板</BUTTON><br/>

<BUTTON class=button onclick="Run('calc')">计算器</BUTTON><br/>

<BUTTON class=button onclick="Run('cmd')">cmd</BUTTON><br/>

<BUTTON class=button onclick="Run('Regedit')">Regedit</BUTTON><br/>

<BUTTON class=button onclick="Run('Msconfig')">Msconfig</BUTTON><br/>

<BUTTON class=button onclick="Run('file:///d:\hello.exe)">WINAMP</BUTTON><br/>

<BUTTON class=button onclick="Run('IEXPLORE.EXE')">IE</BUTTON><br/>

<BUTTON class=button onclick="Run('..')">..</BUTTON><br/>

<BUTTON class=button onclick="Run('%windir%')">%windir%</BUTTON><br/>

<BUTTON class=button onclick="Run('%temp%')">%temp%</BUTTON><br/>

<BUTTON class=button onclick="Run('file:///D:/Program%20Files/Tencent/qq.EXE')">WINAMP</BUTTON><br/>

</form>

<SCRIPT language=JavaScript>

function Run(command)

{

window.oldOnError = window.onerror;

window._command = command;

window.onerror = function (err)

{

if (err.indexOf('utomation') != -1)

{

alert('命令' + window._command + ' 已经被用户禁止!');

return true;

}

else

return false;

}

var wsh = new ActiveXObject('WScript.Shell');

if (wsh)

wsh.Run(command);

window.onerror = window.oldOnError;

}
</SCRIPT>

</body>
该段代码打开如:word,excel,notepad,画板等都能打开,

但是自已写的应用程序为什么打不开呢?报错说:

系统找不到指定的路径。

想要IE或word点击超链接打开本地的EXE应用程序,这个怎么办?
比如点击这样的链接
<a href="vip:123-MonacoGP-19279-Senna">打开我的协议</a>

将打开我的EXE应用程序?
首先你要修改注册表,要让IE看的懂像href="vip:123-MonacoGP-19279-Senna" 这样的协议.
c#如何写注册表?
//写注册表
RegistryKey key = Registry.ClassesRoot.CreateSubKey("vip");
key.SetValue("", "URL:vip Protocol");
key.SetValue("URL Protocol","");
RegistryKey Subkey= key.CreateSubKey("DefaultICon");
Subkey.SetValue("", "exe文件路径");
Subkey = key.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("Command");
Subkey.SetValue("","exe文件路径");

这段代码是在 注册表 HKEY_CLASSES_ROOT 下新建vip 的键
结构是这样的
HKEY_CLASSES_ROOT

vip

(Default) = "URL:vip Protocol"

URL Protocol= ""

DefaultIcon

(Default) = "c:\somepath\APPTest.exe"

shell

open

command

(Default) = "c:\somepath\APPTest.exe" "%1"
创建完以后当你点击这样(vip:123-MonacoGP-19279-Senna)的链接,就可以打开外部的自己定义的应用程序了.
当然winform 应用程序还可以接收你传过来的值
比如 EXE应用程序启动的时候接收链接传过来的 123-MonacoGP-19279-Senna字符串,你可以在winform 启动的时候捕获这个值
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
//arg[0]就是刚刚链接传过来的
// 赋值=arg[0];
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}


from http://hi.baidu.com/iamtogo/blog/item/2856891101433aebc2ce792c.html

另参见:http://archive.cnblogs.com/a/1937606/ 有图有真相

如何给IE工具栏添加图标和按钮,菜单,打开自己的应用程序?

可以看看这篇

http://www.codeproject.com/useritems/CorKatIEExtension.asp
关于快速的操作注册表

你可以参考

http://www.codeproject.com/cs/system/quickregistry1.asp
本文来源http://www.codeproject.com/aspnet/APPHyperlinks.asp
//
上面所有链接文章的源代码下载地址
http://www.blogjava.net/Files/wujun/APPTest.rar
//END

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: