myszka sterowana klawiaturą

0

mam zrobione sterowanie pozycja kursora przy pomocy klawiatury - Cursor.Position
Chcialbym zrobic tak aby po wcisniecie entera dzialalo jak lewy przycisk myszy.
ma to dzialac niezaleznie od tego czy okno programu jest aktywne czy nie.
docelowo program ma siedziec w trayu. wiec trzeba grzebac w winapi.
troche czytalem w necie na ten teamt.. i szukam roznych rozwiazan.. tu sa moje wypociny, ktore jednak nic nie daja

private void PressedEnter(object sender, KeyEventArgs e)
{
int x = Cursor.Position.X;
int y = Cursor.Position.Y;
Point p = new Point(x, y);

        const int WM_LBUTTONDOWN = 0x201;
        const int BM_CLICK = 245;
        const int WM_ACTIVATE = 6;
        const int MA_ACTIVATE = 1;

        if (GetCursorPos(out p))
        {
            IntPtr hWnd = WindowFromPoint(p);
            if (e.KeyCode == Keys.Enter)
            {
                //tak
                SendMessage(hWnd, WM_LBUTTONDOWN, 1, 0);
                //lub tak
                SendMessage(hWnd, WM_ACTIVATE, MA_ACTIVATE, 0);
                SendMessage(hWnd, BM_CLICK, 0, 0);
            }
        }

}

0

Szersza znajomość haków systemowych jest konieczna.
http://www.google.pl/#hl=pl&source=hp&q=haki+windows&btnG=Szukaj+w+Google&lr=&aq=f&oq=haki+windows&fp=abe47abd9298cf0e
lub w języku inglisz:
http://www.google.pl/#hl=pl&q=windows+hooks&lr=&aq=f&oq=&fp=abe47abd9298cf0e

A tak na poważnie, jeżeli to nie ma być część jakiegoś większego programu to prościej niż c#.NET taki problem rozwiązać przy pomocy skryptów/programów AutoIT, który posiada wszystkie potrzebne funkcje a cały kod nie zajmię więcej niż 100 wierszy.

Pozdrawiam.

0

z tego co juz szukalem i czytalem w necie to hooki nie sa polecane przy .Net i polecane jest napisanie wlasnej dll'ki w C i podpiecie jej potem. i tak chyba bede robil

0
jaro_gosc napisał(a)

...hooki nie sa polecane przy .Net i polecane jest napisanie wlasnej dll'ki w C i podpiecie jej potem.
Tą gotową dll'ką napisaną C/C++ jest właśnie user32.dll.

Chodziło Ci zapewne o napisanie biblioteki w kodzie zarządzalnym dla wygody obsługi, takiej jak np. ta:
http://www.codeproject.com/KB/system/WindowsHookLib.aspx

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