Entwickler-Ecke
Windows API - FindWindow unter einem Dienst geht nicht
holgerbremen - Fr 26.11.10 14:48
Titel: FindWindow unter einem Dienst geht nicht
Ich brauche aus einem Dienst heraus ein Fensterhandle. Das mache ich mit FindWindow.
Quelltext
1: 2: 3: 4:
| hWatchDog : THandle;
hWatchDog := FindWindow(PChar('TFormWatchDog'),nil); |
Aus einer normalen Anwendung heraus bekomme ich ein gültiges Handle. Führe ich den gleichen Code in einem Dienst aus, ist das Handle 0.
Gibts dafür eine Erklärung und wie kann unter einem Dienst eine FensterHandle bekommmen?
Gruß
Holger
jaenicke - Fr 26.11.10 15:02
Der Dienst läuft in einem anderen Desktop als der, den der Benutzer sieht und in dem die Anwendungen laufen.
Deshalb ist das relativ kompliziert, von dem Handling ganz abgesehen auch logisch. Denn du musst eben erst einmal herausfinden welcher Desktop denn nun der ist, den der Benutzer sieht. Und ob das der ist, in dem das Programm läuft, weißt du damit immer noch nicht unbedingt (multi-user...).
Delete - Fr 26.11.10 15:03
Dein Systemdienst läuft in einer anderen WindowsStation und hat einen eigen Desktop. Dein Dienst sieht also den Desktop des angemeldeten Benutzers gar nicht.
Und wenn es dir um Interprocess Communication geht, solltest du dir andere Möglichkeiten mal ansehen. Als da wären Pipes, Mailslots, ...
Eignet man sich nicht eigentlich wenigsten etwas Grundwissen an, über die Technologien mit denen man umgehen will bevor man anfängt zu programmieren oder ist es allgemein üblich einfach so aufs gerate Wohl los zu programmieren?
holgerbremen - So 28.11.10 22:37
Danke für die Anworten. Meine Recherchen haben inzwischen das gleiche ergeben. Klingt im Nachhinein aus logisch.
Da ich zwischen zwei Prozessen einfach nur Daten austauschen will, muss es nicht unbedingt über Messages laufen. Mit MemoryMappedFiles werde ich es wohl lösen.
jaenicke - So 28.11.10 22:42
Da fehlt dann noch die Möglichkeit von Benachrichtigungen. Da gibt es noch Pipes, Semaphore, ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!