进程A已经在执行中现在进程B要通知A去立刻执行A自己的一个方法,要如何去实现??
除了findwindow找到A窗口的句柄去sendmessage这个方法PS:A和B都是C++写的应用程序
xiexie

解决方案 »

  1.   

    除了findwindow找到A窗口的句柄去sendmessage这个方法 
    =====================
    这是一个很好的方法啊,为什么不能用
      

  2.   

    信号量/事件
    管道
    共享内存
    socket都可以用 看具体的需求
      

  3.   

    其实用共享内存也是可以的,不过A要开一个线程不停地监视共享内存的值,当B改变它时就说明要A工作了。同理用SOCKET等方法应该也可以
      

  4.   

    两个进行通信的方法有多种多样,就看这两个程序是否是你自己写的,如果是你自己写的就很好办了,采取任何一种方法都可以。
    1、通过得到窗口后发送消息。
    2、通过信号量/事件 
    3、命名管道 
    4、共享文件
    5、共享数据库表
    6、共享内存 
    7、通过Socket
    等等。 
      

  5.   

    两个进行通信的方法有多种多样,就看这两个程序是否是你自己写的,如果是你自己写的就很好办了,采取任何一种方法都可以。 
    1、通过得到窗口后发送消息。 
    2、通过信号量/事件 
    3、命名管道 
    4、共享文件 
    5、共享数据库表 
    6、共享内存 
    7、通过Socket 
    等等。 
    ============
    总之只要A和B能共享某一个东西就可以通过检测这个东西的变化来通信
      

  6.   

    我用过命名管道和MailPort,单机挺好用的。分布式的就用Socket吧
      

  7.   

    用命名事件。A程序中创建命名事件,并在执行过程中不断检查事件的状态,或者用一个专门线程来等待该事件;B程序打开该事件,SetEvent。
      

  8.   

    其实,不要把问题复杂化,用简单方法能实现的为什么要用复杂的方法呢?
    SendMessage函数用在进程通信中要注意一些问题,这些问题注意到了,
    很好用的
    1.两个进程中都要用RegisterWindowMessage()函数注册同一个消息,
    如:在两个进程中都定义全局变量 UINT WM_Message1
    在InitInstance()中WM_Message1=RegisterWindowMessage("WM_Message1")
    2.要在接收进程的Top级窗口的DefWindowProc中或DefWindowProc中处理消息
    如:CMainFram的DefWindowProc中
    ...
    if(message == WM_Message1)
       ...
      

  9.   

    我看上面很多方法都是在A中开个线程序进行监控内存数据/信号量/事件
    不知道哪个比较好,这样会不会很占cpu??
    另外一个简单的东西用socket是不是有点大材小用了,呵呵,关键是我还不太会socket
      

  10.   

    事件不耗cpu 没有事件的时候 线程在事件上等待cpu是空闲的看你实际应用的情况
    socket用来处理大量数据的交换
    不过两进程如果都在本机的话,
    用socket的情况一般可以通过用匿名或者命名管道解决
      

  11.   

    跨了进程怎么确保event是同一个??就是让A等待B创建的event