3个回答
展开全部
用EnumThreadWindows。
或者EnumWindows,再用GetWindowThreadProcessId比较句柄。
或者EnumWindows,再用GetWindowThreadProcessId比较句柄。
追问
能给个例子吗? 谢谢
追答
我没有现成的例子。loboho给出了完整的例子,应该可以解决你的问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef struct tagWNDINFO
{
DWORD dwProcessId;
HWND hWnd;
}
WNDINFO, *LPWNDINFO;
BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM
lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,
&dwProcessId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if(dwProcessId == pInfo->dwProcessId)
{
bool isWindowVisible = IsWindowVisible(hWnd);
if(isWindowVisible == true)
{
pInfo->hWnd = hWnd;
return FALSE;
}
}
return TRUE;
}
HWND GetProcessMainWnd(DWORD
dwProcessId)
{
WNDINFO wi;
wi.dwProcessId = dwProcessId;
wi.hWnd =
NULL;
EnumWindows(YourEnumProc,(LPARAM)&wi);
return wi.hWnd;
}
如果这个进程没有窗口,函数返回NULL
{
DWORD dwProcessId;
HWND hWnd;
}
WNDINFO, *LPWNDINFO;
BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM
lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,
&dwProcessId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if(dwProcessId == pInfo->dwProcessId)
{
bool isWindowVisible = IsWindowVisible(hWnd);
if(isWindowVisible == true)
{
pInfo->hWnd = hWnd;
return FALSE;
}
}
return TRUE;
}
HWND GetProcessMainWnd(DWORD
dwProcessId)
{
WNDINFO wi;
wi.dwProcessId = dwProcessId;
wi.hWnd =
NULL;
EnumWindows(YourEnumProc,(LPARAM)&wi);
return wi.hWnd;
}
如果这个进程没有窗口,函数返回NULL
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CWnd *pWnd = GetDlgItem(IDC_VIDEO); //IDC_VIDEO 控件ID
是这意思吗
是这意思吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询