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

如何获取子窗体句柄

答題得分者是:herbert2
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-02 14:20:05 IP:124.237.xxx.xxx 訂閱
如果我知道一个桌面下父窗体的句柄和这个父窗体下(第11层)的一个子窗体的窗口标题,该怎么获取这个子窗体的句柄?
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-02 16:49:09 IP:60.248.xxx.xxx 訂閱
子窗体的句柄 := FindWindowEx(父窗体的句柄, 0, 子窗体的窗口标题, nil);

===================引 用 wq236589 文 章===================
如果我知道一个桌面下父窗体的句柄和这个父窗体下(第11层)的一个子窗体的窗口标题,该怎么获取这个子窗体的句柄?
------
價值的展現,來自於你用哪一個角度來看待它!!
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-03 12:59:27 IP:124.237.xxx.xxx 訂閱
我是这么写的,我是想问有没有简单一点的办法
[code delphi]
function ck():hwnd;
var
ck,ck1,ck2,ck3,ck4,ck5,ck6,ck7,ck8,ck9,ck10,ck11,ck12:hwnd;
begin
ck:=FindWindow(nil,PChar('Google Earth Pro '));
ck1:=FindWindowEx(ck,0,PChar('QWidget'),PChar('qt_central_widget'));
ck2:=FindWindowEx(ck1,0,PChar('QWidget'),PChar('MainWindowHSplitter'));
ck3:=FindWindowEx(ck2,0,PChar('QWidget'),PChar('LeftPanelVSplitter'));
ck4:=FindWindowEx(ck3,0,PChar('QWidget'),PChar('Search'));
ck5:=FindWindowEx(ck4,0,PChar('QWidget'),PChar('Search'));
ck6:=FindWindowEx(ck5,0,PChar('QWidget'),PChar('unnamed'));
ck7:=FindWindowEx(ck6,0,PChar('QWidget'),PChar('搜索'));
ck8:=FindWindowEx(ck7,0,PChar('QWidget'),PChar('searchTabWidget'));
ck9:=FindWindowEx(ck8,0,PChar('QWidget'),PChar('tab pages'));
ck10:=FindWindowEx(ck9,0,PChar('QWidget'),PChar('fly'));
ck11:=FindWindowEx(ck10,0,PChar('QWidget'),PChar('mFlyFrame'));
ck12:=FindWindowEx(ck11,0,PChar('QWidget'),PChar('mFlyCombo'));
Result :=FindWindowEx(ck12,0,PChar('QWidget'),PChar('combo edit'));
end;
[/code]
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-03 22:58:08 IP:211.72.xxx.xxx 訂閱
不是很熟悉 Pascal 語法, 有誤請多包涵.
利用迴圈應可符合您的需求.

[code delphi]
// CapList.CommaText := '"Google Earth Pro","qt_central_widget",........'; // 呼叫時傳入
function ck(CapList: TStrings) : hwnd;
var
ix1: Integer;
sx1: String;
ckP,ckS: hwnd;
begin
ckP := nil;
ix1 := 0;
while ix1 < CapList.Count do
begin
sx1 := CapList.Strings[ix1];
ckS := FindWindow(ckP,0,PChar(sx1),nil);
if ckS = nil then
begin
ckS := ckP;
exit;
end;
ckP := ckS;
ix1 := ix1 1;
end;
Result := ckS;
end;
[/code]
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-04 08:49:05 IP:124.237.xxx.xxx 訂閱
没有只用父窗体的句柄和这个父窗体下(第11层)的一个子窗体的窗口标题就可以获取这个子窗体句柄的方法吗?必须这样一层一层的写下来?
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-05 09:42:25 IP:122.118.xxx.xxx 訂閱
請教一下,您如何得到以下這些元件的名稱,而且還知道它的Parants ??
===================引 用 wq236589 文 章===================
我是这么写的,我是想问有没有简单一点的办法
[code delphi]
function ck():hwnd;
var
ck,ck1,ck2,ck3,ck4,ck5,ck6,ck7,ck8,ck9,ck10,ck11,ck12:hwnd;
begin
ck:=FindWindow(nil,PChar('Google Earth Pro '));
ck1:=FindWindowEx(ck,0,PChar('QWidget'),PChar('qt_central_widget'));
ck2:=FindWindowEx(ck1,0,PChar('QWidget'),PChar('MainWindowHSplitter'));
ck3:=FindWindowEx(ck2,0,PChar('QWidget'),PChar('LeftPanelVSplitter'));
ck4:=FindWindowEx(ck3,0,PChar('QWidget'),PChar('Search'));
ck5:=FindWindowEx(ck4,0,PChar('QWidget'),PChar('Search'));
ck6:=FindWindowEx(ck5,0,PChar('QWidget'),PChar('unnamed'));
ck7:=FindWindowEx(ck6,0,PChar('QWidget'),PChar('搜索'));
ck8:=FindWindowEx(ck7,0,PChar('QWidget'),PChar('searchTabWidget'));
ck9:=FindWindowEx(ck8,0,PChar('QWidget'),PChar('tab pages'));
ck10:=FindWindowEx(ck9,0,PChar('QWidget'),PChar('fly'));
ck11:=FindWindowEx(ck10,0,PChar('QWidget'),PChar('mFlyFrame'));
ck12:=FindWindowEx(ck11,0,PChar('QWidget'),PChar('mFlyCombo'));
Result :=FindWindowEx(ck12,0,PChar('QWidget'),PChar('combo edit'));
end;
[/code]
------
努力會更接近成功
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-12-05 10:02:40 IP:124.237.xxx.xxx 訂閱
我用"spy++" 查的
Parants 是什么意思啊
編輯記錄
wq236589 重新編輯於 2008-12-05 10:07:20, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-12-05 10:30:18 IP:122.118.xxx.xxx 訂閱

HWND parent window
HWND hwndChildAfter, // handle to a child window
LPCTSTR lpszClass, // pointer to class name
LPCTSTR lpszWindow // pointer to window name
);


===================引 用 wq236589 文 章===================
我用"spy " 查的
Parants 是什么意思啊
指的是元件的parent的容器元件啊!
------
努力會更接近成功
wq236589
一般會員


發表:21
回覆:37
積分:16
註冊:2008-08-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-12-06 08:58:06 IP:124.237.xxx.xxx 訂閱
我知道这个获取子窗体句柄的函数,但殊不知道怎么用这个函数达到我上面的要求
就是只用桌面下父窗体的句柄和想要知道句柄的子窗体的标题获得 这个子窗体的句柄
系統時間:2024-05-16 10:59:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!