Q&A

  • 프로그램이 1번만 실행되도록...
제가 프로그램(land.exe)을 만들었는데 리소스를 많이 차지하는 프로그램입니다.

윈도우에서 land.exe 라는 프로그램이 2개 이상은 못 올라오게 하는 방법이 있느지요?

(land.exe 라는 프로그램이 실행중일 때에는 또다시 land.exe가 올라 오지 못하도록)



1. 이런 방법이 있는지요?

2. 있다면 구현 방법을 알고 싶습니다.



즐거운 추석 이 되기를 바랍니다.

99.9.22

박면구

1  COMMENTS
  • Profile
    신인재 1999.09.22 18:26
    한번만 실행시키기 기법은 ATom을 이용하는 방법이



    대중적입니다....(이것은 여러 델파이 사이트를 돌아 다니면서



    '한번'이란 키워드를 이용하면 많이 소개 되어 있습니다.)



    여기서는 Mutex를 이용하는 방법을 소개 해 드리죵..





    if not AppIsAlreadyRunning('MyAppName') then

    begin

    Application.Initialize;

    { ... }

    Application.Run;

    end; { if }

    (*

    Module Name : Just1Fix.pas

    Description : Module to insure that just one copy of an application

    is running at any given time.

    Call AppIsAlreadyRunning in Project file, and

    bypass everything if the function returns True.

    Note that AppIsAlreadyRunning should only be called once.

    Designed for Delphi 3 or higher, with long strings

    enabled as default in compiler options.



    Copyright (c) 1999 ASI/EDI, Inc. All rights reserved.

    Written by Bill Sorensen ( tzimisce@mwaccess.net, www.Will.brinet.net).

    Source code published by permission of ASI/EDI, Inc. (www.asiedi.com).



    ASI/EDI Inc. and the author expressly disclaim any warranty,

    express or implied, for this code and documentation.

    Use it at your own risk.

    *)



    unit Just1Fix;



    interface



    function AppIsAlreadyRunning(const sUniqueText: String): Boolean;



    implementation



    uses

    Windows;



    function AppIsAlreadyRunning(const sUniqueText: String): Boolean;

    begin

    // If the named Mutex already exists, there's another copy running.



    if OpenMutex(MUTEX_ALL_ACCESS,False,PChar(sUniqueText)) <> 0 then

    Result := True

    else

    Result := (CreateMutex(nil,False,PChar(sUniqueText)) = 0);

    // Otherwise, create a Mutex with a unique name.

    // This should succeed, unless we're out of resources.



    // Mutex handle is closed automatically when the process terminates.

    // Mutex is destroyed when the last handle to it is closed.

    end;



    end.





    박면구 wrote:

    > 제가 프로그램(land.exe)을 만들었는데 리소스를 많이 차지하는 프로그램입니다.

    > 윈도우에서 land.exe 라는 프로그램이 2개 이상은 못 올라오게 하는 방법이 있느지요?

    > (land.exe 라는 프로그램이 실행중일 때에는 또다시 land.exe가 올라 오지 못하도록)

    >

    > 1. 이런 방법이 있는지요?

    > 2. 있다면 구현 방법을 알고 싶습니다.

    >

    > 즐거운 추석 이 되기를 바랍니다.

    > 99.9.22

    > 박면구