|
윈도우 비스타와 윈도우 7에서는 뮤텍스를 쓰더라도 의미가 없습니다.
프로세스를 찾아 동일 프로세스가 있는지 체크하시는 것이 빠릅니다.
프로세스 명이 1개 이상이면 중복이라 판단다고 종료하면 됩니다.
도움 님이 쓰신 글 :
: 현재 프로그램의 캡션이 TestApp 라고 하면..
:
: HWND hWnd = FindWindow(NULL, "TestApp ");
: if(hWnd)
: {
: DWORD ProcessId;
: GetWindowThreadProcessId(hWnd, &ProcessId); // hWnd로 프로세스 ID를 얻음..
: HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
: if(hProcess)
: {
: TerminateProcess(hProcess,0);//또는 ExitProcess 사용해서 죽임..
: }
: }
:
: 요 소스를 프로젝트 WinMain 함수에 넣었는데..
: 중복실행을 방지하려고 했는데, 처음실행에도 무조건 걸리네요... ㅠㅠ
: 폼도 안만들어진상태인 WinMain 함수에서 왜 자기자신이 검색이 되는지..
:
: 도움부탁드립니다..
:
: 참고로 Mutex 도 사용해보았습니다만, 어떤이유에서인지 테스트부서에서 몇십회 실행중에 중복실행이 된다고 하네요... PC입수할수 있는 환경도 아님 ㅠㅠ
|