还是先说明一点,通过C#后台来调用exe仅仅适用于客户端的程序开发(因为后台调用exe,在部署到IIS服务器后,后台一直调用都是服务器上的exe),对于web端的还是采用js这种方式调用。
C#后台进程调用exe:
public void RealPlay()
{
string ip = Request["realpath"];
string port = Request["realport"];
string path = ip + " " + port;
System.Diagnostics.Process.Start(@"C:\库文件\RealPlayAndPTZDemo.exe", path);
}
path部分是传的参数,你也可以自己定义写,两个参数间用" "间隔开。
js调用exe方法类似,但是写法不同,同时因为是web开发的所以如果exe文件没有注册文件的话,需要自己写个注册文件
注册文件格式如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Browser]
@=""
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="C:\\库文件\\RealPlayAndPTZDemo.exe"
[HKEY_CLASSES_ROOT\EmrBrowser\Shell]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open\Command]
@="C:\\库文件\\RealPlayAndPTZDemo.exe %1"
用txt文档编写后修改后缀名为reg即可。
function sendReportsToPrinter() {
//alert(realpath+realport);
var link = $('<a href="Browser://'+' '+realpath+' '+realport +' '+'2'+'"></a>');
$('body').append(link);
link.get(0).click();
link.remove();
}
'<a href="Browser://'中 Browser://是第一个参数,后面要加参数就先添加' '之后再加参数,参数间用' '隔开,这样传过去后就是你要传递的参数。
注意:这样传递过去后参数都是string[],但是在Google浏览器上运行的时候,Google会跟其他浏览器不同的一点就是传过去的参数不是几个,不如你传递了三个参数,中间都有空格间隔,大多数浏览器都会传递过去三个参数,但是Google传递过去后是只有一个参数,Google传递时把空格转义成了%20,这样你传过去后就只有一个字符串了。
下面看下winform exe文件接收部分怎么写:
首先找到主程序的Program中的 Main函数修改
[STAThread]
static void Main(string[] args)
{
//if (args.Length > 0)
//{
// MessageBox.Show(":" + args[0] + args[1]);
//}
//else { MessageBox.Show("啥:"); } //这是测试有没有参数传递过来
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new RealPlayAndPTZDemo(args));
}
然后修改或添加对应窗体的构造函数
public RealPlayAndPTZDemo(string[] args)
{
InitializeComponent();
if (args.Length>1)
{
ip_textBox.Text = args[1];
port_textBox.Text = args[2];
string flag = args[3].Split('/')[0];
}
else
{
ip_textBox.Text = args[0].Split('%')[1].Substring(2);
port_textBox.Text = args[0].Split('%')[2].Substring(2);
string flag = args[0].Split('%')[3].Substring(2).Split('/')[0];
}
this.Load += new EventHandler(RealPlayAndPTZDemo_Load);
}
构造函数中主要是对传递过来的字符串或字符数组进行解析,这个需要自己根据特定情况自己改写。