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. |
|
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 ShowWindow aby ukryć okno :) |
|
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(). |
|
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. |
|
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 :( 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. |
|
xevuel |
» 2012-05-22 20:41:12 Hmm... A jakie komunikaty ty chcesz otrzymywać podczas gdy okno jest niewidoczne? |
|
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. |
|
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...? |
|
« 1 » 2 |