我要实现以下功能:当双击某程序或文件时,在memo中将标题显示出来,如: 新建Microsoft Word文档.doc - Microsoft Word
try.txt - 记事本
CSDN 社区中心 - Microsoft Internet Explprer 尝试用钩子实现,捕捉HSHELL_WINDOWCREATED消息,然后用GetWindowText获取标题,并不能如愿。得到的只是Microsoft Word、Microsoft Internet Explprer等,并不能得到完整的标题名。我理解是HSHELL_WINDOWCREATED捕捉的只是窗口创建的时刻,其内容还未来得及加载,所以得不到全名。 不知道哪位大侠做过类似的工作,能否告知一二?多谢了!
try.txt - 记事本
CSDN 社区中心 - Microsoft Internet Explprer 尝试用钩子实现,捕捉HSHELL_WINDOWCREATED消息,然后用GetWindowText获取标题,并不能如愿。得到的只是Microsoft Word、Microsoft Internet Explprer等,并不能得到完整的标题名。我理解是HSHELL_WINDOWCREATED捕捉的只是窗口创建的时刻,其内容还未来得及加载,所以得不到全名。 不知道哪位大侠做过类似的工作,能否告知一二?多谢了!
2011-01-24 00:16:39
Microsoft Word
C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE
2011-01-24 00:16:39
Microsoft Word
C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE
2011-01-24 00:16:39
Microsoft Word
C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE
2011-01-24 00:16:39
新建 Microsoft Word 文档 (2).doc - Microsoft Word
C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE
OFFICE根据不同版本也不一样的,如果对结果的要求很严格,想办法做个判断看行不,也可以在HSHELL_WINDOWCREATED下做个sleep(500)的延时,但是这个延时的准确性受制于机器性能,不过一般也没问题,我想的话最好还是在REDRAW下面获取。
如果你只想捕获CREATE和REDRAW那就在消息处理的前面加上 If (Msg.wParam <> HSHELL_WINDOWCREATED) and
(Msg.wParam <> HSHELL_REDRAW) Then Exit;这样就只捕获CREATE和REDRAW了
1、通过延时的方法大概不是很好的办法,因为有的程序打开比较慢。比如记事本打开很快,而word打开则比较慢,有时候要好几秒才能打开,所以如何设置一个合适的延时时间是个问题。
2、利用HSHELL_REDRAW捕捉标题,当关闭窗口时不知道怎么也能捕捉到标题,不过是乱码。我理解是因为只要窗口刷新,就会激活HSHELL_REDRAW消息,而一个窗口从启动到关闭,会有很多次刷新。所以这也是一个麻烦的事情。