Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie oft ist meine Anwendung geöffnet? (https://www.delphipraxis.net/47049-wie-oft-ist-meine-anwendung-geoeffnet.html)

witch 5. Jun 2005 20:16


Wie oft ist meine Anwendung geöffnet?
 
hallo alle miteinander

Ich habe ein Programm geschrieben, das mehrmals geöffnet werden soll/muss. Nun möchte ich wissen, wie ich auslesen kann, wie oft die Anwendung geöffnet ist. Die Anzahl kann sich auch zwischen zeitlich ändern, ich dachte da an einen Timer. Ich habs schon irgendwie mit FindWindow versucht, nur irgendwie krieg ich das nicht hin.

Danke im voraus für eure antworten
MFG
witch

Beckman 5. Jun 2005 20:19

Re: Wie oft ist meine Anwendung geöffnet?
 
Find/Clear/RegisterGlobalAtom('am besten ne GUID')

das zaehlt jedes mal um 1 hoch, wenn mans erneut registriert und zaehlt nur 1 runter, wenn mans loescht.


am ende zb sowas:

GlobalDeleteAtom(GlobalFindAtom(GUID));

am anfang: GlobalAddAtom(GUID);

GUID ist bei mir ne const/string.

mirage228 6. Jun 2005 13:28

Re: Wie oft ist meine Anwendung geöffnet?
 
Hi,

vielleicht hilft Dir das:
http://www.delphipraxis.net/internal...ct.php?t=35391

mfG
mirage228

Beckman 6. Jun 2005 21:54

Re: Wie oft ist meine Anwendung geöffnet?
 
hey, willst du behaupten, dass meine methode uncool ist? :P

PierreB 6. Jun 2005 22:23

Re: Wie oft ist meine Anwendung geöffnet?
 
Noch ne Methode:
Einfach alle laufenden Prozesse in ne Listbox laden:
Delphi-Quellcode:
uses
 tlhelp32;

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetProcessList(listbox1.Items);
end;
Und dann einfach in der Listbox suchen wie oft deine Anwendung da drinne steht. ;)
Zawr nicht grad elegant, aber eine Alternative. ;)


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