我想得到一个应用程序的主窗口,这个窗口无标题,类就是普通的client,用FindWindow找不出来。
我就按以前一位大侠说的用EnumWindow,可是现在出现一些问题,不知如何解决。
我有一段源代码如下://自定义的数据结构,在函数中使用
typedef struct tagWNDINFO
{
DWORD dwProcId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;//EnumWindow使用的回调函数
BOOL CALLBACK MyEnumProc(HWND hWnd,LPARAM lParam)
{
DWORD dwProcId;
GetWindowThreadProcessId(hWnd, &dwProcId);//
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if(dwProcId == pInfo->dwProcId)
{
pInfo->hWnd = hWnd;//这里我主要想返回和一个进程ID相关联的主窗口
return FALSE;
}
return TRUE;
}//FindDataWindow函数在主函数中被调用
HWND FindDataWindow(LPCTSTR ClassName,LPCTSTR TitleName)
{
WNDINFO wi;
PROCESS_INFORMATION processInfo;
STARTUPINFO siStartInfo;
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpReserved = NULL;
siStartInfo.lpReserved2 = NULL;
siStartInfo.cbReserved2 = 0;
siStartInfo.lpDesktop = NULL;
siStartInfo.dwFlags = 0; CreateProcess("C:\\Program Files\\BusHound\\bushound.exe",//我在这里随便用的一个程序
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
&siStartInfo,
&processInfo);
if(processInfo.dwProcessId)
{
wi.dwProcId=processInfo.dwProcessId;
wi.hWnd=NULL;
EnumWindows(MyEnumProc,(LPARAM)&wi);
return wi.hWnd;
}
else
{
return NULL;
}
}我发现在回调函数中并不能把我想要的窗口枚举出来,总是返回空。不知哪位大侠了解是不是像我这样处理?
请指点?
我就按以前一位大侠说的用EnumWindow,可是现在出现一些问题,不知如何解决。
我有一段源代码如下://自定义的数据结构,在函数中使用
typedef struct tagWNDINFO
{
DWORD dwProcId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;//EnumWindow使用的回调函数
BOOL CALLBACK MyEnumProc(HWND hWnd,LPARAM lParam)
{
DWORD dwProcId;
GetWindowThreadProcessId(hWnd, &dwProcId);//
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if(dwProcId == pInfo->dwProcId)
{
pInfo->hWnd = hWnd;//这里我主要想返回和一个进程ID相关联的主窗口
return FALSE;
}
return TRUE;
}//FindDataWindow函数在主函数中被调用
HWND FindDataWindow(LPCTSTR ClassName,LPCTSTR TitleName)
{
WNDINFO wi;
PROCESS_INFORMATION processInfo;
STARTUPINFO siStartInfo;
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpReserved = NULL;
siStartInfo.lpReserved2 = NULL;
siStartInfo.cbReserved2 = 0;
siStartInfo.lpDesktop = NULL;
siStartInfo.dwFlags = 0; CreateProcess("C:\\Program Files\\BusHound\\bushound.exe",//我在这里随便用的一个程序
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
&siStartInfo,
&processInfo);
if(processInfo.dwProcessId)
{
wi.dwProcId=processInfo.dwProcessId;
wi.hWnd=NULL;
EnumWindows(MyEnumProc,(LPARAM)&wi);
return wi.hWnd;
}
else
{
return NULL;
}
}我发现在回调函数中并不能把我想要的窗口枚举出来,总是返回空。不知哪位大侠了解是不是像我这样处理?
请指点?
FindWindow了!像空谷清音那样做。好像也得不到。不知怎么回事?