| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- 한글 2022
- 탐색기
- 노령연금
- 운동
- 한글 패치
- 여행
- ANDAR
- 파일관리자
- 레시피
- 파일 탐색기
- 디스크샷
- 티스토리챌린지
- 개인연금
- 이녁하늘
- 국민연금
- 건강
- 오블완
- 한글화
- 반디집
- Directory Opus
- v3
- Soluling
- 백신
- 안다르
- 분석 도구
- 7z
- 지역화
- 한글패치
- 파솔로 2022
- 이녁 하늘
- Today
- Total
이녁 하늘 아래
PureBASIC 배우기 / 뮤텍스(Mutex) 활용 - 고급 기술 본문
프로그램 중복 실행을 방지하려면 뮤텍스(Mutex) 활용
PureBasic에서 프로그램 중복 실행을 방지하려면 뮤텍스(Mutex)를 활용하는 것이 가장 깔끔하고 확실합니다.
소스 코드의 최상단(EnableExplicit 바로 밑 또는 메인 로직 시작 부분)에 뮤텍스 생성 및 검사 코드를 추가해 주시면 됩니다.
수정 방법
소스 코드의 === 메인 로직 === 시작 부분에 아래와 같이 뮤텍스 확인 로직을 추가합니다.
; === 메인 로직 ===
; --- 중복 실행 방지 (Mutex 활용) ---
Define MutexName.s = "Global\MyUniqueAppMutex_IFWRUN" ; 고유한 뮤텍스 이름 지정
Define hMutex.i = CreateMutex_(#Null, #True, MutexName)
; 이미 뮤텍스가 존재할 경우 (프로그램이 실행 중인 경우)
If hMutex And GetLastError_() = #ERROR_ALREADY_EXISTS
CloseHandle_(hMutex)
; 중복 실행 안내 메시지 출력
MessageRequester("알림", "프로그램이 이미 실행 중입니다.", #PB_MessageRequester_Warning)
End ; 신규 실행 프로세스 종료
EndIf
; --- 기존 로직 시작 ---
Define AppDir.s = GetPathPart(ProgramFilename())
Define ImageWPath.s = AppDir + ".....
; ... (이하 생략) ...

[동작 원리 및 특징]
- CreateMutex_: 시스템 전체에서 공유되는 고유한 이름을 가진 뮤텍스를 생성합니다.
- #ERROR_ALREADY_EXISTS: 다른 프로세스(이전에 실행한 프로그램)가 이미 동일한 뮤텍스를 소유하고 있으면 이 오류 코드가 반환되어 중복 실행 여부를 판단합니다.
- 자동 해제: 프로그램이 종료(End)되면 Windows OS가 해당 뮤텍스 핸들을 자동으로 해제하므로 별도로 닫아주지 않아도 안전하게 작동합니다.
'Autoit3 및 PureBASIC' 카테고리의 다른 글
| 개발 일지 / 통합 SFX 시스템 (드래그앤드롭 빌더 + EXE 선택 런처) (0) | 2026.08.10 |
|---|---|
| PureBASIC / 개발일지 (0) | 2026.08.09 |
| PureBasic 6.40 한글 배워보기 (0) | 2026.08.08 |
| 순수 오토잇으로 만든 단일 파일 패키징 도구 (0) | 2026.08.06 |
| NSIS 단일 파일 패키징 도구 2024.11.01.6 중국어 그린 버전 (2) | 2026.08.04 |
