` Check for multiple instances of a program (Jeff Berlinghoff ) - Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Icetips Article

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

Par2: Check for multiple instances of a program
1998-04-22 -- Jeff Berlinghoff
 
After Global INCLUDEs: ERROR_ALREADY_EXISTS EQUATE(183) SECURITY_ATTRIBUTES GROUP,TYPE nLength ULONG lpSecurityDescriptor ULONG bInheritHandle BOOL END Inside the Global Map: MODULE('Kernal32') CreateSemaphore(<*SECURITY_ATTRIBUTES lpSemaphoreAttributes>, LONG lInitialCount, LONG lMaximumCount, *CSTRING lpName),LONG,RAW,PASCAL,NAME('CreateSemaphoreA') CloseHandle(LONG hObject),BOOL,PASCAL GetLastError(),ULONG,PASCAL FindWindow(<*CSTRING lpClassName>, *CSTRING lpWindowName),UNSIGNED,PASCAL,RAW,NAME('FindWindowA') SetWindowText(UNSIGNED,*CSTRING),PASCAL,RAW,NAME('SetWindowTextA') IsIconic(UNSIGNED),BOOL,PASCAL ShowWindow(UNSIGNED, SIGNED nCmdShow),BOOL,PASCAL SetForegroundWindow(UNSIGNED),BOOL,PASCAL END On your FRAME, After Opening the Window: IF ~StartNewAppInstance(0{prop:text}) THEN RETURN. Create New Procedure named StartNewAppInstance Prototype: (STRING),SHORT Parameters: (WndTitle) Data Section: RetVal SHORT(True) cTitle CSTRING(255) cTemp CSTRING(255) SemName CSTRING(255) hSem LONG hMe LONG Processed Code: SemName = 'Semaphore Name' cTitle = WndTitle hSem = CreateSemaphore(, 0, 1, SemName) IF hSem AND (GetLastError() = ERROR_ALREADY_EXISTS) n#=CloseHandle(hSem) hMe = FindWindow(, cTitle) !rename new instance so we can find another cTemp='Terminating Duplicate Instance'; SetWindowText(hMe, cTemp) hMe = FindWindow(, cTitle) IF hMe IF IsIconic(hMe) THEN n#=ShowWindow(hMe, 1) ELSE n#=SetForegroundWindow(hMe). RetVal=False !Cannot start a new instance, use already running instance END END


Today is November 21, 2024, 3:45 am
This article has been viewed 35184 times.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: