日期:2014-05-18  浏览次数:20862 次

各位,我这个问题弄了很久都没有解决,大家帮忙看下,谢了!
我要启动一个进程moniter.exe(这是安装在我电脑的一个小应用程序),但是需要出传入一个参数,是数据库model中表userinfo的id 字段,MySQL属性为int(11) auto_increment,现在需要传入一个userid(也即id),否则moniter.exe就会出错,因为本身有bug.

我的如下代码正确:
WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe"" 63", 3);
因为我在服务器的MySQL数据库中注册的userid为63, 本地建立的数据库测试可以正常运行了(但是我真正连接远程的数据库还是不行,虽然问题没解决,但是自己没招了,特来发帖求救)


而这种不行:
string userid = ds.Tables[0].Rows[0]["userid"].ToString ();
WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe"" userid", 3);
会出现bug。

求解释。。。。。

------解决方案--------------------
string userid = ds.Tables[0].Rows[0]["userid"].ToString ();
WinExec(@"C:\Program Files\SHU\UserBehavior\moniter.exe "+userid, 3);

别把变量当字符串
------解决方案--------------------
c#有startinfo不需要用这个。process.start里就有。虽然底层也是用楼主的。不过这个比较简单。
------解决方案--------------------
因为Program和Files之间有一个空格
对WinExec来说,空格前面是执行文件,后面是参数。因此,要用引号把有空格的路径包括起来。
WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe"" "+userid, 3);