[c#] clickthrough tylko dla LPM

0

Witam,

Czy da rade zrobic okno przezroczyste tylko dla lewego przycisku myszy, a mozliwe do uzyskania focusa przez klikniecie prawym przyciskiem myszy?
rozumiem ze transparency key nie wchodzi w gre w tym wypadku, wiec jak to rozwiazac?
dziekuje z gory

0

lapiesz klikniecia myszy, spawdzasz jaki byl przycisk wcisniety jesli lewy olewasz, jesli prawy robisz to co do tej pory
ale raczej musisz znizyc sie do petli komunikatow, nie nie wiem czy to wyjdzie w c#
byl taki fajny komunikat WM_HITINFO czy jakos tak

0

wyjdzie wyjdzie, w c# mamy dostępne messagefilter
w związku z tym że to może być troche trudne podam gotowy kod

    public class BlockLeftMouseButtonMessageFilter : IMessageFilter 
    { 
        const int WM_LBUTTONDOWN = 0x201; 
        const int WM_LBUTTONUP = 0x202; 
         
        public bool PreFilterMessage(ref Message m)
        {
            if (m.Msg == WM_LBUTTONDOWN)
            {
                return true;
            }
            if (m.Msg == WM_LBUTTONUP)
            {
                return true;
            }
            return false;
        }
    }

        [STAThread]
        static void Main()
        {
            BlockLeftMouseButtonMessageFilter msgFilter = new BlockLeftMouseButtonMessageFilter();
            Application.AddMessageFilter(msgFilter);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

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