Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi aus Dienst herraus Anwendung starten (https://www.delphipraxis.net/104015-aus-dienst-herraus-anwendung-starten.html)

Phoenix 26. Nov 2007 12:16

Re: aus Dienst herraus Anwendung starten
 
Im anderen Forum regst Du Dich darüber auf, dass andere Entwickler ihre Anwendungen nicht Vista-Kompatibel machen.
Zitat:

Wir haben zahlreiche Programme auf den Laptops laufen, welche unter Vista nicht gehen.
Genau aus diesem Grund sollten wir alle darauf achten, dass unsere Programme unter allen Systemen laufen.

Sonst schimpft nämlich auch in Zukunft jeder über das Betriebssystem. Und das, obwohl gerade solche Ignoranten alá "unter XP läuft das doch" oder auch alá "Warum glauben alle nur, dass Vista ein Thema ist." ausschliesslich alleine daran schuld sind, dass die Anwendungen da nicht drauf laufen - und eben nicht das Betriebssystem oder dessen Hersteller die Schuld trägt. :wall:

Luckie 26. Nov 2007 12:25

Re: aus Dienst herraus Anwendung starten
 
Genau das ist das Problem: Hätten sich die Entwickler an die Richtlinien gehalten, die es übrigens schon seit NT gibt, dann gäbe e so gut wie keine Probleme mit Vista. Da aber genau aus diesem Grund die meisten unter XP als Administrator arbeiten, merken sie nicht, wie schelocht die Software programmiert ist, mit der sie arbeiten.

Relicted 26. Nov 2007 12:38

Re: aus Dienst herraus Anwendung starten
 
*zustimm*

daher: mut zu vista!
ich selber nutze sogar das ganz ganz böse vista... Vista 64 Business..
also falls jemand seine programme unter [ironie] nieeeeeeeemals sich etablierenden/benutztbaren [/ironie] systemen testen mag: immer her mit der exe :-)

ich erinnere mich noch dunkel... es ist nicht so lange her aber man verdrängt es gerne... ich erinnere mich an aussagen *inversiv glaskugel hervorhol* "boah scheisse was soll das für ein OS sein?! XP?? pah! ich bleib auf 98.. da läuft wenigstens alles und super stabil!!" oder wie wärs mit dem hier: "für das neue xp entwickeln? quatsch.. zu viel aufwand für ein OS was nieeeee!! nieeee! produktiv in firmen zum einsatz kommen wird!!"


gruß
reli

Dezipaitor 26. Nov 2007 12:53

Re: aus Dienst herraus Anwendung starten
 
Delphi-Quellcode:
if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
Das Problem mit dieser Zeile ist, dass immer die physikalische Konsole verwendet wird. D.h. wenn kein Benutzer lokal eingeloggt ist, dann schlägt die Funktion fehl. Dies kann z.b. passieren wenn jemand über RemoteDesktop eingeloggt ist (ohne den Desktop als ConsoleSession zu starten).
Auf jeden Fall kann die gestartete Anwendung auf dem falschen Desktop gestartet werden.

Am einfachsten kann man dieses Problem lösen, wenn der Benutzer eine Aktion auslöst, die diese Anwendung startet. D.h. eine Anwendung kommuniziert mit dem Service, der dann einen neuen Prozess startet. Durch die Kommunikation kann der Service erfahren, in welche Session und Desktop die Anwendung steht und dort den neuen Prozess starten.

madas 26. Nov 2007 13:18

Re: aus Dienst herraus Anwendung starten
 
Zitat:

Zitat von Dezipaitor
Delphi-Quellcode:
if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
Das Problem mit dieser Zeile ist, dass immer die physikalische Konsole verwendet wird. D.h. wenn kein Benutzer lokal eingeloggt ist, dann schlägt die Funktion fehl. Dies kann z.b. passieren wenn jemand über RemoteDesktop eingeloggt ist (ohne den Desktop als ConsoleSession zu starten).
Auf jeden Fall kann die gestartete Anwendung auf dem falschen Desktop gestartet werden.

Am einfachsten kann man dieses Problem lösen, wenn der Benutzer eine Aktion auslöst, die diese Anwendung startet. D.h. eine Anwendung kommuniziert mit dem Service, der dann einen neuen Prozess startet. Durch die Kommunikation kann der Service erfahren, in welche Session und Desktop die Anwendung steht und dort den neuen Prozess starten.

Also ich verwende das für einen Update Service. Die Anwendung fragt dann den Service, ob ob ein Update machbar ist oder nicht. Um dem User Infos zum Updatevorgang zu zeigen, gibt es einen Update Monitor. Falls er nicht läuft wird er vom Service im Userkontext gestartet.

Klingt doch eigentlich nach deiner "Problemlösung", oder?

Ich frage deshalb nochmal, weil auf gleiche Weise dann auch wieder die Anwendung selber nach einen Update gestartet wird. Sie muss ja auch wieder im User Kontext laufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Seite 2 von 2     12   

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