通過乙個父窗體的控制代碼,遞迴的列舉它的子窗體,我們可以最終找到需要的子窗體。
用法如下:
nparenthandle: hwnd;
nchildhandle: hwnd;
nparenthandle := findwindow(nil, 'notepad');
ifnparenthandle <> 0then
nchildhandle := findchildwindow(nparenthandle, 'somechildeditsclassname');
------函式**------
var
hwndfindchildwindow : hwnd;
functionenumwindowsforfindchildwindowproc(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;
functionfindchildwindow(hwndparent: hwnd; classname: pchar) : hwnd;
begin
try
enumchildwindows(hwndparent, @enumwindowsforfindchildwindowproc, longint(pchar(classname)));
result := hwndfindchildwindow;
except
onexceptiondo
result := 0;
end;
end;
//返回當前獲得焦點的窗體
functiongetfocusedwindowfromparent(parentwnd:hwnd):hwnd;
var
otherthread,
buffer : dword;
idcurrthread: dword;
begin
otherthread := getwindowthreadprocessid(parentwnd, @buffer);
idcurrthread := getcurrentthreadid;
ifattachthreadinput(idcurrthread, otherthread,true)thenbegin
result := getfocus;
attachthreadinput(idcurrthread, otherthread,false);
end
else
result:= getfocus;
end;
//獲得當前獲得焦點的子窗體,即使它是其他應用程式的窗體
functiongetfocusedchildwindow: hwnd;
begin
result := getfocusedwindowfromparent(getforegroundwindow);
end;
//獲得窗體的文字
functioneigetwintext(nhandle: integer):string;
var
pctext:array[0..32768]ofchar;
begin
sendmessage(nhandle, wm_gettext, 32768, longint(@pctext));
result := pctext;
end;
//設定窗體的文字
procedureeisetwintext(nhandle: integer;constsnewtext:string);
begin
sendmessage(nhandle, wm_settext, length(snewtext), longint(pchar(trim(snewtext))));
end;
//返回窗體的類名
functioneigetwindowclass(constnhandle: hwnd):string;
var
szclassname:array[0..255]ofchar;
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...