同一程序多开,如何设置其中一个接收命令

jun517 2018-12-14 01:55:42
我这有个程序A,可以多开,要对他做二次开发,需要给A发送命令,但是连接后A只有第一次打开的程序会接收到命令,通过进程 获取句柄后,怎么设置其他打开的A程序能获取到命令,或者有其他办法能达到这个效果吗?
...全文
1171 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
吹风的兔子 2018-12-21
  • 打赏
  • 举报
回复
发送数据给 A ? Tcp、Http、WebSocket、WCF 通讯 —— 都要求:端口不能重复。 换言之:A 程序 多开,发现端口被占用 还不崩溃,或许 A 就已经是个 BUG了。
平底锅锅锅 2018-12-18
  • 打赏
  • 举报
回复
event事件
  • 打赏
  • 举报
回复
引用 14 楼 loveljy_19901114 的回复:
一般是根据句柄获取什么东西了吧,不知道能不能根据句柄操作窗口,也就是操作类
操作窗口的什么东西,能具体说得出来吗? 只要是实际去做,就一定是基于输入输出细节的,否则怎么可能做起来呢?
什么冬梅 2018-12-16
  • 打赏
  • 举报
回复
引用 4 楼 jun517的回复:
[quote=引用 3 楼 以专业开发人员为伍 的回复:] 贴出你所谓的"给A发送命令“以及程序A接收命令的代码。
A是第三方的软件,接收命令的代码不知道,只A对外开放的连接的方法,默认连接第一次打开的A,只有把第一次打开的A关闭后,才会按照打开的顺序连接后面多开的A,现在只能通过句柄获取到 多开的A,但是具体怎么让某一个接收我这边的连接命令 就不清楚了,不知道我描述的你能不能看懂,先谢谢了。[/quote] 你可以自己写个类型的测试程序,看看是不是都有这个问题。没有问题的话可能是这个第三方软件有检测,多开不允许传参数
loveljy_19901114 2018-12-16
  • 打赏
  • 举报
回复
一般是根据句柄获取什么东西了吧,不知道能不能根据句柄操作窗口,也就是操作类
舉杯邀明月 2018-12-16
  • 打赏
  • 举报
回复
引用 11 楼 jun517 的回复:
[quote=引用 7 楼 以专业开发人员为伍 的回复:]
接收代码不知道、无法控制,那么其实就90%的路堵死了。

那么贴出你发送命令给它的代码。至少从发送命令机制,可以猜出它的接收功能是什么基本的机制。


dll提供的 Connect() 连接,Execute(string Command); 发送命令,看不出什么内容来,试了几次,多开的话,完全是按照打开的先后顺序来连接的,。只有把前面打开4个的全部关闭,再执行Connect(),才会连接第5个,多开窗口的打开顺序是在哪里记录的?是不是可以修改这个顺序?[/quote]
我看你说的这个dll ,也是“对方”提供的吧!
如果它没有提供“在多个进程中选择连接哪个”的机制,
  那么肯定这个“连接行为”由它的“游戏规则”定死了,你是没有选择机会的。

我估计它这“进程间交换数据信息”,是通过ActiveX EXE的COM接口来实现的吧……
 在它的 Connect( )接口中,用的是GetObject( )方式,这样,哪个ActiveX EXE进程是“先打开”的,
 它就会先 Get到哪个了……然后进行相应的连接操作了……
 然后,你的程序中进行的“交互”,就是跟它 “Get到的对象实例”进行操作了……
橘子皮... 2018-12-16
  • 打赏
  • 举报
回复
用注册表~~~~~
jun517 2018-12-16
  • 打赏
  • 举报
回复
引用 7 楼 以专业开发人员为伍 的回复:
接收代码不知道、无法控制,那么其实就90%的路堵死了。 那么贴出你发送命令给它的代码。至少从发送命令机制,可以猜出它的接收功能是什么基本的机制。
dll提供的 Connect() 连接,Execute(string Command); 发送命令,看不出什么内容来,试了几次,多开的话,完全是按照打开的先后顺序来连接的,。只有把前面打开4个的全部关闭,再执行Connect(),才会连接第5个,多开窗口的打开顺序是在哪里记录的?是不是可以修改这个顺序?
  • 打赏
  • 举报
回复
贴出你所谓的"给A发送命令“以及程序A接收命令的代码。
  • 打赏
  • 举报
回复
”通过句柄获取到 多开的A“这类纯技术概念,其实你不必多猜测。实践者其实不缺想象,只不过是更愿意只把原理方面的科学诊断方法挂在嘴边。
  • 打赏
  • 举报
回复
接收代码不知道、无法控制,那么其实就90%的路堵死了。 那么贴出你发送命令给它的代码。至少从发送命令机制,可以猜出它的接收功能是什么基本的机制。
jun517 2018-12-15
  • 打赏
  • 举报
回复
引用 1 楼 APP开发王 的回复:
动下脑筋,用一个外部的配置文件保存参数,程序每次启动都去读取这样就OK了。A启动就生产一个GUID 方便标识自己, 如:GUID:Hello Copy A !!!
可能帖子里描述的不清楚。4楼又大概描述了下,谢谢。
jun517 2018-12-15
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
将需要共享的数据放在 Mutex 里。
Mutex 之前没用过,查了下,这个好像是防止程序多开的?谢谢。
jun517 2018-12-15
  • 打赏
  • 举报
回复
引用 3 楼 以专业开发人员为伍 的回复:
贴出你所谓的"给A发送命令“以及程序A接收命令的代码。
A是第三方的软件,接收命令的代码不知道,只A对外开放的连接的方法,默认连接第一次打开的A,只有把第一次打开的A关闭后,才会按照打开的顺序连接后面多开的A,现在只能通过句柄获取到 多开的A,但是具体怎么让某一个接收我这边的连接命令 就不清楚了,不知道我描述的你能不能看懂,先谢谢了。
threenewbee 2018-12-14
  • 打赏
  • 举报
回复
将需要共享的数据放在 Mutex 里。
APP开发王 2018-12-14
  • 打赏
  • 举报
回复
动下脑筋,用一个外部的配置文件保存参数,程序每次启动都去读取这样就OK了。A启动就生产一个GUID 方便标识自己,
如:GUID:Hello Copy A !!!

110,545

社区成员

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

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

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