Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prüfen ob Delphi läuft (https://www.delphipraxis.net/55034-pruefen-ob-delphi-laeuft.html)

Pseudemys Nelsoni 15. Okt 2005 15:27


Prüfen ob Delphi läuft
 
Moin,

wie würdet ihr prüfen ob Delphi läuft? Ich hatte da an FindWindow gedacht und zwar das ich da auf die klasse "TAppBuilder" prüfe.... ist das für alle Delphiversionen korrekt?

Bernhard Geyer 15. Okt 2005 15:41

Re: Prüfen ob Delphi läuft
 
Willst Du prüfen ob Delphi allgemein läuft oder ob deine Anwendung unter Delphi oder einem Debugger läuft?

Pseudemys Nelsoni 15. Okt 2005 16:10

Re: Prüfen ob Delphi läuft
 
ich möchte prüfen, ob delphi allgmein laeuft

A-M-X 15. Okt 2005 16:45

Re: Prüfen ob Delphi läuft
 
Erstmal folgendes in die Uses Liste einbinden:

Delphi-Quellcode:
uses TlHelp32;

Das die Funktion wo überprüft , ob eine EXE datei läuft:

Delphi-Quellcode:
function IsExeRunning(const AExeName: string): boolean;
var
  h: THandle;
  p: TProcessEntry32;
begin
  Result := False;

  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    Process32First(h, p);
    repeat
      Result := AnsiUpperCase(AExeName) = AnsiUpperCase(p.szExeFile);
    until Result or (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;
Zu guter Letzt der Beispielaufruf:

Delphi-Quellcode:
 if IsExeRunning('Notepad.exe') then
   ShowMessage('Notepad läuft')
 else
   ShowMessage('Notepad läuft nicht');



_____________________

DANN kannst du noch Prüfen , ob ein Window "läuft":

Delphi-Quellcode:
var
  Handle: THandle;
begin
  Handle := FindWindow(PChar('Unbekannt - Editor'),nil);
  if Handle<>0 then
    Showmessage('Editor ist schon gestartet')
  else
    Showmessage('Editor wurde noch nicht gestartet');

_____________________

1. Moeglichkeit
Läuft Delphi IDE?

Delphi-Quellcode:
  If FindWindow('TAppBuilder',nil) <= 0 then
    ShowMessage('Delphi läuft nicht')
  else
    ShowMessage('Delphi läuft');
2. Moeglichkeit

Delphi-Quellcode:
  if DebugHook <> 0 then
    ShowMessage('Inside IDE')
  else
    ShowMessage('StandAlone');
___________________


Du kannst natürlich auch die laufendne Prozesse ermitteln und Delphi rauspicken:

Uses Liste einbinden:
Delphi-Quellcode:
uses
 tlhelp32;
Die Funktion:
Delphi-Quellcode:
procedure GetProcessList(const aProcessList: TStrings);
var
  Snap: THandle;
  ProcessE: TProcessEntry32;
begin
  aProcessList.Clear;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
    ProcessE.dwSize := SizeOf(ProcessE);
    if Process32First(Snap, ProcessE) then
      Repeat
        aProcessList.Add(ProcessE.szExeFile);
      Until not Process32Next(Snap, ProcessE)
    else
      RaiseLastOSError;
  finally
    CloseHandle(Snap);
  end;
end;
Beispielaufruf:

Delphi-Quellcode:
 GetProcessList(listbox1.Items);

Matze 15. Okt 2005 16:53

Re: Prüfen ob Delphi läuft
 
@A-M-X: Das zeigt dir aber allg. an, ob eine Anwendung läuft, wenn du den Dateinamen hast. Und so genau sind die Möglichkeiten dann auch nicht. ;)

@Mario: Im SDC steht dazu folgendes.


Nachtrag: Achtung, Kommentare dazu lesen:

Zitat:

Was noch viel wichtiger ist!

Hier die Deklaration von FindWindow:

HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);

Wie man sehen kann, ist der erste Parameter der Klassen-Name!!

Und nicht wie im Tipp beschrieben der zweite Parameter!

A-M-X 15. Okt 2005 16:54

Re: Prüfen ob Delphi läuft
 
Ich hab es überarbeitet!

Pseudemys Nelsoni 15. Okt 2005 16:58

Re: Prüfen ob Delphi läuft
 
Moin,

besten Dank an euch zwei, habt euch ja richtig Mühe gegeben :)

Noch ne Frage zu FindWIndow..... Ist TAppBuilder denn von Delphi 2-7 der Klassenname?

MfG :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 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