![]() |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Object-Pascal / Delphi-Language" nach "Windows API" verschoben.
Wie der Titel schon vermuten lässt gehört das besser nach Windows API. |
Re: nonVCL Programm nur einmal starten
lange Rede, kurzer Sinn.
ich habs jetzt so gelöst:
Delphi-Quellcode:
trotz dem danke an alle beteiligten!
var
mHandle: THandle; // Mutexhandle function dlgfunc(hwnd... begin ... end; begin mHandle := CreateMutex(nil, True, 'XYZ'); if GetLastError = ERROR_ALREADY_EXISTS then halt; if mHandle <> 0 then ReleaseMutex(mHandle); ... end. :wink: |
Re: nonVCL Programm nur einmal starten
Also, ich hoffe mal, du hast einfach nur vergessen, hier im Forum zu sagen, dass deine Dialogbox zwischen dem Erzeugen und Freigeben des Mutex aufgerufen wird. Die 3 Punkte am Ende lassen mich aber was anderes vermuten, also wundere dich nicht, wenn du dein Programm trotz Mutex mehrfach starten kannst. ;)
Edit: Du hast Glück, :mrgreen:, "ReleaseMutex" sorgt dafür, dass man dein Programm nur ein einziges Mal starten kann, auch wenn du ihn vor dem Erzeugen der Dialogbox freigibst. |
Re: nonVCL Programm nur einmal starten
klar! stimmt ja!
mit
Delphi-Quellcode:
funktioniert es nicht.
CloseHandle(mHandle);
so klappt es aber:
Delphi-Quellcode:
danke für den Hinweis :thuimb:
begin
mHandle := CreateMutex(nil, True, 'XYZ'); if GetLastError = ERROR_ALREADY_EXISTS then halt else begin // Fenster erzeugen ... end; if mHandle <> 0 then CloseHandle(mHandle); end. |
Re: nonVCL Programm nur einmal starten
![]() Das Behandeln der Nachricht in Deiner Nachrichtenschleife bzw. Fensterprozedur darfst/kannst Du selbst schreiben ;) |
Re: nonVCL Programm nur einmal starten
@NicoDE: super. danke! :thuimb:
jetzt fehlt nur noch das das Fenster in den vordergrund geholt wird. werd ich wohl mal mit FindWindow herum experimentieren. oder hat hier dafür jemand was one VCL da? |
Re: nonVCL Programm nur einmal starten
Da die zweite Instanz mit den Parametern versorgt wird, hindert Dich niemand daran, an der Stelle SetForegroundWindow aufrufen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz