Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 抓住窗户的把手_C++_Mfc_Window_Handle - Fatal编程技术网

C++ 抓住窗户的把手

C++ 抓住窗户的把手,c++,mfc,window,handle,C++,Mfc,Window,Handle,我有一个单独线程运行的窗口。我需要在另一个线程中获取该窗口的句柄 我不能使用::FindwindowAPI,因为窗口名称将更改,因为我的应用程序可以用其他语言运行。另外,我没有访问用于窗口名的资源字符串的权限 我也不能使用::GetActiveWindow,因为调用线程id和活动窗口线程id不同 请提供一些解决方案。无需将窗口名称传递给FindWindow函数。可以为窗口名传递NULL,并仅使用lpClassName参数查找窗口 MFC通常自动分配窗口类名,但您可以通过向AfxRegisterC

我有一个单独线程运行的窗口。我需要在另一个线程中获取该窗口的句柄

我不能使用::FindwindowAPI,因为窗口名称将更改,因为我的应用程序可以用其他语言运行。另外,我没有访问用于窗口名的资源字符串的权限

我也不能使用::GetActiveWindow,因为调用线程id和活动窗口线程id不同


请提供一些解决方案。

无需将窗口名称传递给FindWindow函数。可以为窗口名传递NULL,并仅使用lpClassName参数查找窗口


MFC通常自动分配窗口类名,但您可以通过向AfxRegisterClass注册一个唯一的名称并使用该注册的类名创建窗口来控制窗口的类名。

似乎是一个合理的选择,假设您拥有潜在客户线程的id。如果您自己创建了它,为什么需要搜索它。窗口不是我自己创建的。它属于不同的ocx。我的ocx里需要它的把手。两个ocx都在同一进程下运行。如何获取窗口的线程id。因此,您既不知道线程id,也不知道与该窗口相关的任何内容。使用spy++工具检查您的应用程序。如果给它一个指向OLE控件的指针,QI代表IOleWindow,然后使用IOleWindow::GetWindow来获取窗口句柄,可能会有帮助。