하두고 님이 쓰신 글 :
: 빌더님 이번에도 도움을 주시네요.
: 델파이로 수정하는건 어떻게든 해보면 될것 같습니다.
: 감사합니다.
:
: 아참 그리고 앞에 WorkerW를 찾는거요.
: 지금도 못하고 있어요.
: 쉽게 될 줄 알고 달려들었는데 제 공부가 미천하다보니....^^
:
: 빌더 님이 쓰신 글 :
: : 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;
: : }
: :
: :
: :
: : 위와 같은 식으로 구현하면 기존의 프로세스는 종료되고, 새로운 프로세스가 생성되게 됩니다.
: : 델파이로 구현하는 코드는 생략 합니다.
오오~ 신기하네여
저는 OutputDebugStringW(L"Application Terminated..."); <==== 이걸 Beep();으로 바꿔 놓고
C++ 빌더로 컴파일해서 탐색기에서 실행해봤는데 빕~~ 소리 나는걸 보면 프로그램이 종료되는게
확실한데~ 신기한건 마치 아무 일도 없었던것 처럼 ~ 그 모양 그위치 그대로 생성되네여~
오~ 신기하다 ㅋㅋ
|