Q&A

  • 분류먼저 해주시길 부탁드립니다.
exParam := 'File1.exe' +' '+

'param1 +' '+

'param2 +' '+

winexec(Pchar(exParam),SW_SHOWNORMAL)

형식으로 특정 실행화일(File1.exe)을 실행을 시켰습니다.



그런데 위의 화일(File1.exe)을 실행시키기전에

그 화일이 이미 실행이 되어 있으면 그 화일을 종료를 하고

아규먼트를 다른 것을 주고 다시 실행시키고 싶거든요.



어케 하면 되는지 도움 부탁드립니다.

1  COMMENTS
  • Profile
    이만준 2000.01.12 18:16
    이수 wrote:

    > exParam := 'File1.exe' +' '+

    > 'param1 +' '+

    > 'param2 +' '+

    > winexec(Pchar(exParam),SW_SHOWNORMAL)

    > 형식으로 특정 실행화일(File1.exe)을 실행을 시켰습니다.

    >

    > 그런데 위의 화일(File1.exe)을 실행시키기전에

    > 그 화일이 이미 실행이 되어 있으면 그 화일을 종료를 하고

    > 아규먼트를 다른 것을 주고 다시 실행시키고 싶거든요.

    >

    > 어케 하면 되는지 도움 부탁드립니다.



    안녕하세요..



    아래 코드를 이용하세요...



    function IsRun(sFindFile : string): Boolean;

    var peList : TProcessEntry32;

    hL, hP : THandle;

    begin

    Result := False;

    peList.dwSize := SizeOf(TProcessEntry32);

    hL := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if Process32First(hL, peList) then begin

    repeat

    if CompareText(peList.szExeFile, sFindFile) = 0 then begin

    hP := OpenProcess(PROCESS_ALL_ACCESS, TRUE, peList.th32ProcessID);

    TerminateProcess(hP, 0);

    Result := True;

    end;

    until not Process32Next(hL, peList);

    end;

    CloseHandle(hL);

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    if IsRun('c:windowsnotepad.exe')

    then ShowMessage('실행중인 메모장을 종료했습니다.')

    else ShowMessage('메모장이 실행 되지 않았네요.');

    end;



    그럼..



    .