Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinApi]Komunikaty i ukryte okno

Ostatnio zmodyfikowano 2012-05-24 15:21
Autor Wiadomość
Chlorek
Temat założony przez niniejszego użytkownika
[WinApi]Komunikaty i ukryte okno
» 2012-05-22 20:18:23
Piszę program którego okno jest ukryte (zaraz po utworzeniu ukrywam je), jednocześnie przestają nadciągać komunikaty (GetMessage() ciągle czeka na komunikat). Jak można kontynuować odbieranie i wykonywanie komunikatów, nie tyle tych automatycznych i wymaganych do życia okna co tych narzuconych przeze mnie (przykładowo sam wysyłam podrobiony komunikat WM_PAINT). Z tego co widzę to system skutecznie blokuje wszystko, gdy tylko aplikacja nie posiada okna.
P-57187
xevuel
» 2012-05-22 20:20:10
Jeśli nie tworzysz okna, to logiczne, że nie dostajesz komunikatów, które do tego okna są skierowane. Użyj funkcji » WinAPIShowWindow aby ukryć okno :)
P-57188
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-05-22 20:24:23
Właśnie mam je ukryte i wtedy nawet poprzez SendMessage() komunikaty nie docierają do GetMessage() lub PeekMessage().
P-57190
xevuel
» 2012-05-22 20:26:47
Coś masz źle. Przykładowo - program działający w tray-u też wywołuje ShowWindow() aby ukryć okno, a po kliknięciu na ikonę musi jakoś odebrać ten komunikat, aby wyświetlić okno z powrotem. Jeśli możesz, to podaj kod.
P-57191
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-05-22 20:34:24
Dla testu zrobiłem Beep'a i nic nie słychać. Pisząc całą resztę mojego kodu (który musi być w tej pętli) nie wykonywał się, bez tego jestem uziemiony :(
C/C++
hwnd = CreateWindowEx( 0, szClassName, "phoard",
WS_SYSMENU | WS_MINIMIZEBOX,
getPositionX(), getPositionY(), wndSizeX, wndSizeY,
HWND_DESKTOP, NULL, hThisInstance, NULL );

ShowWindow( hwnd, SW_HIDE );

while( GetMessage( & messages, NULL, 0, 0 ) )
{
    Beep( 100, 100 );
    TranslateMessage( & messages );
    DispatchMessage( & messages );
}

Próbowałem też wysyłać komunikaty na siłę np. WM_PAINT, WM_SIZE ale GetMessage() zwyczajnie ich nie otrzymuje.
P-57192
xevuel
» 2012-05-22 20:41:12
Hmm... A jakie komunikaty ty chcesz otrzymywać podczas gdy okno jest niewidoczne?
P-57194
Chlorek
Temat założony przez niniejszego użytkownika
» 2012-05-22 20:51:38
To trochę dziwna sprawa, gdyż to wszystko ma dużo głębszy sens. Jakkolwiek przecież wysyłając samemu komunikat poprzez SendMessage() aplikacja powinna zareagować w jakikolwiek sposób, a tymczasem po prostu system windows nie dopuszcza komunikatu.
P-57195
xevuel
» 2012-05-22 21:01:29
No a kiedy ty wysyłasz to SendMessage? Po wywołaniu głównej pętli?

I jeszcze jedno, zmień
Beep( 100, 100 );
 na
Beep( 750, 300 );
 i zobacz czy dalej to samo. Przynajmniej u mnie na laptopie 100 to za mała wartość, żeby usłyszeć dźwięk.

gdyż to wszystko ma dużo głębszy sens
malware...?
P-57196
« 1 » 2
  Strona 1 z 2 Następna strona