線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1512
推到 Plurk!
推到 Facebook!

有關取得Handle的問題...

尚未結案
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-19 16:34:54 IP:220.130.xxx.xxx 未訂閱
請問各位先進... 若以CreateOLEObject呼叫某應用程式後(如Word or Excel等...),若不以FindWindow函式來取得該應用程式Handle(因為該應用程式的Window Title可能不固定或不知道),請問還有什麼方式來取得?謝謝!!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-19 19:50:52 IP:219.86.xxx.xxx 未訂閱
可以用 EnumWindows 來枚舉 並利用GetWindowThreadProcessID 判斷是否為 該Process 若使用 Word or Excel 可利用其 COM 直接處理。
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-23 15:46:48 IP:220.229.xxx.xxx 未訂閱
引言: 可以用 EnumWindows 來枚舉 並利用GetWindowThreadProcessID 判斷是否為 該Process 若使用 Word or Excel 可利用其 COM 直接處理。
wameng大大~~ 不好意思, 我如果一定要以CreateOLEObject來做, 請問要如何做? 可以舉個小小的範例嗎? 謝謝!!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-24 16:28:58 IP:220.132.xxx.xxx 未訂閱
Hi, excel 的 com application 有個 hwnd 可取得該 window 的 handle. 但 word 似乎沒有這個屬性可用.    
var
  obj: Variant;
begin
  obj := CreateOleObject('Excel.Application');
  obj.WorkBooks.Add;
  obj.Visible := true;
  ShowMessage('excel application handle = ' IntToStr(obj.Application.Hwnd));
end;
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-24 20:14:06 IP:61.31.xxx.xxx 未訂閱
若不確定為 Word or Excel or ...... 我仍建議用 EnumWindows 然而事實上使用FindWindow 也可以。 不管 Title 。如:FindWindow('OpusApp',nil); 呃..參考
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-29 13:49:08 IP:220.130.xxx.xxx 未訂閱
非常感謝wameng及timhuang大大的回答... 2位回答都可以達到我的需求,但因為要呼叫的應用程式並不固定, 所以還是採用wameng大大的建議...謝謝~~
系統時間:2024-05-05 13:06:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!