Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster aus Systemdienst heraus verstecken (https://www.delphipraxis.net/117413-fenster-aus-systemdienst-heraus-verstecken.html)

kuba 17. Jul 2008 18:13


Fenster aus Systemdienst heraus verstecken
 
Hallo,

ich möchte ein Fenster verstecken, dazu habe ich bisher folgenden Code verwendet:

Delphi-Quellcode:
procedure MinimizeWindowName;
var
   value    :string;
   h        :hwnd;
begin
    Value := 'Unbenannt';    //z.B. notepad.exe
    h := SucheFensterUeberTitel(Value);
    if h <> 0 then ShowWindow(h, SW_HIDE);
   end;
end;
Dieser Code versteckt das Fenster jedoch nur wenn der Benutzer Administratorrechte hat. Mein Benutzer hat jedoch keine Administratorrechte, daher wollte ich diese Prozedur in einem Systemdienst unterbringen. Das funktioniert jedoch leider auch nicht, hat jemand eine Idee wie es laufen könnte ?

KUBA

SirThornberry 17. Jul 2008 19:01

Re: Fenster aus Systemdienst heraus verstecken
 
hast du mal geschaut warum es nicht funktioniert? Wird das Handle nicht gefunden wenn du es als normaler Nutzer ausführst oder geht ShowWindow schief? Und wenn es schief geht - wie lautet der Fehler?

Als dienst kann es nicht weil diese in einer anderen WindowStation ausgeführt werden zumindest in einem anderen Desktop.

kuba 17. Jul 2008 19:20

Re: Fenster aus Systemdienst heraus verstecken
 
Hm, woran sehe ich das ?
Der NT-Service läuft auf einem anderen PC (einem Test PC).

Habe gerade weitergesucht und festgestellt, dass ich Funktionen verwende um die Taskleiste zu verstecken. Das funktioniert in meinem NT-Service, dort wird FindWindow verwendet:

Delphi-Quellcode:
h := FindWindow(PChar(Value),nil);
Damit funktioniert´s:

Delphi-Quellcode:
procedure MinimizeWindowName;
var
   value    :string;
   h        :hwnd;
begin
    Value := 'notepad';    //z.B. notepad.exe
    h := FindWindow(Value);
    if h <> 0 then ShowWindow(h, SW_HIDE);
   end;
end;
Es hat vermutlich etwas mit den Benutzerrechten und dem Desktop zu tun. SucheFensterueberTitel sucht ein Fenster auf dem Desktop, der NT-Service hat aber kein Desktop. FindWindow sucht vermutlich das Fenster in der Prozessliste.

KUBA

kuba 17. Jul 2008 19:25

Re: Fenster aus Systemdienst heraus verstecken
 
Zitat:

Zitat von SirThornberry
hast du mal geschaut warum es nicht funktioniert? Wird das Handle nicht gefunden wenn du es als normaler Nutzer ausführst oder geht ShowWindow schief? Und wenn es schief geht - wie lautet der Fehler?

Als dienst kann es nicht weil diese in einer anderen WindowStation ausgeführt werden zumindest in einem anderen Desktop.

übrigens genau das habe ich festgestellt :drunken:

Ich verwende bzw. teste die Software nicht auf dem PC auf dem ich sie programmiere, das wäre bei der Software die ich gerade entwickle zu riskant. Da ich weiss dass die Funktionen in Ordnung sind denke ich lieber darüber nach welche Umstände für das Verhalten der Software in Frage kommen könnten. Das geht momentan schneller als debuggen und meine Systemkonfiguration zerschiessen. :roll:

kuba

PS: für mich ist es wichtig dass ich überhaupt Programme mit meiner Software verstecken kann, der Fenstername spielt keine Rolle.


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