|
HWND findHwnd = NULL;
BOOL EnumChildProc(HWND hwnd,LPARAM lParam)
{
char clsname[128];
int c = GetClassName(hwnd,clsname,128);
if(c){
// retrieve classname ok
char *p = (char *)lParam;
AnsiString a = clsname;
AnsiString b = p;
if(a==b){
findHwnd = hwnd;
return true;
}
bool r = EnumChildWindows(hwnd,(WNDENUMPROC)EnumChildProc,lParam);
if(r){
findHwnd = hwnd;
return true;
}
}
return false;
}
HWND FindWindow2(HWND parent,char *classname)
{
findHwnd = NULL;
bool r = EnumChildWindows(parent,(WNDENUMPROC)EnumChildProc,(LPARAM)(classname));
if(r){
return findHwnd;
}
return NULL;
}
호출은
HWND hwnd = FindWindow2(FormHandle,"TEdit");
이렇게 하세요.
기타 응용 및 optimization은 하실수 있으리라 믿습니다.
빨리 짜느라고 일단 막 짰습니다.
참고하세요.
하안인 님이 쓰신 글 :
: spy를 실행시켜 현재 실행되어 있는 프로그램을 보면
:
:
: 00000594 SVCHOST
: 0000062C MGAQR
: 000006D0 MGAQR
: 00010556 "" TPanel
: 00010558 "" TFileListBox
: 0001055A "" TFileListBox
: 0001055C "" TdxfOutlookGroup
: 0001055E "" TDBGrid
: 00010560 "" TListBox
: 00010562 "" TEdit
: 00010564 "" TEdit
: 00010566 "" TEdit
: 00010568 "" TEdit
: 0001056A "" TEdit
: 0001056C "" TEdit
: 0001056E "보기" TBitBtn
: 00010570 "" TdxfProgressBar
: 00010574 "IMEKR98U_MAIN" IMEKR98U_MAIN
: 00010576 "" IMEKR98U_STAT
: 00010578 "" IMEKR98U_TOOLTIP
: 0002050E "Mgaqr" TApplication --------------------- > 이부분
: 00020510 "" TPanel
: 0002051C "" TListBox
: 0002053A "" TAdvStringGrid
: 0002053E "" TGridDatePicker
: 0002054A "AQR " Tfm_main ----------------------> 이부분
: 0002054C "" TdxfOutlookBar
: 0002054E "" TNotebook
: 00020550 "cnf" TPage
: 00020552 "" TListBox
: 00020554 "sulmun" TPage
: 0004052E "tel_open" TPage
: 00050536 "Default IME" IME
: 0008051E "" TAdvRichEdit
: 00000654 IEXPLORE
: 000006E4 SNAGIT32
:
:
:
: 위에서 본것중
: 0002050E "Mgaqr" TApplication --------------------- > 이부분
: 0002054A "AQR " Tfm_main ----------------------> 이부분
:
: 이두부분의 차이는 무엇인가요.
:
: wHandle = FindWindow("TApplication","Mgaqr");
: 으로 하면 첫번째 0002050E의 핸들이
: wHandle = FindWindow("Tfm_main",NULL);
: 으로 찾으면 0002054A의 핸들이 리턴되는데 이 두 핸들의 차이점은 무엇인가요.
:
: 제가 하려는 것은 프로그램의 핸들을 찾고
: 그 폼에 위치하고 있는 TEdit의 핸들을 구해서 Edit안에 글씨를 써 넣으려고 합니다.
: 위에 대한 설명이나 조언을 부탁드립니다.
:
:
|