AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi nonVCL Programm nur einmal starten
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL Programm nur einmal starten

Ein Thema von WeTec · begonnen am 28. Jun 2004 · letzter Beitrag vom 1. Jul 2004
Antwort Antwort
Seite 2 von 2     12   
29. Jun 2004, 00:45
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.
Benutzerbild von WeTec
WeTec

Registriert seit: 28. Mai 2004
Ort: Dresden
23 Beiträge
 
#12

Re: nonVCL Programm nur einmal starten

  Alt 29. Jun 2004, 12:37
lange Rede, kurzer Sinn.

ich habs jetzt so gelöst:
Delphi-Quellcode:
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.
trotz dem danke an alle beteiligten!
"Skulpturen, die Freunde der Menschen in der Not."
Sachichimmer, alter Satz von mir.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#13

Re: nonVCL Programm nur einmal starten

  Alt 29. Jun 2004, 16:02
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, , "ReleaseMutex" sorgt dafür, dass man dein Programm nur ein einziges Mal starten kann, auch wenn du ihn vor dem Erzeugen der Dialogbox freigibst.
  Mit Zitat antworten Zitat
Benutzerbild von WeTec
WeTec

Registriert seit: 28. Mai 2004
Ort: Dresden
23 Beiträge
 
#14

Re: nonVCL Programm nur einmal starten

  Alt 30. Jun 2004, 17:03
klar! stimmt ja!
mit
CloseHandle(mHandle); funktioniert es nicht.

so klappt es aber:
Delphi-Quellcode:
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.
danke für den Hinweis
"Skulpturen, die Freunde der Menschen in der Not."
Sachichimmer, alter Satz von mir.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#15

Re: nonVCL Programm nur einmal starten

  Alt 30. Jun 2004, 21:13
http://www.luckie-online.de/Ablage/E...co/oneinst.zip

Das Behandeln der Nachricht in Deiner Nachrichtenschleife bzw. Fensterprozedur darfst/kannst Du selbst schreiben
  Mit Zitat antworten Zitat
Benutzerbild von WeTec
WeTec

Registriert seit: 28. Mai 2004
Ort: Dresden
23 Beiträge
 
#16

Re: nonVCL Programm nur einmal starten

  Alt 1. Jul 2004, 19:57
@NicoDE: super. danke!
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?
"Skulpturen, die Freunde der Menschen in der Not."
Sachichimmer, alter Satz von mir.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#17

Re: nonVCL Programm nur einmal starten

  Alt 1. Jul 2004, 20:08
Da die zweite Instanz mit den Parametern versorgt wird, hindert Dich niemand daran, an der Stelle SetForegroundWindow aufrufen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz