全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2867
推到 Plurk!
推到 Facebook!

Get window caption的其它種解法?

尚未結案
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-24 11:01:43 IP:219.87.xxx.xxx 訂閱
      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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-12 20:37:20 IP:125.89.xxx.xxx 訂閱
如果别人没空告诉你名字,那么你怎么去知道呢?
如果你在以前保存过窗口的标题,那么可以考虑用以前的来代替,否则你可以使用:
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-16 13:43:10 IP:219.87.xxx.xxx 訂閱
Dear Kingron:
感謝你的回覆, 你的方式很棒:). 不過我想討論的比較不是後端error handle的問題, 而是前端問題如何解決:)!
因為我發現OS的task manager是可以求得這樣的一個問題window的caption, 所以很好奇它是怎麼做的:)!
Kingron
中階會員


發表:1
回覆:51
積分:60
註冊:2005-09-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-16 14:46:37 IP:61.143.xxx.xxx 訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-18 11:51:24 IP:219.87.xxx.xxx 訂閱
Dear Kingron:
感謝你的回覆. Taskmanager說是用那樣的作法來取得window的caption, 這正是我的問題所在~我無法always用這個方法去
求得每一個window的caption, 正例如我前述所舉例的window, 所以Kingron你一定要try過我所舉例的問題視窗, 你才會比較深刻體
認我的問題

而SendMessageTimeOut在我這個問題來講也是無用的, 因為它就是always time out而已, 總是得不到window caption

另外, InternalGetWindowText API, 我會找找來試看看的, 謝謝
Kingron
中階會員


發表:1
回覆:51
積分:60
註冊:2005-09-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-18 14:00:56 IP:61.143.xxx.xxx 訂閱
我测试过你说的那种死程序,结果用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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-10-12 11:12:22 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2017-12-15 23:56:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!