Mam 2 aplikacje, jedna to ukryte okno ("hW"), druga to konsola ("CA") , od , które przypuszczam wysłać polecenia do hW. W aplikacji konsoli Dostaję HW rączkę, a tu jest pytanie: jeśli biegnę:PostMessage (hwnd, WM_SETTEXT, ..) nie działa, gdy PostMessage (hwnd, WM_QUIT, ..) ma
PostMessage(hwnd, WM_QUIT, NULL, NULL);
wszystko działa poprawnie, wiadomość dotrze do HW i wyłącza go .Ale jeśli wyślę
wiadomość nie dostaje się do hW w ogóle. Spy ++ pokazuje również, że wiadomość nie dociera do hW. Czy jest coś szczególnego w WM_SETTEXT, co zapobiega temu? Z góry dziękuję.
OK. znaleźć odpowiedź tutaj http://cboard.cprogramming.com/windows-programming/72589-wm_settext-postmessage.html
Turns out the API tries to protect me against scope issues; PostMessage() always fails with WM_SETTEXT, or any other system-defined message that has a pointer as a parameter.Which gets me to SendMessage(), which is not good, because i wanted asynchronous messaging....
P.P.S.
Również wygląda
SendMessage(hwnd, WM_QUIT, NULL, NULL);
nie robi nic, aby kierować app.Even w prostej aplikacji testowej jak
HWND hNote;
if (!(hNote=FindWindow(L"Notepad",NULL)))
exit(1);
SendMessage(hNote, WM_QUIT, NULL, NULL);
podczas
PostMessage(hNote, WM_QUIT, NULL, NULL);
prac.
Wszystko, co wydaje mi się nielogiczne ... Czy istnieje jakaś uniwersalna funkcja, która działa poprawnie z każdym rodzajem wiadomości?
Przypuszczam, że Twoja wiadomość zostanie natychmiast odrzucona, ponieważ wskazany przez Ciebie wskaźnik nie jest gwarantowany w momencie wysyłki. Musisz popracować nad tym przy użyciu zdefiniowanego przez użytkownika/zarejestrowanego komunikatu, w którym jesteś odpowiedzialny za zarządzanie łańcuchem danych. Lub przekaż kontrolę w inny sposób do wątku okna i stamtąd "SendMessage". –
Musisz użyć SendMessage() tutaj. Używaj zwykle ciągu Unicode. –
Dziękuję. mam to teraz. ale chciał wysłać nie predefiniowany tekst w asynchronicznej wiadomości. – user1821599