Wysłanie komunikatu przez SendMessage do innego procesu

2013-10-14 11:05
danek
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ć napewno dociera ,bo na

SendMessage(hwndPaint,WM_CLOSE,0,0);

Paint reaguje.

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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2013-10-14 11:16
0

SendInput()

Pozostało 580 znaków

2013-10-14 11:22
danek
0

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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2013-10-14 11:25
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-10-14 11:30
danek
0

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

Pozostało 580 znaków

2013-10-14 11:46
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.

Pozostało 580 znaków

2013-10-14 11:51
danek
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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2013-10-14 12:01
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-10-14 12:31
danek
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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2013-10-14 12:31
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.

Pozostało 580 znaków

2013-10-14 12:46
danek
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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26
Nie cytuj całego poprzedniego posta, jeśli piszesz zaraz pod nim! - furious programming 2013-10-14 15:09

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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