如何获得Windows外壳Explorer.exe进程窗口的地址栏内容 如题。我想得到如打开"我的电脑->C:"这个Explorer.exe进程窗口地址栏内容也(就是"C:\"),和这个窗口客户区域显示的文件内容(也就是C:\下所有文件夹或文件名字)现在我通过hook程序获得了窗口的句柄HWND,但是不知道如何获得窗口地址栏内容。困扰我几天了,期待大家解答 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、先得到窗口文本的大小int iLength= (int)SendMessage(Hwnd,WM_GETTEXTLENGTH,0,0);2、给szText分配内存3、取得窗口文本内容SendMessage(Hwnd,WM_GETTEXT,iLength+1,(LPARAM)szText); 感谢大家回复1楼和2楼我都有试,但是获得的都是caption(窗口标题)。我需要获得窗口显示的当前文件夹下的内容,或者获得地址栏的内容我可以顺着路径找。总之是要得到窗口显示的全部文件夹名字和文件名字如图 用FindWindowEx取窗口句柄之后再枚举到子窗口句柄,然后再用GetWindowText 有点进展了。使用鼠标hook函数,当鼠标悬停在地址栏时GetWindowText能得到地址栏内容,悬停在客户区域时GetWindowText得到FolderView。这样是通过鼠标悬停得到这2个子窗口的句柄。我最终希望能通过父窗口句柄得到地址栏和客户区域这2个窗口句柄。7楼说枚举到子窗口句柄,是用EnumChildWindows函数么?那么枚举到的窗口句柄我如何分辨哪个是地址栏的和客户区域的? 先WindowFromPoint,然后再循环调用RealChildWindowFromPoint,这个方法我以前用过,可以获得地址栏窗口文本 感谢9楼看了MSDN,这2个函数都需要提供Point,这个Point我恐怕不能提供。我目前能得到窗口的父窗口句柄(HWND),我想通过这个句柄得到地址栏和客户区域 顶层窗口句柄 + FindWindowExclass = ReBarWindow32 class = ComboBoxEx32 class = ComboBox class = Edit GetWindowText 自己用spy++看一下shell窗口的层次结构就清楚了。注意:不同OS版本的层次可能不一样。刚才上面发的xp的 11楼我用了你的方法,但是FindWindowEx找不到指定子窗口,返回NULL我首先枚举出所以子窗口,用GetClassName得到每个子窗口类名,打印出来显示出地址栏内容有2个类名:ComboBoxEx32和Edit显示客户区域(FolderView)类名:SysListView32然后使用FindWindowEx(父窗口HWND, NULL, 子窗口类名, NULL)我2次调用FindWindowEx 分别传入Edit和SysListView32返回的HWND都是NULL郁闷 原来子窗口也是分层的看了Spy++发现一个父窗口中也有许多子的父窗口,而不是全部子窗口平级。一些子窗口分别属于不同子父窗口。如果要找到Edit子窗口句柄,需要顶层父窗口->WorkerW->ReBarWindow32->ComboBoxEx32->ComboBox->Edit汗这么晚了下班先 用SPY++去看一下就知道这个程序的子控件是如何分布的了。 新手求助。size_t 直接获取本程序控件针值与DLL注入方式获取控件针值不相同? 弹出模式对话框 终于写完了第一个初级游戏编写教程 VC静态字符串数组怎么初始化 透明背景问题 SQL命令是否错误? 谁用过iphlpapi.dll的进来帮个忙啊! 在vc中文版中如何编写英文版的程序 socket测试,服务端端口通,部分客户端无法连接 Formview 里用TAB控件,代码很简单。 如何禁止通过拖动对话框边框改变对话框大小。
int iLength= (int)SendMessage(Hwnd,WM_GETTEXTLENGTH,0,0);
2、给szText分配内存
3、取得窗口文本内容
SendMessage(Hwnd,WM_GETTEXT,iLength+1,(LPARAM)szText);
1楼和2楼我都有试,但是获得的都是caption(窗口标题)。我需要获得窗口显示的当前文件夹下的内容,或者获得地址栏的内容我可以顺着路径找。总之是要得到窗口显示的全部文件夹名字和文件名字
如图
使用鼠标hook函数,当鼠标悬停在地址栏时GetWindowText能得到地址栏内容,悬停在客户区域时GetWindowText得到FolderView。这样是通过鼠标悬停得到这2个子窗口的句柄。
我最终希望能通过父窗口句柄得到地址栏和客户区域这2个窗口句柄。7楼说枚举到子窗口句柄,是用EnumChildWindows函数么?那么枚举到的窗口句柄我如何分辨哪个是地址栏的和客户区域的?
看了MSDN,这2个函数都需要提供Point,这个Point我恐怕不能提供。
我目前能得到窗口的父窗口句柄(HWND),我想通过这个句柄得到地址栏和客户区域
class = ComboBoxEx32
class = ComboBox
class = Edit
GetWindowText
注意:不同OS版本的层次可能不一样。刚才上面发的xp的
我首先枚举出所以子窗口,用GetClassName得到每个子窗口类名,打印出来
显示出地址栏内容有2个类名:ComboBoxEx32和Edit
显示客户区域(FolderView)类名:SysListView32
然后使用FindWindowEx(父窗口HWND, NULL, 子窗口类名, NULL)
我2次调用FindWindowEx 分别传入Edit和SysListView32返回的HWND都是NULL
郁闷
看了Spy++发现一个父窗口中也有许多子的父窗口,而不是全部子窗口平级。一些子窗口分别属于不同子父窗口。
如果要找到Edit子窗口句柄,需要顶层父窗口->WorkerW->ReBarWindow32->ComboBoxEx32->ComboBox->Edit
汗这么晚了下班先