1. 개요
특정 프로그램이 실행 중인지 여부를 판단하기 위한 두가지 방법
2. 프로그램 실행 파일명을 이용한 실행여부 판단
uses TlHelp32; function processExists(exeFileName: string): Boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin Result := True; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; procedure TForm1.Button1Click(Sender: TObject); begin if processExists('notepad.exe') then ShowMessage('notepad.exe 실행중!') else ShowMessage('notepad.exe 실행중이지 않음'); end;
3. 뮤텍스(Mutex)를 이용한 방법
initialization mHandle := CreateMutex(nil, True, 'myAppIDString'); if GetLastError = ERROR_ALREADY_EXISTS then begin MessageDlg('프로그램이 실행 중입니다.', mtError, [mbOK], 0); Halt; end;
'프로그래밍 > Delphi' 카테고리의 다른 글
[Tips] 등록된 프레임을 갑자기 사용할 수 없을 때 (0) | 2016.09.05 |
---|---|
페이스북(Facebook) Feed 읽어들이기 (0) | 2016.07.20 |
[델파이] 바람직한 주석(Comment)달기 (0) | 2015.10.07 |
투명 PNG 이미지를 투명하지 않은 다른 이미지 포멧으로 저장하기 (0) | 2015.06.03 |
TcxGrid에서 Popup메뉴 열리기 전에 클릭된 컬럼 및 종류 알아내기 (0) | 2015.04.06 |