C# 启动进程传参数问题

richardzrc 2012-04-02 09:23:07
各位大侠,我再用C#做一个登陆界面,连接数据库的用户名 密码验证都做好了,接下来要重启一个已经安装好的userbehavior进程 moniter.exe,但是问了学长,说要传一个数据库中的userid,否则会出bug(确实是这样,因为这个userbehavior本来就有bug ) 我启动的代码如下:
WinExec(@"C:\Program Files\SHU\UserBehavior\moniter.exe",3);

结束进程代码:
Process[] allProgresse = System.Diagnostics.Process.GetProcessesByName("moniter.exe");
foreach (Process closeProgress in allProgresse)
{
if (closeProgress.ProcessName.Equals("moniter.exe"))
{
closeProgress.Kill();
closeProgress.WaitForExit();
break;
}
}

上面启动穿的参数是3,是与启动进程的系统属性有关,比如最小化,最大化,激活等等,我如果想传入的参数是自己应用里面的参数(数据库中的一个表的userid)怎么办,谢谢大侠!
...全文
607 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小飞牛coder 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 VeRooney 的回复:
Process LandFileDivisison=new Process(); LandFileDivisison.StartInfo.FileName=System.Environment.CurrentDirectory+@"moniter.exe"; LandFileDivisison.StartInfo.Arguments="参数";//我这么设置参数的
那我在被打开的进程中,怎样接收这样的参数呢?
FounderSG 2012-04-03
  • 打赏
  • 举报
回复
WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe " + userid, 3);
这样就可以了。

mingcsharp 2012-04-03
  • 打赏
  • 举报
回复
使用WinExec命令
⑴ 函数原型:   UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
后面那个参数是个数字常量,不是字符串
richardzrc 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C# code

WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe""" 参数写在这里",3);
[/Quote]
出现一个问题:
这种可以了:
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);

为什么?
richardzrc 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C# code

WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe""" 参数写在这里",3);
[/Quote]
谢谢!已解决,这是怎么回事呢?他怎么知道我要传的参数就是userid呢?难道exe的参数已经定好了,只有userid?
richardzrc 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

使用WinExec命令
⑴ 函数原型:   UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
后面那个参数是个数字常量,不是字符串
[/Quote]
数字常数指的时3吧,那个userid应该和前面的字符串是一起的吧....我的意思是这个exe的运行参数userid怎么传?
richardzrc 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe " + userid, 3);
这样就可以了。
[/Quote]
这种的userid是string类型么?好像不行额。。。。。
杨友山 2012-04-02
  • 打赏
  • 举报
回复
VeRooney 2012-04-02
  • 打赏
  • 举报
回复
Process LandFileDivisison=new Process();
LandFileDivisison.StartInfo.FileName=System.Environment.CurrentDirectory+@"moniter.exe";
LandFileDivisison.StartInfo.Arguments="参数";//我这么设置参数的
gomoku 2012-04-02
  • 打赏
  • 举报
回复

WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe"" 参数写在这里",3);
gomoku 2012-04-02
  • 打赏
  • 举报
回复

WinExec(@"""C:\Program Files\SHU\UserBehavior\moniter.exe""" 参数写在这里",3);
bdmh 2012-04-02
  • 打赏
  • 举报
回复
怎么办?3都会传了,userid就不会了吗,你总要先从数据库取出来吧,别说这个你不会,取出来替代3就是了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧