如何通过进程handle 获取窗口 handle?
如何通过进程handle 获取窗口 handle? 问题点数:20、回复次数:9Top
1 楼iuhxq(小灰)回复于 2005-04-28 10:39:39 得分 0
我也想知道
HCURSOR CThreadTestDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void lpRecvProc(LPVOID lpParam)
{
CEdit* pEdit=(CEdit*)lpParam;
long j;
CString str;
pEdit->GetWindowText(str);
j=atoi(str);
CString str1;
for(int i=0;i<100000;++i)
{
++j;
str1.Format("%d",j);
pEdit->SetWindowText(str1);
}
}
void CThreadTestDlg::OnStartbutton()
{
// TODO: Add your control notification handler code here
//先终止先前的进程
if(hThread)
TerminateThread(hThread,dwThreadId);
hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)lpRecvProc,&m_edit,0,&dwThreadId);
if(hThread==NULL)
AfxMessageBox("创建线程失败!");
}
这个是传递一个控件handle过去,怎么传递窗口handle呢?Top
2 楼idAnts(此广告位招租)回复于 2005-04-28 10:43:32 得分 5
进程handle 获取窗口 handle
---------------------------
倒过来可以,你可以遍历窗口,找句柄。
GetWindowThreadProcessIdTop
3 楼idAnts(此广告位招租)回复于 2005-04-28 10:46:11 得分 5
iuhxq(小灰)
线程最好不要传m_edit的指针,传m_edit的句柄过去: m_edit.m_hWnd
同样应该传窗口的句柄
m_hWnd;
Top
4 楼iuhxq(小灰)回复于 2005-04-28 11:43:19 得分 0
to idAnts(你才无聊呢) :
谢谢,我也是初学,在一个例子上看到的。
推荐几篇文章好吗?Top
5 楼idAnts(此广告位招租)回复于 2005-04-28 12:22:15 得分 0
什么方面的啊?Top
6 楼Rogeremail(绿色环保-菜青虫)回复于 2005-04-28 14:08:24 得分 5
不是所有的Process都有Window,因此,不是所有的Process都有HWND。
我记得Undocument API里有一个API,你查查看。Top
7 楼iuhxq(小灰)回复于 2005-04-28 14:20:32 得分 0
多线程方面的,最好是简单易懂的^_^Top
8 楼mlxboy(晴空)回复于 2005-04-28 17:47:42 得分 0
随便问一下,程序出现错误提示对货框的时候,进程的状态?
Alive, hung Or Dead??Top
9 楼haungrui(水底深呼吸)回复于 2005-04-28 21:53:33 得分 5
直接从进程handle好像是不能直接得到窗口handle的。不过,可以用一个变通的办法实现曲线救国:枚举所有窗口得到其handle,然后再与你想得到的进程handle相比。要注意的是,一个进程往往有多个窗口。Top




