AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?

Offene Frage von "Codehunter"
Ein Thema von CCRDude · begonnen am 5. Mär 2013 · letzter Beitrag vom 5. Mär 2013
Antwort Antwort
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#1

Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?

  Alt 5. Mär 2013, 14:09
Ich habe einen Service, der die Prozess-ID eines Prozesses übermittelt bekommt, und dann dem Benutzer des Prozesses mittels eines weiteren Prozesses etwas anzeigen soll.

Der zweite Teil ist "simpel" - Prozess-Token holen und CreateProcessAsUser verwenden. Wenn es kein UI-Prozess ist, will ich das auf den Hauptdesktop werfen; per WTSGetActiveConsoleSessionId, WTSQueryUserToken und DuplicateTokenEx komme ich so auch an die Stelle, wo ich CreateprocessAsUser verwenden kann.

Ich hänge jetzt leider etwas daran zu erkennen, ob die Umgebung des aufrufenden Prozesses nun Userinteraktionen (hier in der Form einer VCL-Anwendung) zulässt. Wäre es ein Systemdienst, wäre dies ja sicher nicht der Fall.

Mein aktueller Ansatz war, per Toolhelp32 eine Liste aller Threads durchzugehen, wenn der Thread zum Prozess gehört, auf die Thread-ID ein GetThreadDesktop auszuführen, und wenn dies erfolgreich ist, glaubte ich zu wissen eine Desktop-Anwendung zu haben.

Klappte wunderbar auf meinem Win7-64 mit einem Haufen Prozessen, aber nicht unter WinXP... daher meine Frage: wie kann ich dies besser feststellen?
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?

  Alt 5. Mär 2013, 14:47
Kleine Zwischenfrage am Rande: Windows XP ist in 12 Monaten Geschichte. Willst du da wirklich noch Hirnschmalz reinstecken?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?

  Alt 5. Mär 2013, 15:39
Ja, will ich... aus zwei Gründen:
  • 40% unserer Kunden verwenden noch XP.
  • Es ist mir unter XP aufgefallen, aber meine Methode war geraten, daher könnte das Problem auch unter neueren Windows-Versionen auftreten.
Daneben einfach mein Interesse, wie man es besser machen könnte
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Ausgehend von der ProcessID erkennen, ob User GUI-Fenster öffnen kann?

  Alt 5. Mär 2013, 16:25
Vielleicht hilft das hier weiter. In der Annahme, wenn ein aufrufender Prozess eine Desktop-Anwendung ist, dann hat er ein MainWindow und das hat ein Handle. Wenn der Prozess z.B. ein Systemdienst ist, dann dürfte er auch kein MainWindow haben.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 5. Mär 2013 um 16:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:43 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