logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Delphi / Lazarus] Jak wysłać komunikat do okna innego użytkownika?

nyquist 18 Cze 2011 23:15 964 2
REKLAMA
  • #1 9627734
    nyquist
    Poziom 26  
    Posty: 1240
    Pomógł: 76
    Ocena: 192
    Witam.
    Rzecz niby banalna - potrzebuję wysłać komunikat do okna innego uruchomionego programu. Więc "książkowo" za pomocą funkcji FindWindowEx() uzyskuję uchwyt tego okna, a następnie ślę mój komunikat procedurą PostMessage(). I wszystko jest ok... o ile wysyłam komunikat do programu uruchomionego pod tym samym kontem użytkownika, ale jeżeli np. chcę z poziomu konta Administratora wyszukać uchwyt okna w procesie innego użytkownika (Windows XP, Windows Server 2003), to funkcja FindWindowEx() nie znajduje tego okna i zwraca "0" :(

    Tak wygląda moja procedura wyszukująca wszystkie okna o podanej nazwie (bo z założenia jest ich więcej niż 1) i zapisująca ich uchwyty w tablicy "okna". Na potrzeby programu zdefiniowałem sobie typ tHandles = array of tHandle;
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod

    Natomiast definicja funkcji FindWindowEx wygląda tak:
    HWND WINAPI FindWindowEx(
      __in_opt  HWND hwndParent,
      __in_opt  HWND hwndChildAfter,
      __in_opt  LPCTSTR lpszClass,
      __in_opt  LPCTSTR lpszWindow
    );

    Zgodnie z opisem dla hwndParent = 0 funkcja wyszukuje okna znajdujące się bezpośrednio na pulpicie, więc może tu gdzieś tkwi haczyk, może wystarczy użyć tu uchwytu pulpitu wybranego użytkownika. Tylko w jaki sposób uzyskać ten uchwyt?
  • REKLAMA
  • #3 11440948
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Brak wartości dydaktycznej.
    Kosz.
REKLAMA