1.不是要console接受windows的系统消息
2.不希望两个console间通过socket、管道、共享内存等方式,就想了解下怎么写进程间的消息收发
例如自己写了两个console程序a.exe b.exe,那么这就是两个进程了,如何自己编写a和b的代码,使得a发送“12345”字串,b能接收并打印出来。
没怎么接触过windows编程,问题比较弱智,见笑了,麻烦给个具体的例子,千万别说“去查MSDN就知道了”,呵呵。
11 个解决方案
#1
采用套接字通信更加简单点啊,
#2
先说为什么非得用消息... 消息依赖线程,而悲催的是线程这东西没有name,于是你不得不以各种诡异的方法去获得线程句柄——前提是这个线程挂在别的有name的东西上。
#3
楼主你为什么这么纠结啊,为什么要达到这种要求呢?搞不懂
#4
大家都问原因.....
这个,因为我以前没弄过windows编程,刚接触,就好奇呗,套接字编程比较熟悉,想换种方式。
我觉得一个进程,一个消息队列,这种方式很好理解,应该支持,所以,就像用这个方式,试试看了
#5
可以换种思路啊
#6
说起来简单,A给比发送消息,信息:abcd,abcd可是在a的进程空间,在B中时无效的。这样,必须现在B中开辟内存(WriteProcessMemory)
#7
如果a.exe b.exe都是打开的,就用套接字吧,这个毫无疑问
如果不是同时打开的,可以写到文件里面去。读取文件就行了,要加密也行啊
如果不是同时打开的,可以写到文件里面去。读取文件就行了,要加密也行啊
#8
楼主唯独漏掉了消息队列..
#9
您好,我想,我想采用的应该,就是您所说的“消息队列”了,这个具体如何实现呢?我找到一些例子,大致的意思是,先写个Hook,在系统中注册,然后就可以收发消息了……
您说的是这样的方式吗?我看过那个例程,似乎只能接收到系统消息,有方法可以自定义消息,并用PostMessage等函数发送吗?
#10
只要你知道线程id,你就可以用PostThreadMessage向任何进程的线程发送消息。但是问题我也说过了,想不通过任何其他进程间通讯手段获得一个进程外线程的id是一个非常不优雅的事,往往是通过搜索窗口之类的不可靠手段间接获得。
如果你真想简单问题复杂化,不如去研究下COM的进程间通讯。
如果你真想简单问题复杂化,不如去研究下COM的进程间通讯。
#11
个人意见:进程间通讯最简单莫过于用共享纯文本文件。
#1
采用套接字通信更加简单点啊,
#2
先说为什么非得用消息... 消息依赖线程,而悲催的是线程这东西没有name,于是你不得不以各种诡异的方法去获得线程句柄——前提是这个线程挂在别的有name的东西上。
#3
楼主你为什么这么纠结啊,为什么要达到这种要求呢?搞不懂
#4
大家都问原因.....
这个,因为我以前没弄过windows编程,刚接触,就好奇呗,套接字编程比较熟悉,想换种方式。
我觉得一个进程,一个消息队列,这种方式很好理解,应该支持,所以,就像用这个方式,试试看了
#5
可以换种思路啊
#6
说起来简单,A给比发送消息,信息:abcd,abcd可是在a的进程空间,在B中时无效的。这样,必须现在B中开辟内存(WriteProcessMemory)
#7
如果a.exe b.exe都是打开的,就用套接字吧,这个毫无疑问
如果不是同时打开的,可以写到文件里面去。读取文件就行了,要加密也行啊
如果不是同时打开的,可以写到文件里面去。读取文件就行了,要加密也行啊
#8
楼主唯独漏掉了消息队列..
#9
您好,我想,我想采用的应该,就是您所说的“消息队列”了,这个具体如何实现呢?我找到一些例子,大致的意思是,先写个Hook,在系统中注册,然后就可以收发消息了……
您说的是这样的方式吗?我看过那个例程,似乎只能接收到系统消息,有方法可以自定义消息,并用PostMessage等函数发送吗?
#10
只要你知道线程id,你就可以用PostThreadMessage向任何进程的线程发送消息。但是问题我也说过了,想不通过任何其他进程间通讯手段获得一个进程外线程的id是一个非常不优雅的事,往往是通过搜索窗口之类的不可靠手段间接获得。
如果你真想简单问题复杂化,不如去研究下COM的进程间通讯。
如果你真想简单问题复杂化,不如去研究下COM的进程间通讯。
#11
个人意见:进程间通讯最简单莫过于用共享纯文本文件。