在web页面调用exe,上一帖未解决,该如何解决

在web页面调用exe,上一帖未解决
我在程序里需要采集人脚大小的尺码,我写了个exe的WinForm小工具,
在公司的每个办事员那里有量脚大小的仪器,当有客户来时,
办事员就在公司办公web页面的一个button启动exe的WinForm小工具,
采集脚尺码,存进数据库。

问题1:
web如何启动exe的WinForm小工具?
如何写ActivX控件,能否给个例子代码?


问题2:
能否把exe的WinForm小工具写成web的?


重点回答下第一个问题,因为exe的WinForm小工具已经写好了,而且急用,web的可以后考虑。

绝对结帐给分!!!

------解决方案--------------------
http://blog.csdn.net/huo789/archive/2006/10/08/1325824.aspx

private void usec(string userName,string realm,string Pwd)
{
//声明一个程序信息类
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
 
//设置外部程序名
Info.FileName = "cmd.exe";
string path=System.Configuration.ConfigurationSettings.AppSettings["chash"];
path=path.Replace("\\","\\\\");
//设置外部程序的启动参数(命令行参数)为test.txt
Info.Arguments = "/c \"createauth.exe "+userName+" "+realm+" "+Pwd+" > createauth\"";
 
//设置外部程序工作目录为 C:\
Info.WorkingDirectory =path;
//Response.Write(path);
 
//声明一个程序类
System.Diagnostics.Process Proc ;
 
try
{
//启动外部程序
Proc = System.Diagnostics.Process.Start(Info);
}
catch(System.ComponentModel.Win32Exception e)
{
Response.Write("系统找不到指定的程序文\r{0}"+e);
Response.End();
return;
}
//打印出外部程序的开始执行时间
//Response.Write("外部程序的开始执行时间:");
//等待10秒钟
Proc.WaitForExit(10000);
 
//如果这个外部程序没有结束运行则对其强行终止
if(Proc.HasExited == false)
{
//Response.Write("由主程序强行终止外部程序的运行!");
Proc.Kill();
}
else
{
//Response.Write("由外部程序正常退出!"); 
}
}
 

------------------------------------------------------

/// <summary>
/// 运行外部程序
/// </summary>
/// <param name="exeName">程序路径</param>
/// <returns>0:失败,1:成功</returns>
public bool RunIt( string exeName )
{
//声明一个程序信息类
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
//设置外部程序名
Info.FileName = exeName;
//声明一个程序类
try
{
System.Diagnostics.Process Proc ;
Proc = System.Diagnostics.Process.Start(Info);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 判断是否运行
/// </summary>
/// <param name="exeName">程序名</param>
/// <returns>0:没运行,1:运行中</returns>
public bool IsRun( string exeName )
{
string isrunning = "0";
Process[] myProcesses = Process.GetProcesses();
foreach(Process myProcess in myProcesses)
{
if ( myProcess.ProcessName == exeName )
{
isrunning = "1";
break;
}
}
if ( isrunning == "1" )
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 结束进程
/// </summary>
/// <param name="exeName">进程名</param>
/// <returns>0:失败,1:成功</returns>
public bool Kill( string exeName )
{
string isrunning = "0";
Process[] myProcesses = Process.GetProcesses();
foreach(Process myProcess in myProcesses)
{
if ( myProcess.ProcessName == exeName )
{
try
{
myProcess.Kill();
isrunning = "1";
}
catch
{
isrunning = "0";
}
break;
}
}
if ( isrunning == "1" )
{
return true;
}
else
{
return false;
}
}



------解决方案--------------------
修改客户端注册表

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\RunApp]
@="RunApp Protocol"
"EditFlags"=hex:02,00,00,00
"URL Protocol"=""

[HKEY_CLASSES_ROOT\RunApp\DefaultIcon]
@="E:\\Test\\ProtocalDemo.exe,0"

[HKEY_CLASSES_ROOT\RunApp\shell]

[HKEY_CLASSES_ROOT\RunApp\shell\open]

[HKEY_CLASSES_ROOT\RunApp\shell\open\command]
@="E:\\Test\\ProtocalDemo.exe %1"

===============
网页中用以下链接,点击时会自动打开本地ProtocalDemo.exe
<a href="RunApp://">E1-893074_EP502&PJ106_G7743.doc</a>