进程的窗体 我用GetProcessId(HANDLE _handle)取得了一个进程的有效句柄,现在我想用它来获取这个进程的窗体句柄甚至于窗体上的文本输入框(CEdit)的窗体句柄,请问朋友们WindowsAPI能实现我这个愿望吗?如果可行的话,该怎样作呢?(特别是其中一些天书一样的参数)盼朋友们一吐为快! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过进程handle无法直接获取窗口句柄吧只能通过枚举所有的窗口,然后将窗口句柄与进程句柄比较。不过有的进程有很多窗口。楼下继续。 是啊,枚举窗体,但是:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam)原型中的两个参数我到哪儿去弄呢?而且,从这个函数原型来看,我好象没有得到枚举出来的窗体句柄,又怎么“将窗口句柄与进程句柄比较。”呢?盼老师们一吐为快,指点迷津! (WNDENUMPROC lpEnumFunc,LPARAM lParam)第一个参数是你自己写的回调函数,就是枚举每个窗体后都会调用你的函数第二个参数是你要传给自己回调函数的参数BOOL CALLBACK EnumProc(HWND hWnd,LPARAM LParam) { //add your code //如果你不需要继续再对后面的窗口做枚举, //返回FALSE, 否则,必需返回TRUE。 } BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam)你的先定义一个函数,这个函数的外观见WNDENUMPROC,第一个参数就是你的函数的指针。第二个参数你可以随便传一个东西,它会原封不动的传给你的函数,但是由于回调函数必须为静态或者全局函数,所以这里我一般给this过去。 调用Enum时,操作系统就开始执行,每找到一个窗口,就会调用你的函数一次,你就要在你的函数里判断是否你要找的窗口了。 我用的VC7.1,在 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam)中,除了传递一个NULL,什么也传递不过去,总是报错“什么什么不能转换成LPARAM!”气死我了。依样画葫芦:BOOL CALLBACK EnumProc(HWND hWnd,LPARAM LParam),其中那个LPARAM参数什么都收不到,郁闷啊!自信以前用MFC写过不少程序,一遇到API就头大,求老师们救我... BOOL CALLBACK EnumWindowsProc( HWND hwnd, // handle to parent window LPARAM lParam // application-defined value){ TCHAR szText[128]; if( GetWindowText(hwnd, szText, 128) ) { if( strcmp( szText, _T("你要找的窗口的标题")) ==0 )//DownloadFlash { //找到了,进行你的操作 return TRUE; } } return TRUE;} 在ActiveX中绘制无窗口的Flash做界面,IE下失败,其他浏览器测试正常 如何限制编辑框可以输入的长度? 请问怎样在CSDN论坛里查看一个用户的Email。 字符串问题! 有关CRichEditCtrl的问题! 关于序列化又要求c++功底的问题,在线等待...... 关于OpenGL光源的问题! 怎么样在没有原码的请况下,用vc修改一个DLL中的资源!! (抢答) 何谓线程安全? 到底各位的软件用户数量是怎样计算出来的? 请问下如何防止应用程序被关闭掉? 怎样实现常数组作为参数在函数中进行引用传递?
只能通过枚举所有的窗口,然后将窗口句柄与进程句柄比较。
不过有的进程有很多窗口。楼下继续。
第一个参数是你自己写的回调函数,就是枚举每个窗体后都会调用你的函数
第二个参数是你要传给自己回调函数的参数BOOL CALLBACK EnumProc(HWND hWnd,LPARAM LParam)
{
//add your code
//如果你不需要继续再对后面的窗口做枚举,
//返回FALSE, 否则,必需返回TRUE。
}
你的先定义一个函数,这个函数的外观见WNDENUMPROC,第一个参数就是你的函数的指针。第二个参数你可以随便传一个东西,它会原封不动的传给你的函数,但是由于回调函数必须为静态或者全局函数,所以这里我一般给this过去。
在 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam)中,除了传递一个NULL,什么也传递不过去,总是报错“什么什么不能转换成LPARAM!”气死我了。依样画葫芦:BOOL CALLBACK EnumProc(HWND hWnd,LPARAM LParam),其中那个LPARAM参数什么都收不到,郁闷啊!自信以前用MFC写过不少程序,一遇到API就头大,求老师们救我...
HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
)
{
TCHAR szText[128];
if( GetWindowText(hwnd, szText, 128) )
{
if( strcmp( szText, _T("你要找的窗口的标题")) ==0 )//DownloadFlash
{
//找到了,进行你的操作
return TRUE;
}
}
return TRUE;
}