Get window caption的其它種解法? |
尚未結案
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
Dear all:
日前發現一個有趣的問題, 就是一般我會用WM_GETTEXT去得到其它window的caption, 但今天有有種特例就是一個window在run起來時就hang住了, 已經沒有process message的能力了(例如你可以在WM_PAINT中加入while(1){Sleep(100)}, 就可以得到這樣的window了), 於是乎用SendMessage(hWnd,WM_GETTEXT,x,x);就會NG. 請問當在這種情形時, 得到window caption的其它方法(也不使用GetWindowText()), 謝謝:)~ |
Kingron
中階會員 ![]() ![]() ![]() 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
如果别人没空告诉你名字,那么你怎么去知道呢?
如果你在以前保存过窗口的标题,那么可以考虑用以前的来代替,否则你可以使用: SendMessageTimeout API,设定一个超时即可,如果超时了,那么用以前的标题TEXT,并加上(无响应)即可。 ===================引 用 m8815010 文 章=================== Dear all: 日前發現一個有趣的問題, 就是一般我會用WM_GETTEXT去得到其它window的caption, 但今天有有種特例就是一個window在run起來時就hang住了, 已經沒有process message的能力了(例如你可以在WM_PAINT中加入while(1){Sleep(100)}, 就可以得到這樣的window了), 於是乎用SendMessage(hWnd,WM_GETTEXT,x,x);就會NG. 請問當在這種情形時, 得到window caption的其它方法(也不使用GetWindowText()), 謝謝:)~
------
超级猛料:http://kingron.delphibbs.com
編輯記錄
Kingron 重新編輯於 2007-07-12 21:22:57, 註解 無‧
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
|
Kingron
中階會員 ![]() ![]() ![]() 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
Task manager就是利用GetWindowText来实现的,MSDN特地说明了这一点,告诉大家可以用GetWindowText 来获到挂起的窗口的标题。
至于OS中的Task Manager来判断窗口状态,则是利用: Hungup = SendMessageTimeout(hwnd, WM_NULL, 0, 0, SMTO_ABORTIFHUNG, 200, &dw); 来实现的。 如果你一定要另外的API的话,可以考虑:InternalGetWindowText ===================引 用 m8815010 文 章=================== Dear Kingron: 感謝你的回覆, 你的方式很棒:). 不過我想討論的比較不是後端error handle的問題, 而是前端問題如何解決:)! 因為我發現OS的task manager是可以求得這樣的一個問題window的caption, 所以很好奇它是怎麼做的:)!
------
超级猛料:http://kingron.delphibbs.com |
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
Dear Kingron:
感謝你的回覆. Taskmanager說是用那樣的作法來取得window的caption, 這正是我的問題所在 ![]() 求得每一個window的caption, 正例如我前述所舉例的window, 所以Kingron你一定要try過我所舉例的問題視窗, 你才會比較深刻體 認我的問題 ![]() 而SendMessageTimeOut在我這個問題來講也是無用的, 因為它就是always time out而已, 總是得不到window caption 另外, InternalGetWindowText API, 我會找找來試看看的, 謝謝 ![]() |
Kingron
中階會員 ![]() ![]() ![]() 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
我测试过你说的那种死程序,结果用GetWindowText可以获得Caption。
MSDN也特地说明了的:对于普通的控件,GetWindowText可能会阻塞,但在设计上,对窗口进行了特别处理,即时Window Hungup,仍然可以返回窗口的标题。 请注意看MSDN的帮助。你最好写两个Demo,pack源代码,上载,大家可以测试下。 我自己测试是成功的。 ===================引 用 m8815010 文 章=================== Dear Kingron: 感謝你的回覆, 你的方式很棒:). 不過我想討論的比較不是後端error handle的問題, 而是前端問題如何解決:)! 因為我發現OS的task manager是可以求得這樣的一個問題window的caption, 所以很好奇它是怎麼做的:)!
------
超级猛料:http://kingron.delphibbs.com |
Ktop_Robot
站務副站長 ![]() ![]() 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |