VB6:如何获取给出DDE响应的程序的句柄ID
我正在将DDE发送到我无法控制的程序。响应的程序有多个实例,所有实例都有相同的主题名、链接等。因此,我想知道哪个实例响应我的DDE请求 我的代码是:VB6:如何获取给出DDE响应的程序的句柄ID,vb6,dde,Vb6,Dde,我正在将DDE发送到我无法控制的程序。响应的程序有多个实例,所有实例都有相同的主题名、链接等。因此,我想知道哪个实例响应我的DDE请求 我的代码是: textBox1.LinkTopic = "MT4|BID" textBox1.LinkItem = Combo1.Text textBox1.LinkMode = 1 textBox1.LinkRequest 这是一个每毫秒触发一次的计时器事件,它工作得非常好 问题是任何程序都可以给我DDE响应:( 所以,我想知道哪个程序给了我DDE响应。 是
textBox1.LinkTopic = "MT4|BID"
textBox1.LinkItem = Combo1.Text
textBox1.LinkMode = 1
textBox1.LinkRequest
这是一个每毫秒触发一次的计时器事件,它工作得非常好
问题是任何程序都可以给我DDE响应:(
所以,我想知道哪个程序给了我DDE响应。
是否可能获取正在响应的dde程序的应用程序id(句柄)?服务器将在的wparam参数中发送窗口句柄。在调用旧的windows过程之前,您可以使用自己的窗口过程缓存窗口句柄 编辑:看起来VB创建了一个隐藏的DDEMLMom窗口,为每个对话托管一个DDEMLAnsiClient。您可以使用EnumWindows并将GetWindowThreadProcessId的结果与GetCurrentProcessId的结果进行比较,以查找您自己进程中的顶级窗口,然后按类名筛选以查找DDEMLMom窗口。获取DD后EMLMom窗口,通过EnumChildWindows查找DDEMLAnsiClient
您可以实现“切换到”通过功能帮助用户识别源应用程序。为什么?您想做什么?通常在dde中,您知道哪个程序将响应,因为您指定了链接主题,并且您可能检查了其他一些程序X的文档,您知道它将响应该主题。嗯,响应的程序有多个实例s、 所有实例都有相同的主题名、链接等,并且程序不在我的控制之下。所以我想知道哪个实例响应我的DDE请求,好吧,我明白了。那么这是一个好问题!…我恐怕不知道答案!+1对于这个问题。我将编辑你问题的开头,以包括你写的内容在那条评论中,希望没问题。还有一个问题。你想要什么类型的句柄?进程句柄?Windows句柄?你打算用这个句柄做什么?任何句柄,只要我能区分不同的InstanceSubclass代码:OldWindowProc=SetWindowLong(u Me.hwnd,GWL_WNDPROC,u NewWindowProc的地址)我收到SET_TEXT和get_TEXT messages,但在对主窗体或textboxDDE消息进行子类化后,我没有收到任何DDE消息。DDE消息发送到顶部窗口,而不是文本框。尝试对主窗口进行子类化。是的,我对顶部窗口进行了子类化,请查看我在上一条注释中粘贴的代码