请问如何获取系统窗口的句柄

q510181751 2014-05-07 07:26:24
我是学.NET的,对VC不是很熟悉,特意过来问问各位,我能用
 foreach (Process p in Process.GetProcesses())
{
string a=p.MainWindowHandle;//进程主窗口的窗口句柄
string b=p.MainWindowTitle;//进程主窗口窗口名称
}

可是我现在要获取打开的文件夹的名称,比如打开我的电脑,我的电脑那个窗口的窗口句柄怎么获取呢?
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
q510181751 2014-05-12
  • 打赏
  • 举报
回复
引用 4 楼 dingxz105090 的回复:
过滤到以后根据窗口标题再调用一下FindWindow就得到句柄了。 你给的代码好像是遍历进程,我给的是遍历窗口。期待更简单更准确的办法。
谢谢你,根据你的这个MFC的代码我弄懂了。。虽然我写的是C#代码可能问错板块了把
凌乱哥 2014-05-08
  • 打赏
  • 举报
回复
过滤到以后根据窗口标题再调用一下FindWindow就得到句柄了。 你给的代码好像是遍历进程,我给的是遍历窗口。期待更简单更准确的办法。
凌乱哥 2014-05-08
  • 打赏
  • 举报
回复
sorry,理解错了

//回调函数:
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lparam)
{
	TCHAR lpWinTitle[256];
	::GetWindowText(hwnd,lpWinTitle,256-1);
	CString m_strTitle;
	m_strTitle.Format(_T("%s"),lpWinTitle);
	if(m_strTitle.GetLength())
		AfxMessageBox(m_strTitle);
	return TRUE;
}

//调用回调函数:
::EnumWindows(EnumWindowsProc,0);
然后你自己根据你的需要过滤一下遍历到的窗口就行了
q510181751 2014-05-08
  • 打赏
  • 举报
回复
我要的是自动获取,不是用findwindow获取,也就是代码批量获取,哥们,你的答案不符合我的问题呐
凌乱哥 2014-05-07
  • 打赏
  • 举报
回复

::FindWindow()

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧