为什么FindWindow找不到已知标题栏的窗口,此窗口在任务管理器的应用程序里看不到,但在进程里有程序名。好像此窗口是应用程序起的一个对 请问怎么找到此窗口的hwnd? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FindWindow好像只能找到Top Level的窗口,方法1。先得到这个进程的UI线程的线程ID,然后EnumThreadWindows方法2.找到这个进程的主窗口的句柄然后EnumChildWindow或者通过主窗口句柄调用API GetWindowThreadProcessId得到线程ID,然后使用方法1 先用spy++查找,看看它实际的window caption你也可用EnumWindows来找window ,请参阅msdn EnumWindows枚举所有窗口,然后来判断 各位老大:我用spy++看了,果然发现3个相同名字的窗口(2个对话框#32770,1个xyz_ROM Class NG)我要的这个对话框下面还有个static="aaabbbccc",请问用EnumWindows怎么找呀?给段代码好吗?谢谢! 你知道你要找的程序的文件名吗?如果知道,可以:PROCESSENTRY32 pe;HWND hwndFind = NULL;BOOL FindExe(WCHAR* exeName){ HANDLE hSnapshot; hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); pe.dwSize=sizeof(PROCESSENTRY32); Process32First(hSnapshot,&pe); do { if (0 == wcscmp(pe.szExeFile,exeName)) { return TRUE; } } while(Process32Next(hSnapshot,&pe)); CloseHandle(hSnapshot); return FALSE;}//在头文件中声明成:static BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam);BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam){ DWORD dwProcessId; GetWindowThreadProcessId(Wnd,&dwProcessId); if(dwProcessId==(DWORD)lParam) { hwndFind = Wnd; return FALSE; } return TRUE;}FindExe(_T("You Want Find.exe"));EnumWindows(YourEnumProc,(LPARAM)pe.th32ProcessID);::SendMessage(hwndFind,WM_XX,1,0); 变量地址 关于鼠标点击事件的运用 谁有CButtonST真正能用的BtnST.h..... 急!!!!!ADO怎么样能正常检测到数据库连接断开(网线断开等) 请VC高手出来帮忙!急 高分求教悬浮框问题 留着没用 , 散分 调试的问题! 有关socket_error的问题,很急,请帮助!!! vc++如何在一个文件中找到某个指定字符串,并在该字符串后插入另一个字符串? vc对文本文件的操作 求乱序算法
先得到这个进程的UI线程的线程ID,
然后EnumThreadWindows方法2.
找到这个进程的主窗口的句柄
然后EnumChildWindow或者通过主窗口句柄调用API GetWindowThreadProcessId得到线程ID,然后使用方法1
你也可用EnumWindows来找window ,请参阅msdn
我要的这个对话框下面还有个static="aaabbbccc",请问用EnumWindows怎么找呀?
给段代码好吗?谢谢!
HWND hwndFind = NULL;
BOOL FindExe(WCHAR* exeName)
{
HANDLE hSnapshot;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); pe.dwSize=sizeof(PROCESSENTRY32);
Process32First(hSnapshot,&pe);
do
{
if (0 == wcscmp(pe.szExeFile,exeName))
{
return TRUE;
}
}
while(Process32Next(hSnapshot,&pe));
CloseHandle(hSnapshot);
return FALSE;
}
//在头文件中声明成:static BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam);
BOOL CALLBACK CMyDlg::YourEnumProc(HWND Wnd,LPARAM lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(Wnd,&dwProcessId);
if(dwProcessId==(DWORD)lParam)
{
hwndFind = Wnd;
return FALSE;
}
return TRUE;
}FindExe(_T("You Want Find.exe"));
EnumWindows(YourEnumProc,(LPARAM)pe.th32ProcessID);
::SendMessage(hwndFind,WM_XX,1,0);