여러분의 도움을 부탁드립니다.
외부 프로그램(각종 응용프로그램 및 델파이로 짠 또다른 프로그램등)을 현재 프로그램에서
WinEXEC 또는 ShellExcute로 실행 할때 현재 폼의 윈도우 영역안에서 실행 되도록 할려고 합니다. 어떻게 하면 되는지 알려 주시면 고맙겠습니다.
참 어떤분인지 생각이 나지 않지만 아래와 같이 하면 된다고 하신 것같은데
실제로 notepad에 대해서는 잘 동작이 되더군요.
하지만 다른 프로그램들 또는 제가 만든 프로그램은 안되어서 이렇게 질문 드립니다.
procedure TForm1.Button2Click(Sender: TObject);
var
wnd: HWND;
runstr :string;
begin
WINEXEC(PCHAR('notepad'),SW_HIDE);
wnd := FindWindow('notepad',nil ); //노드패드에 핸들 구하기
Windows.SetParent( wnd, Handle ); //실행프로그램의 부모를 현재폼으로 설정
//노드패드 위치크기 설정
SetWindowPos( wnd,HWND_TOPMOST,0, 0, clientwidth, clientheight,
SWP_NOZORDER or SWP_SHOWWINDOW );
end;
고수님들의 도움 부탁 합니다.
procedure TForm1.Button1Click(Sender: TObject);
var
wnd: HWND;
exefile:string;
begin
exefile := 'C:Program FilesInternet ExplorerIEXPLORE.EXE';
WINEXEC(PCHAR(exefile),SW_HIDE);
wnd := FindWindow('IEFrame',nil ); //노드패드에 핸들 구하기
Windows.SetParent( wnd, Handle ); //실행프로그램의 부모를 현재폼으로 설정
//노드패드 위치크기 설정
SetWindowPos( wnd,HWND_TOPMOST,0, 0, clientwidth, clientheight,
SWP_NOZORDER or SWP_SHOWWINDOW );
end;
아마 이 부분을 실수 하신것 같습니다.
wnd := FindWindow('notepad',nil ); //노드패드에 핸들 구하기
wnd := FindWindow('IEFrame',nil ); //익스플로러에 핸들 구하기
FindWindow 에 실행시킨 class name을 적어 주어야 합니다.
class name은 spy등을 통해서 알 수 있습니다.
이렇게 해도 안되면 메일 주세요.