网页上打开本地程序
作者:英雄无敌 日期:2005-08-04
最近有个需求要在网页上打开本地程序,我记得一年多前也遇到过这个问题,当时出了两个解决方案,一种是用客户端脚本调用windows shell来调用,可以倒是可以,但是该死的杀毒软件总是把这段代码给删掉,于是出了第二个解决方案用VB6做一个ActiveX让用户访问页面的时候自动下载安装,但是用户安装的程序不一定装载什么目录下,所以只好加上一个操作数据库的功能,幸好客户没有说用户可能会在不同的机器登陆,如果真那样岂不是还要找出某台机器的网卡MAC或者cpu的序列号对应程序路径啊。
这次也遇到这个问题,翻出一年多前的vb程序,想想现在都vs2005了还用vb寒碜啊,就改成DOTnet的,其实代码很简单就几行,两种方式调用本地程序,一种是调用winAPI的shell32.dll的shellexecute函数来执行,调用代码如下(C#)
[DllImport("shell32.dll", EntryPoint="ShellExecute")]
public static extern int ShellExecute (
int hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
int nShowCmd
);
程序中直接:ShellExecute(0,"open",YourFilepath,null,null,1);还需要引用System.Runtime.InteropServices;
还有一种是用。net的Process对象,调用代码如下:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = path;
p.Start();
呵呵,才三行。
代码是这样,那么activeX怎么做出来呢,我搜索了一下,找到一篇文章,写得不错,就回忆一下,记录一下大概步骤。
首先建立一个winform的空间Project,界面上就随便画了,一个按钮一个TextBox,textbox输入路径,按钮运行了。
编译成Dll后用vc++的工具取得一个GUID,将[Guid("8F1FAA75-2FA8-4436-9FE4-4B6EED2DF6AF")]放到本类定义前面,将项目属性中配置属性-〉生成-〉为COM Interop注册改成true,ok再在c++工具ole/com对象查看器中就能看到了,右键点击它,选择最后一个“copy HTML
这次也遇到这个问题,翻出一年多前的vb程序,想想现在都vs2005了还用vb寒碜啊,就改成DOTnet的,其实代码很简单就几行,两种方式调用本地程序,一种是调用winAPI的shell32.dll的shellexecute函数来执行,调用代码如下(C#)
[DllImport("shell32.dll", EntryPoint="ShellExecute")]
public static extern int ShellExecute (
int hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
int nShowCmd
);
程序中直接:ShellExecute(0,"open",YourFilepath,null,null,1);还需要引用System.Runtime.InteropServices;
还有一种是用。net的Process对象,调用代码如下:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = path;
p.Start();
呵呵,才三行。
代码是这样,那么activeX怎么做出来呢,我搜索了一下,找到一篇文章,写得不错,就回忆一下,记录一下大概步骤。
首先建立一个winform的空间Project,界面上就随便画了,一个按钮一个TextBox,textbox输入路径,按钮运行了。
编译成Dll后用vc++的工具取得一个GUID,将[Guid("8F1FAA75-2FA8-4436-9FE4-4B6EED2DF6AF")]放到本类定义前面,将项目属性中配置属性-〉生成-〉为COM Interop注册改成true,ok再在c++工具ole/com对象查看器中就能看到了,右键点击它,选择最后一个“copy HTML
评论: 2 | 引用: 0 | 查看次数: 5057
英雄无敌[2005-08-05 01:36 PM | | | 219.142.168.184 | | 回复]
板凳没做过,可以研究研究
发表评论