Delphi - PostMessage i WM_CONTEXTMENU

0

Mam pytanie. Używając programu Winspector Spy zauważyłem, że program Free Download Manager podczas zaznaczania "ptaszka" przy pobieraniu przy opcji "Udostępnij cały transfer dla tego pobierania" Wysyła komunikat WM_CONTEXTMENU i Lparam 0x0003014e. Chciałem programowo to obsłużyć z poziomu swojej aplikacji (wysłać ten komunikat). Zrobiłem coś takiego:

begin
FDM:=FindWindow(nil, 'Free Download Manager');
PostMessage(FDM , WM_CONTEXTMENU , 0, 0003014e);
end;

Ale wyrzuca mi błąd [Error] Unit1.pas(296): Syntax error in real number

Co robię nie tak lub jak to powinno wyglądać? Bo z komunikatami na zmianę trybu pobierania nie było problemu
PostMessage(FDM , WM_COMMAND , 32801, 0);

Natomiast z WM_CONTEXTMENU mam teraz pierwszy raz do czynienia.

0

LParam to IntPtr.

Zamiast podawać hexa, spróbuj podać jego wartość w dec (jako int).
0003014e -> 196942

0

Albo daj znak dolara przed tą wartością, powinno zadziałać, bo w koncu widać, że liczba jest z E czyli na pewno w systemie szesnastkowym. I poczytaj koniecznie kurs z podstawami Delphi, może być ten w kompendium na stronie 4p, to takie banalne "problemy" przestaną być dla Ciebie takimi problemami.

0
Wiechu128r napisał(a)

Zrobiłem coś takiego:

begin
FDM:=FindWindow(nil, 'Free Download Manager');
PostMessage(FDM , WM_CONTEXTMENU , 0, 0003014e);
end;

Ale wyrzuca mi błąd [Error] Unit1.pas(296): Syntax error in real number

olesio ma rację.
Liczba w postaci 0003014e zostanie potraktowana jako rzeczywista o postaci wykładniczej (3014*10^?). Z kontekstu wynika że powinna być w postaci szesnastkowej czyli w Delphi $0003014e.

0

Zasadniczo to i tak mi nic nie da... Bo to zadziała tylko wtedy, gdy menu kontekstowe jest otwarte. Znalazłem komunikat odpowiadający temu, ale narodził mi się inny problem. Mianowicie zaznaczenie czegoś w innej aplikacji. Potrzebuję zaznaczyć coś w komponencie innej aplikacji.

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