Ho 2 app, una è nascosta ("hW"), un'altra è app console ("CA") , da che suppongo di inviare comandi a hW. Nella console app sto ottenendo maniglia hW, e qui è una domanda: se sto correndo:PostMessage (hwnd, WM_SETTEXT, ..) non funziona mentre PostMessage (hwnd, WM_QUIT, ..) fa
PostMessage(hwnd, WM_QUIT, NULL, NULL);
tutto funziona bene, il messaggio arriva a hW e la spegne Ma se sto inviando
PostMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)"texttext");
messaggio non arriva a hW affatto. Spy ++ mostra anche che il messaggio non arriva a hW. C'è qualcosa di specifico su WM_SETTEXT, che lo impedisce? Grazie in anticipo.
OK. trovato risposta qui 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.
Inoltre, sembra
SendMessage(hwnd, WM_QUIT, NULL, NULL);
non fa nulla per indirizzare app.Even in semplice applicazione test come
HWND hNote;
if (!(hNote=FindWindow(L"Notepad",NULL)))
exit(1);
SendMessage(hNote, WM_QUIT, NULL, NULL);
mentre
PostMessage(hNote, WM_QUIT, NULL, NULL);
opere.
Tutto ciò non sembra logico per me ... Esiste qualche funzione universale che funzioni correttamente con qualsiasi tipo di messaggio?
Suppongo che il messaggio venga immediatamente respinto perché il puntatore specificato non è garantito per essere valido al momento della spedizione. È necessario lavorare su questo utilizzando un messaggio definito dall'utente/registrato in cui si è responsabili della gestione della stringa del payload. Oppure, passare il controllo altrimenti nel thread della finestra e 'SendMessage' da lì. –
È necessario utilizzare SendMessage() qui. E usa una stringa Unicode, di solito. –
Grazie. capito ora. ma volevo inviare un testo non predefinito in un messaggio asincrono. – user1821599