Q&A

  • 외부프로그램을 내프로그램윈도우에 넣기
여러분의 도움을 부탁드립니다.



외부 프로그램(각종 응용프로그램 및 델파이로 짠 또다른 프로그램등)을 현재 프로그램에서

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;





고수님들의 도움 부탁 합니다.







1  COMMENTS
  • Profile
    최승선 2000.09.07 03:30
    익스플로러를 여는 소스로 고쳐 보았습니다.



    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등을 통해서 알 수 있습니다.

    이렇게 해도 안되면 메일 주세요.