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/)
-   -   Eigene Prozesse herausfinden (https://www.delphipraxis.net/171563-eigene-prozesse-herausfinden.html)

kuba 12. Nov 2012 18:46

Eigene Prozesse herausfinden
 
Hallo,

ich schreibe gerade ein Programm für Terminal Server. Wie finde ich heraus, ob ein Programm bereits gestartet wurde ? Dabei soll die Prozessliste aller anderen angemeldeten Benutzer ausgeblendet werden..

KUBA

Sir Rufo 12. Nov 2012 21:45

AW: Eigene Prozesse herausfinden
 
Wieso brauchst du die Prozesse?

Dafür nimmt man eigentlich einen Mutex ...

p80286 12. Nov 2012 21:58

AW: Eigene Prozesse herausfinden
 
Hier im Forum suchenprocess list

Gruß
K-H

Bummi 12. Nov 2012 22:05

AW: Eigene Prozesse herausfinden
 
per WMI flott mit "Select * from win32_process" und für die interessanten Prozesse per GetProcessOwner (müsste auch hier irgendwo zu finden sein) ergänzen ...

Sir Rufo 12. Nov 2012 22:19

AW: Eigene Prozesse herausfinden
 
Kann es sein, dass du ein Programm schreiben möchtest, das pro Terminal-Session nur einmal gestartet werden soll/darf?

MSDN - Mutex Class

Zitat:

Zitat von MSDN - Mutex Class
On a server that is running Terminal Services, a named system mutex can have two levels of visibility. If its name begins with the prefix "Global\", the mutex is visible in all terminal server sessions. If its name begins with the prefix "Local\", the mutex is visible only in the terminal server session where it was created. In that case, a separate mutex with the same name can exist in each of the other terminal server sessions on the server. If you do not specify a prefix when you create a named mutex, it takes the prefix "Local\". Within a terminal server session, two mutexes whose names differ only by their prefixes are separate mutexes, and both are visible to all processes in the terminal server session. That is, the prefix names "Global\" and "Local\" describe the scope of the mutex name relative to terminal server sessions, not relative to processes.


kuba 12. Nov 2012 22:49

AW: Eigene Prozesse herausfinden
 
Zitat:

Zitat von Sir Rufo (Beitrag 1190918)
Kann es sein, dass du ein Programm schreiben möchtest, das pro Terminal-Session nur einmal gestartet werden soll/darf?

MSDN - Mutex Class

Nicht ganz so. Ich will ein Programm schreiben, das die Ausführung einer Anwendung für jeden Terminal Client nur einmal zulässt. Mit "IsExeRunning" sehe ich leider alle Prozesse von allen Benutzern. Mein Programm wird in jeder Terminalsession gestartet. Da wäre es sehr praktisch, wenn ich immer nur die "Session Eigenen" Prozesse herausfinden könnte. Ich glaube mit "GetProcessOwner" müsste es funktionieren. Mal ausprobieren ...

KUBA

Sir Rufo 12. Nov 2012 22:50

AW: Eigene Prozesse herausfinden
 
TerminalClient = Session ;)

kuba 13. Nov 2012 11:28

AW: Eigene Prozesse herausfinden
 
Hallo,

hab noch eine bessere Idee. Mein Programm wird in jeder RDP-Session automatich gestartet (Shell). Mein Programm startet auch die zu überwachende Anwendung. Das einfachste wäre, die Anwendung zu starten und das Programmende abzuwarten bevor die Anwendung erneut gestartet wird. Da gibt es unzählige Programmbeispiele in Delphi. Die Methode den "ProcessOwner" zu ermitteln wäre zwar etwas eleganter, aber auch komplexer. Außerdem habe ich nur wenig Delphi-Code gefunden um den "ProcessOwner" zu ermitteln.

Danke nochmal für die Anregungen !!

KUBA

PS: habs ausprobiert und funktioniert :thumb:


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