使用法は次のとおりです。
nparenthandle:hwnd;
nChildhandle:hwnd;
nParentHandle:= findWindow(nil、 '' notepad '');
nparenthandle <> 0の場合
nChildHandle:= findChildWindow(nparenthandle、 '' somechildeditsclassname '');
------関数コード------
var
hwndfindchildwindow:hwnd;
機能enumwindowsforfindchildwindowproc(whandle:hwnd; lparam):stdcall;
const
max_window_name_len = 80;
var
SthgetClassName:文字列;
nhandle:hwnd;
ScurrCrassName:string;
BRESULT:BOOLEAN;
始める
if(hwndfindchildwindow <> 0)then
出口;
SthgetClassName:= PCHAR(LPARAM);
scurrclassname:= getWindowclass(whandle);
bresult:= compareText(scurrclassname、stargetclassname)= 0;
if(bresult)then
hwndfindchildwindow:= whandle
それ以外
FindChildWindow(Whandle、Pchar(lParam));
終わり;
関数FindChildWindow(hwndparent:hwnd; classname:pchar):hwnd;
始める
試す
enumChildWindows(hwndparent、 @enumwindowsforfindchildwindowproc、longint(pchar(classname)));
結果:= hwndfindchildwindow;
を除外する
例外については
結果:= 0;
終わり;
終わり;
//フォーカスで現在のフォームに戻ります
function getfocusedwindowfromparent(parentwnd:hwnd):hwnd;
var
otherthread、
バッファ:dword;
idcurrthread:dword;
始める
otherThread:= getWindowThreadProcessID(ParentWnd、@Buffer);
idcurrthread:= getCurrentThreadId;
attachThreadInput(idcurrthread、otherthread、true)の場合、開始します
結果:= getFocus;
attachThreadInput(idcurrthread、otherthread、false);
終わり
それ以外
結果:= getFocus;
終わり;
//他のアプリケーションの形であっても、現在フォーカスを取得しているサブフォームを取得します
function getFocuseDChildWindow:hwnd;
始める
結果:= getFocusedWindowFromParent(getForeGroundWindow);
終わり;
//フォームのテキストを取得します
function eigetwintext(nhandle:integer):string;
var
pctext:charの配列[0..32768]。
始める
sendMessage(nhandle、wm_getText、32768、longint(@pctext));
結果:= pctext;
終わり;
//フォームのテキストを設定します
手順eisetwintext(nhandle:integer; const snewtext:string);
始める
sendMessage(nhandle、wm_settext、length(snewtext)、longint(pchar(trim(snewtext)))));
終わり;
//フォームのクラス名を返します
function eigetwindowclass(const nhandle:hwnd):string;
var
szClassName:charの配列[0..255]。
始める
getClassName(nhandle、szclassname、255);
結果:= szClassName;
終わり;