AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FindWindow in einem Service unter Vista
Thema durchsuchen
Ansicht
Themen-Optionen

FindWindow in einem Service unter Vista

Ein Thema von Shark99 · begonnen am 4. Mai 2009 · letzter Beitrag vom 5. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23      
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 06:37
Hi.

Hier ist mein Code:

Delphi-Quellcode:
procedure SendMessageToWindow(msg: LongWord;value:longword=0);
var Wnd: THandle;
begin
  Wnd := FindWindow('myClass', NIL);
  if Wnd > 0 then
  begin
       if IsWindowResponding(Wnd,100) then
          SendMessage( HWND_BROADCAST,
               RegisterWindowMessage('myAppMessage'),
               msg,
               value )
       else
           Error('hung!!');
  end;
end;
Es funktioniert in einer normalen Application (sowohl vista als auch xp).
Es funktioniert in einem Service unter XP.
Es funktioniert NICHT in einem Service unter Vista. Wnd ist da immer 0.

Anscheinend funktioniert FindWindow in einem Service unter Vista nicht mehr.

Gibt es eine andere Möglichkeit Nachchrichten an ein Fenster zu schicken? (damit es z.B. in den Vordergrund kommt).

Danke im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 06:39
Interaktive Dienste gibt es unter Vista aus Sicherheitsgründen nicht mehr, und auch bei XP musste man das ggf. erlauben.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 07:53
Der Dienst ist nicht als Interaktiv gekennzeichnet! (funktioniert also unter XP mit ausgeschalteter Interaktivität).
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 08:31
Hallo,

Ursache und mögliche Lösungen hier.

FindWindow Service Vista


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 09:21
Zitat von Shark99:
Der Dienst ist nicht als Interaktiv gekennzeichnet!
Und genau da sist das Problem. Ein Service läuft in einer anderen WindowsStation als der Desktop des angemeldeten Benutzers und hat somit keinen Zugriff auf den Desktop des angemeldeten Benutzers. Überlicherweise löst man das so, dass man eine normale Anwendung hat, die mit dem Dienst über IPC kommuniziert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#6

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 09:30
Luckie, wieso funktioniert es dann unter XP? Ist es nur Zufall dass es dort in der gleichen WS ist?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 09:44
Das kann unter XP nur mit einem interaktiven Service funktionieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 09:50
Hallo,

unter welchem Account läuft denn der Dienst unter XP ?
Vielleicht ist bei dem benutzten Account interaktiv automatisch "freigeschaltet".


Heiko
Heiko
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#9

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 09:58
Gibt es keinen Workaround um eine Nachricht aus dem Service zu der App zu schicken? In die andere Richtung geht es ja, über den ServiceManager.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#10

Re: FindWindow in einem Service unter Vista

  Alt 4. Mai 2009, 10:07
Ich habe das über ein MemoryMapped-File und ein Event/Mutex/whatever gebaut. Ist relativ einfach und funktioniert gut, Source kann ich leider keinen posten, da nicht zuhause

HTH
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:48 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