Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14084] Re:중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요?
빌더 [] 1861 읽음    2012-02-03 12:04
C++로 짠다면, 다음과 같은 식으로 구현하면 되겠죠.

HANDLE gMutexHandle = NULL;

WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
	try
	{
		try
		{
			gMutexHandle = CreateMutexW(NULL, true, L"Global/Application/Mutex");
			if( gMutexHandle && !GetLastError() ) {
				Application->Initialize();
				Application->MainFormOnTaskBar = true;
				Application->CreateForm(__classid(TForm1), &Form1);
				Application->Run();
			}
			else {
				PROCESS_INFORMATION pi;
				CreateProcessW(NULL, Application->ExeName.w_str(), NULL, NULL, true, 0, NULL, NULL, NULL, &pi);
				Application->Terminate();

			}
		}
		catch (Exception &exception)
		{
			Application->ShowException(&exception);
		}
		catch (...)
		{
			try
			{
				throw Exception("");
			}
			catch (Exception &exception)
			{
				Application->ShowException(&exception);
			}
		}
	}
	__finally {
		if( gMutexHandle ) {
			CloseHandle( gMutexHandle );
			OutputDebugStringW(L"Application Terminated...");
		}
	}
	return 0;
}



위와 같은 식으로 구현하면 기존의 프로세스는 종료되고, 새로운 프로세스가 생성되게 됩니다.
델파이로 구현하는 코드는 생략 합니다.

+ -

관련 글 리스트
14083 중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요? 하두고 2111 2012/02/02
14088     Re:중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요? 빌더 2331 2012/02/04
14089         Re:Re:빌더님 감사합니다. 하두고 1826 2012/02/06
14084     Re:중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요? 빌더 1861 2012/02/03
14085         Re:Re:중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요? 하두고 1827 2012/02/03
14087             Re:Re:Re:중복실행 방지가 아니고 중복실행되면 강제 재실행 하는 방법은 없을까요? 대박왕 2111 2012/02/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.