Windows Message i usługa

0

Witam,

Chcę przesłać message systemowy pomiędzy usługą a aplikacją okienkową. A konkretnie z usługi do aplikacji okienkowej.

Robię FindWindow aplikacji okienkowej w usłudze i dostaję 0 :(

czy ktoś z was wysyła takie message pomiędzy usługą a okienkiem ??

0

Nie da się.
Od Visty wzwyż usługi są odizolowane od interfejsu użytkownika. Oznacza to że w usłudze nie otworzysz okna, nic nie wyświetlisz, ani nie znajdziesz okna innej aplikacji.
Nawet jakbyś zdobył uchwyt okna, komunikat nie dojdzie (a przynajmniej nie powinien – byłaby to poważna luka).

0

Nie jestem pewien ale moze cos sie da ustawic poprzez UIPI ... nie probowalem ale gdziesz czytalem o tym, ze jakos mozna (naturalnie usluga ma przywileje)

0
Azarien napisał(a)

Od Visty wzwyż usługi są odizolowane od interfejsu użytkownika.

Zacznijmy od tego, że usługi nigdy nie pracowały na pulpicie użytkownika, co najwyżej można je było podpiąć integracją.

Azarien napisał(a)

Oznacza to że w usłudze nie otworzysz okna, nic nie wyświetlisz, ani nie znajdziesz okna innej aplikacji.

Nawet w Windows 7 się da, wywali wtedy komunikat, że usługa próbuje wyświetlić okno i zaproponuje tymczasowe przełączenie się na tamten pulpit. Wyszukiwać okna można tylko z własnego pulpitu.

Azarien napisał(a)

Nawet jakbyś zdobył uchwyt okna, komunikat nie dojdzie (a przynajmniej nie powinien – byłaby to poważna luka).

Trudno powiedzieć czy byłaby z tego jakaś poważna luka. W każdym razie praca na innym pulpicie swoje robi.

0
FoTeL napisał(a)

Witam,

Chcę przesłać message systemowy pomiędzy usługą a aplikacją okienkową. A konkretnie z usługi do aplikacji okienkowej.

Robię FindWindow aplikacji okienkowej w usłudze i dostaję 0 :(

czy ktoś z was wysyła takie message pomiędzy usługą a okienkiem ??

To na początek pokaż jak to FindWindow robisz. Czasem korzystam z usług komunikujących się w aplikacjami okienkowymi, to może coś podpowiem.

b

0

tutaj t_Han dostaje 0

t_Han := FindWindow('Service_Test', nil);

tutaj t_Han <> 0 ale mimo to message nie dochodzi do aplikacji

t_Han2 := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
t_Han := OpenService(t_han2, 'Service_Test', SERVICE_ALL_ACCESS);

wysyłka messaga

if t_Han <> 0 then
  SendMessage(t_han, WM_USER + 150, 0, 0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1