通過乙個父窗體的控制代碼,遞迴的列舉它的子窗體,我們可以最終找到需要的子窗體。
用法如下:
nparenthandle: hwnd;
nchildhandle: hwnd;
nparenthandle :
=findwindow(
nil,
'notepad');
ifnparenthandle
<>
0then
nchildhandle :
=findchildwindow(nparenthandle,
'somechildeditsclassname
');
------函式**------
varhwndfindchildwindow : hwnd;
function
enumwindowsforfindchildwindowproc(whandle: hwnd; lparam: lparam): bool;
export
; stdcall
;const
max_window_name_len =80
;var
stargetclassname:
string
;nhandle: hwnd;
scurrclassname:
string
;bresult: boolean;
begin
if(hwndfindchildwindow
<>0)
then
exit;
stargetclassname :
=pchar(lparam);
scurrclassname :
=getwindowclass(whandle);
bresult :
=comparetext(scurrclassname, stargetclassname) =0
;if (bresult)
then
hwndfindchildwindow :
=whandle
else
findchildwindow(whandle, pchar(lparam));
end;
function
findchildwindow(hwndparent: hwnd; classname: pchar) : hwnd;
begin
tryenumchildwindows(hwndparent, @enumwindowsforfindchildwindowproc, longint(pchar(classname)));
result :
=hwndfindchildwindow;
except
on exception
doresult :=0
;end
;end;//
返回當前獲得焦點的窗體
function
getfocusedwindowfromparent(parentwnd:hwnd):hwnd;
varotherthread,
buffer : dword;
idcurrthread: dword;
begin
otherthread :
=getwindowthreadprocessid(parentwnd, @buffer);
idcurrthread :
=getcurrentthreadid;
ifattachthreadinput(idcurrthread, otherthread, true)
then
begin
result :
=getfocus;
attachthreadinput(idcurrthread, otherthread, false);
endelse
result:
=getfocus;
end;
//獲得當前獲得焦點的子窗體,即使它是其他應用程式的窗體
function
getfocusedchildwindow: hwnd;
begin
result :
=getfocusedwindowfromparent(getforegroundwindow);
end;
//獲得窗體的文字
function
eigetwintext(nhandle: integer):
string
;var
pctext:
array[0
..32768
] of
char;
begin
sendmessage(nhandle, wm_gettext,
32768
, longint(@pctext));
result :
=pctext;
end;
//設定窗體的文字
procedure
eisetwintext(nhandle: integer;
const
snewtext:
string
);begin
sendmessage(nhandle, wm_settext, length(snewtext), longint(pchar(trim(snewtext))));
end;
//返回窗體的類名
function
eigetwindowclass(
const
nhandle: hwnd):
string
;var
szclassname:
array[0
..255
] of
char;
begin
getclassname(nhandle, szclassname,
255);
result :
=szclassname;
end;
獲得其他程式的子窗體
通過乙個父窗體的控制代碼,遞迴的列舉它的子窗體,我們可以最終找到需要的子窗體。用法如下 nparenthandle hwnd nchildhandle hwnd nparenthandle findwindow nil,notepad ifnparenthandle 0then nchildhand...
C 獲得其他程式窗體控制項中資訊的方法
這裡演示了獲得其他程式窗體控制項資訊的方法,用findwindow api找到文字框控制代碼,用sendmessagermswjnq wm gettext 獲得文字 include bool callback enumchildpr程式設計客棧oc hwnd hwnd,lparam lparam i...
如何獲得其他程式的EDIT控制項中的內容並修改
zzz如何獲得其他程式的edit控制項中的內容呢?第乙個想法就是使用getwindowtext函式,設定其內容的話就是setwindowtext函式,其實不對,這兩個函式對於其他的控制項都能夠正常工作,唯獨對於edit控制項不行,我在這邊困惑了好久,甚至想去逆向一下程式,看看到底有沒有傳送wm ge...