Q&A

  • 현재 실행중인 다른프로그램(AutoCAD, Excel..) 실행위치 ?
현재 실행중인 다른프로그램(AutoCAD, Excel..) 실행 디렉토리를 알수 있는 방법이 없을까요 ?

고수님들 꼭 좀 갈켜 주세요 ..^^



1  COMMENTS
  • Profile
    김동환 2001.03.20 03:39
    //현재는 win98에서 찾는 방법만 사용 하였습니다.

    그리구 밑의 SeekProcess함수는 제가 중복으로 실행이 되는지를 Check하기 위하여 작성 하였습니



    다.



    밑의 내역을 사용하시면 현재의 위치를 알아 볼수 있습니다.



    인자인 pszExeName은 프로그램의 실행명을 던지면 됩니다.



    글구 즐프 하세용,,,,,





    function SeekProcess(const pszExeName : string) : HWND;

    var info : TOSVERSIONINFO;



    function WinProcessID(pID : DWORD) : HWND;

    var data : TEnumData;

    begin

    data.pID := pID;

    data.hW := 0;

    EnumWindows(@EnumProc, longint(@data));

    WinProcessID := data.hW;

    end;



    function SeekProcess98(const pszExeName : string) : HWND; //현재 실행되어 있는 프로세서 목록을 구합니다.

    var

    snapshot : Thandle;

    processinfo : TProcessEntry32;

    status : boolean;

    wHandle : HWND;

    szExeName, szPrcName : string;

    begin

    processinfo.dwSize := sizeof(processinfo);

    snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);



    SeekProcess98 := 0;

    szExeName := ExtractFileName(pszExeName);



    if (snapshot <> 0) then

    begin

    status := Process32First(snapshot, processinfo);

    while status do

    begin

    szPrcName := ExtractFileName(processinfo.szExeFile);



    if StrIComp(PChar(szExeName), PChar(szPrcName)) = 0 then

    begin

    wHandle := WinProcessID(processinfo.th32ProcessID);

    SeekProcess98 := wHandle;

    Break;

    end;



    status := Process32Next(snapshot, processinfo);

    end;

    end;

    end;

    begin

    info.dwOSVersionInfoSize := sizeof(info);

    GetVersionEx(info);



    SeekProcess := 0;

    if info.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then

    begin

    SeekProcess := SeekProcess98(pszExeName);

    end;

    end;



    구상도 wrote:

    > 현재 실행중인 다른프로그램(AutoCAD, Excel..) 실행 디렉토리를 알수 있는 방법이 없을까요 ?

    > 고수님들 꼭 좀 갈켜 주세요 ..^^

    >