Wysłanie komunikatu przez SendMessage do innego procesu

0

Chciałem zrobić prosty program, który rysuje w paincie bez użycia kursora.
Więc zrobiłem:

SendMessage(hwndPaint,WM_LBUTTONDOWN,0,XYtoLPARAM(100,100));
SendMessage(hwndPaint,WM_LBUTTONUP,0,XYtoLPARAM(100,100));

No i nic się dzieje. Funkcje zwracają 0 i GetLastError() też 0.
Wiadomosć na pewno dociera ,bo na

SendMessage(hwndPaint,WM_CLOSE,0,0);

Paint reaguje.

dodanie znaczników <code class="cpp"> oraz `` - fp

0

SendInput()

0

Ale SendInput() zdaje się nie wysyła sygnału do konkretnego procesu?

0

I jesteś pewien że zauważyłbyś jednopikselową kropkę ?

0

Można ustawić "mazak" na rozmiar kropki jakies 20 pixeli i tak to testuję...

0

Ale SendInput() zdaje się nie wysyła sygnału do konkretnego procesu?

No i bardzo dobrze: przecież nieaktywne okno nie spodziewa się żadnego wejścia.
Musisz najpierw uaktywnić okno, a potem wygenerować zdarzenia.

0

Może niezbyt jasno wyraziłem się na początku,ale nie chcę aktywować okna za każdym razem wysłania sygnału. Okno ma być gdzies w tle i nie przeszkadzać.

usunięcie cytowania całego poprzedniego posta - fp

0

Musisz to przesłać nie do głównego okna tylko do tego w którym jest rysowanie.
Teraz robisz taki efekt jaki uzyskasz przy zmniejszeniu obszaru rysowania do 1x1 a potem kliknięcie za obszarem rysowania.

0

Ale Paint ma tylko jedno okno. Chyba, że chodzi Ci o obszar rysowania, ale to chyba DC nie WND i nie ma własnej funkcji obsługi wiadomosci ( LRESULT CALLBACK WindowProc(); ).

usunięcie cytowania całego poprzedniego posta - fp

0

Może niezbyt jasno wyraziłem się na początku,ale nie chcę aktywować okna za każdym razem wysłania sygnału. Okno ma być gdzies w tle i nie przeszkadzać.
Nie wolno tego robić. Okno może nie być przystosowane do odbierania komunikatów, kiedy nie jest na pierwszym planie. Możesz wywalić tak program. Możesz powodować w nim wyciek. A może to po prostu nie działać — nie wiesz jak program jest napisany.
Nawet jeśli akurat w Paincie to zadziała (chociaż, jak widać, zwykłe SendMessage nie działa) to jest to działanie wysoce niezalecane.

0

No trudno, biorę ryzyko na siebie. A tylko o Painta mi chodzi.
SendMessage() działa, tylko nie w tym konkretnym przypadku kliknięcia myszą.

usunięcie cytowania całego poprzedniego posta - fp

0
danek napisał(a):

Ale Paint ma tylko jedno okno. Chyba, że chodzi Ci o obszar rysowania, ale to chyba DC nie WND i nie ma własnej funkcji obsługi wiadomosci ( LRESULT CALLBACK WindowProc(); ).
Totalne bzdury.

Ściągnij jakąś wersje WinSpy i sprawdź jakim oknem jest obszar do rysowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1