var
wnd: HWND;
begin
WinExec( 'Fam.exe', sw_hide );
Sleep( 100 );
wnd := FindWindow( '??', nil ); //실행할 프로그램에 핸들 구하기
Windows.SetParent( wnd, Handle ); //실행프로그램의 부모를 현재폼으로 설정
//노드패드 위치크기 설정
SetWindowPos( wnd, 0, 0, 0, clientwidth, clientheight,
SWP_NOZORDER or SWP_SHOWWINDOW );
end;
이렇게하면 Fam.exe가 실행이 되잖아여..
근데..한가지 궁금한게..
wnd := FindWindow( '??', nil ); //실행할 프로그램에 핸들 구하기
이부분에서여..
??에 해당하는걸 어떤걸 넣어줘야될지...
> var
> wnd: HWND;
> begin
> WinExec( 'Fam.exe', sw_hide );
> Sleep( 100 );
> wnd := FindWindow( '??', nil ); //실행할 프로그램에 핸들 구하기
> Windows.SetParent( wnd, Handle ); //실행프로그램의 부모를 현재폼으로 설정
> //노드패드 위치크기 설정
> SetWindowPos( wnd, 0, 0, 0, clientwidth, clientheight,
> SWP_NOZORDER or SWP_SHOWWINDOW );
>
> end;
>
> 이렇게하면 Fam.exe가 실행이 되잖아여..
> 근데..한가지 궁금한게..
> wnd := FindWindow( '??', nil ); //실행할 프로그램에 핸들 구하기
> 이부분에서여..
> ??에 해당하는걸 어떤걸 넣어줘야될지...
>
예번에 한번 만들었던 소스가 있네요..
procedure TForm1.Button1Click(Sender: TObject);
function FindApp(ClassName: String): boolean;
begin
H := FindWindow(PChar(ClassName),nil);
Result := Boolean(H);
end;
begin
WinExec('C:orawin95BINPlus80w.exe tm/tm@hp_tm',SW_HIDE);
while not FindApp('SqlplusWClass') do ;
Windows.SetParent(H, Panel2.Handle);
ShowWindow(H,SW_SHOW);
end;
FindWindow는 파라메터로 첫번째는 클래스명이 오고 두번째는 캡션명이 옵니다.
ClassName를 알 경우
H := FindWindow(ClassName,nil);
프로그램의 캡션명을 알 경우
H := FindWindow(nil,Caption);