原程序:Winform(MyOwner.exe)主窗口的导航栏(TreeView控件),具有不同的项,分别点击,会在主窗口中弹出不同的界面。如node1对应子窗口1;node2对应子窗口2。改造:在另外一个程序中的不同按钮中设置好命令行启动参数,如Button1对应"../MyOwner.exe -node1",Button2对应"../MyOwner.exe -node2",在点击Buuton1时启动MyOwner.exe并模拟双击node1或直接打开子窗口1,点击Buuton2时因为已经启动了程序MyOwner.exe,想在原有启动的MyOwner.exe中模拟双击node2或直接打开子窗口2。问题:第一次Button1首次启动MyOwner.exe并模拟node1操作,我认为传入命令行,解析,然后触发node1操作,应该好实现。关键是第二次Buuton2时,我先判断程序进程是否已存在,存在的话我该怎么操纵已有的进程进行程序内部操纵呢??求解!!!谢谢

解决方案 »

  1.   

    你不能通过命令行向已经运行的进程发送信息,解决方案1:关掉已经存在的进程,然后重新打开,解决方案2:用Win32 API的FindWindow和PostMessage向MyOwner.exe的主窗口发送Windows消息,这个比较麻烦,但可以实现,解决方案3:用socket和MyOwner.exe通讯,MyOwner.exe内部用TcpLister监听一个指定端口,然后你可以向这个端口发送命令字符串,MyOwner.exe接收到字符串后判断处理,打开node2,还有其他解决方案,如用命名管道和MyOwner.exe通讯、用MSMQ和MyOwner.exe通讯等,都很麻烦,呵呵,
      

  2.   

    program.cs的main函数中可以获得参数,然后你的程序中根据参数名,反射找到对应的函数去执行