chodzi mi o to żeby po naciśnięciu prawego klawisza myszy (niezależnie od położenia kursora) nie otwierało się menu.
BTW Da się to zrobić samym Delphi czy trzeba korzystać z WinAPI ?
Rozumiem, że to dla jakiegoś konkretnego komponentu bądź formatki. Są trzy sposoby i nie potrzeba do
nich WinApi. Przynajmniej ja znam tylko te. Pierwszy po prostu nie ustawiać PopupMenu dla komponentu
lub formatki. Drugi to stworzyć dynamicznie puste PopupMenu i przypisać je do komponentu lub formatki
w OnCreate. Trzecie to wykorzystać zdarzenie komponentów i formatek OnContextPopup, w taki sposób:
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Handled := True;
end;
nie ustawiać popmenu, ok. Tak mam od początku ale to działa tylko gdy kursor jest nad oknem aplikacji, a jak zrobić żeby to menu nie otwierało się nawet gdy ktoś kliknie poza obszarem okna np gdzieś na pulpicie ?
A to jak rozumiem chcesz zablokować Menu Windowsowe, bo piszesz, że poza aplikacją. Tego niestety nie
wiem i nie jestem pewien czy w łatwy spsób da się to zrobić. Trzeba by może użyć jakiegos "Tweakera" ;/
Musisz zrobić globalnego haka
SetWindowsHookEx
z tego co wiem (dopiero się uczę) to globalny hook sprawi, że wszystkie zdarzenia typu naciśnięcie klawisza na klawiaturze lub przycisku myszy będą kierowane do aplikacji i w niej już muszę to obsłużyć. Komponent keyspy to wykorzystuje ale nie wpływa na rzeczy typu otwieranie menu, chyba że się mylę.
fr3on napisał(a)
z tego co wiem (dopiero się uczę) to globalny hook sprawi, że wszystkie zdarzenia typu naciśnięcie klawisza na klawiaturze lub przycisku myszy będą kierowane do aplikacji i w niej już muszę to obsłużyć. Komponent keyspy to wykorzystuje ale nie wpływa na rzeczy typu otwieranie menu, chyba że się mylę.
key spy wykorzystuje hooka ale na konkretne zdarzenia - naziskanie klawiszy.
jak zalozysz hooka na mysz to bedziesz mogl zablokowac np klikniecie prawego przycisku myszy.
pytanie tylko czy:
chcesz zablokowac popup dla konkretnego okna czy dla kazdego okna/programu w systemie?
bo np stosujac blokowanie prawego przycismy myszy wylaczysz mozliwosc np oddalania obrazu w niektorych programach graficznych - a tam pod tym przyciskiem nie ma popupmenu.
P.S. z tego co pamietam to wszysktie popupy sa oknami konkretnej klasy- i temu tez sie warto przyjrzec.
chce zablokować popup dla każdego okna w systemie