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

C++빌더 Q&A
C++Builder Programming Q&A
[50052] Re:Re:Re:[질문] 프로그램 한번만 실행시키기
김명섭 [myongsubi] 1831 읽음    2007-07-24 10:15
View->Project Manager->Project1.exe밑에 Project1.cpp 파일을 열면 됩니다.
그리고 코드를 입력하면 됩니다.

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        HANDLE Mutex;

        try
        {
        const char ProgMutex[] = "MyProgram"; // 여기서 자기
                         // 프로그램 고유의 이름으로 설정합니다.
                         // 아무 이름이나 상관없습니다.
        if((Mutex=OpenMutex(MUTEX_ALL_ACCESS, false, ProgMutex))==NULL)
            Mutex = CreateMutex(NULL, true, ProgMutex);
        else
            return 0;

                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        ReleaseMutex(Mutex);
        return 0;
}
김명섭 님이 쓰신 글 :
: 아래와 같이 FormCreate할때 실행되도록 코드를 입력했는데요.
: 프로그램이 하나 실행중인데 exe파일을 클릭하면 또 실행됩니다.
:
:
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
:
:   HANDLE mutex;
:   try
:   {
:     const char ProgMutex[] = "Project1";
: //    mutex = OpenMutex(0, false, mutexname);
:         //mutex = OpenMutex(MUTEX_ALL_ACCESS,false,mutexname);
:         if((mutex=OpenMutex(MUTEX_ALL_ACCESS, false, ProgMutex))==NULL)
:             mutex = CreateMutex(NULL, true, ProgMutex);
:         else
:             return;
:
:     //밑부분은 현재 있는 상태
:     Application->Initialize();
:     Application->CreateForm(__classid(TForm1),&Form1);
:     Application->Run();
:   }
:   catch (Exception &exception)
:     {
:         Application->ShowException(&exception);
:     }
:     // 프로그램에 사용된 뮤텍스 해제
:     ReleaseMutex(mutex);
:     return;
: }
:
: 장성호 님이 쓰신 글 :
: : mutex = OpenMutex(MUTEX_ALL_ACCESS, false, mutexname);
: :
: : 이렇게 해보세요
: :
: : 그럼...
: :
: : 김명섭 님이 쓰신 글 :
: : : 아래와 같은 코드를 이용하여 프로그램을 한번만 실행시킬 수 있다고 하는데요~~
: : : 입력해서 exe파일을 만들어서 실행했지만 프로그램이 여러개 실행됩니다..
: : : (ShowMessage는 실행되지 않았습니다..)
: : : 혹시 아시는분 계시면 알려주시면 고맙겠습니다.
: : :
: : : WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
: : : {
: : :   HANDLE mutex;
: : :   try
: : :   {
: : :     const char mutexname[] = "MyProgram";
: : :     mutex = OpenMutex(0, false, mutexname);
: : :     if(mutex == NULL)
: : :     {
: : :         mutex = CreateMutex(NULL,true,mutexname);
: : :     }
: : :     else
: : :     {
: : :         ShowMessage("현재 프로그램이 가동중입니다...");
: : :         return 0;
: : :     }
: : :     //밑부분은 현재 있는 상태
: : :     Application->Initialize();
: : :     Application->CreateForm(__classid(TForm1),&Form1);
: : :     Application->Run();
: : :   }
: : :   catch (Exception &exception)
: : :     {
: : :         Application->ShowException(&exception);
: : :     }
: : :     // 프로그램에 사용된 뮤텍스 해제
: : :     ReleaseMutex(mutex);
: : :     return 0;
: : :
: : :
: : : }

+ -

관련 글 리스트
50002 [질문] 프로그램 한번만 실행시키기 김명섭 1194 2007/07/20
50004     Re:[질문] 프로그램 한번만 실행시키기 장성호 1288 2007/07/20
50027         Re:Re:[질문] 프로그램 한번만 실행시키기 김명섭 1466 2007/07/23
50052             Re:Re:Re:[질문] 프로그램 한번만 실행시키기 김명섭 1831 2007/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.