Delphi Thread CreateMutex: 여러 프로그램의 인 스 턴 스 가 동시에 나타 나 지 않도록 합 니 다 (서버)
그럼 어떻게 해 야 되 지?본 고 는 사용자 가 여러 프로그램 을 동시에 실행 하지 않도록 하 는 예 를 소개 할 것 이다.
필요 한 함수 CreateMutex, CreateMutex 함 수 는 windows 에서 자주 사용 되 지 않 는 함수 입 니 다.
이 함수 대상 은 시스템 에 하나의 인 스 턴 스 만 존재 하고 상호 배척 체 만 존재 합 니 다.
그래서 이런 특성 을 이용 하여 우리 의 요 구 를 간단하게 실현 했다.
[함수 원래 성명]:
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle;
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle;
【 매개 변수 설명 】:
lpMutex Attributes 는 SECURITYATTRIBUTES 구조 형식의 지침 은 NULL 로 설정 할 수 있 습 니 다.
bInitialOwner 가 상호 배척 체 를 초기 화 할 지 여부 입 니 다.
lpName 상호 배척 체 대상 의 이름 입 니 다.
함수 가 상호 배척 체 핸들 을 되 돌려 줍 니 다.
프로그램 이 실 행 될 때 대상 을 만 듭 니 다. 대상 이 이미 존재 한다 면 프로그램 이 실행 되 었 음 을 나타 냅 니 다.
[실현 과정 은 다음 과 같다]:
새 프로젝트 를 만 듭 니 다. 창 은 분명히 Form 1 입 니 다.
Button 단추 이름 을 Button 1 로 추가 합 니 다.
더 블 버튼 추가 코드
procedure TForm1.Button1Click(Sender: TObject);
var
hw : HWND;
gt : Integer;
begin
Application.Initialize;
Application.Title := 'runmyfile';
hw := CreateMutex(nil,False,'runmyfile'); { }
gt := GetLastError;
if gt <> Error_ALREADY_EXISTS then { }
begin
Application.CreateForm(TForm1,Form1); { }
Application.Run;
end
else
begin
Application.MessageBox(' ',' ',MB_OK);
Application.Terminate;
ReleaseMutex(hw);{ }
end;
end;
ReleaseMutex 함수 의 기능 은 상호 배척 대상 을 방출 하 는 것 입 니 다.
BOOL WIANPI ReleaseMutex(
HANDLE hMutex
);
BOOL, TRUE 는 성공 을, FALSE 는 실 패 를 각각 나 타 냈 다.
GetLastError; 그것 은 운영 체제 가 준 힌트 를 되 돌려 줄 수 있 습 니 다. - ErrorAlready_Exists:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 메커니즘 의 스 레 드 생 성target 을 실행 대상 으로 지정 한 name 을 이름 으로 하고 group 에서 참조 하 는 스 레 드 그룹의 일원 으로 새 Thread 대상 을 할당 합 니 다. 이 스 레 드 가 독립 된 Runnable 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.