Q&A

  • API 로 외부 exe call


델파이에서 api를 이용 밖에있는 exe를 실행하려고 합니다.



그전에는



winexec('NQ84011.exe',sw_showdefault);



라고 쓰니 (지금도) 실행이 되더군요.



헌데 win32에서는 createprocess를 쓰라고 되어있더군요.



그래서 알지도 못하면서



si : Startupinfo;

pi : PROCESS_INFORMATION; 선언하고



(위에서도 type...record로 죽 구조선언)



CreateProcess('NQ84011',nil,nil,nil,False,0,nil,nil,si,pi);



라고 쓰니 죽어도 안되고 개기는군요? 뭐 실인자하고 가상인자가 안맞는다나요.



빨랑들^^ 도와주세요~~~~



1  COMMENTS
  • Profile
    심동훈 2000.05.19 07:17
    API wrote:

    >

    > 델파이에서 api를 이용 밖에있는 exe를 실행하려고 합니다.

    >

    > 그전에는

    >

    > winexec('NQ84011.exe',sw_showdefault);

    >

    > 라고 쓰니 (지금도) 실행이 되더군요.

    >

    > 헌데 win32에서는 createprocess를 쓰라고 되어있더군요.

    >

    > 그래서 알지도 못하면서

    >

    > si : Startupinfo;

    > pi : PROCESS_INFORMATION; 선언하고

    >

    > (위에서도 type...record로 죽 구조선언)

    >

    > CreateProcess('NQ84011',nil,nil,nil,False,0,nil,nil,si,pi);

    >

    > 라고 쓰니 죽어도 안되고 개기는군요? 뭐 실인자하고 가상인자가 안맞는다나요.

    >

    > 빨랑들^^ 도와주세요~~~~

    >



    안녕하세요?

    심동훈입니다.



    ShellExecute를 쓰시는 게 낫겠네요.

    ShellExecute(GetDesktopWindow, 'open', PChar('NQ84011.EXE'), nil, nil,

    SW_SHOWNORMAL);

    그렇게 사용하시면 되고,ShellExecute의 구조설명은



    HANDLE ShellExecute(hwnd, lpszOp, lpszFile, lpszParams, lpszDir, wShowCmd);



    HWND hwnd; {부모 원도우의 핸들}

    LPSTR lpszOp; {처리하는 방법, 'open' 과 'print' 두 가지가 있으며 생략하면 "open"}

    LPSTR lpszFile; {처리할 파일명}

    LPSTR lpszParams; {처리시 application에 넘겨줄 파라미터}

    LPSTR lpszDir; {작업 디렉토리}

    WORD wShowCmd; {실행시 윈도우의 상태}



    여기까지입니다.



    즐거운 하루 보내세요.