Własny sterownik myszki laserowej


(Kunsztro) #1

Chcę napisać sterownik dla własnej myszki laserowej. :shock: :shock:

Czy ktoś pisał własne sterowniki?

Czy w C# NET jestem w stanie to zrobić?

Od czego zacząć :?:

-- Dodane 25.01.2012 (Śr) 7:10 --

Znalazłem sterowniki dla DOS http://cutemouse.sourceforge.net/ :o :o


(kebkit) #2

od kartki papieru formatu A4


(nnick) #3

Skoro się pytasz to nie - nie jesteś w stanie tego samemu zrobić. Jeszcze ze 2 lata praktyki to może może. Wiedz jednak że sterowniki raczej nie pisze się w językach tego poziomu, trzymałbym się czegoś niższego - c/c++, w ekstremalnych przypadkach asm


(Kunsztro) #4

Dlaczego?

Gimnazjalista by to zrobił.

Wykorzystanie dodatkowych przycisków myszki:

include

include

HHOOK hook = 0;

char target[32] = {0};

int last = 0;

void btn(int i,int up) {

if(3*up+i != last) keybd_event(VK_F1+i,MapVirtualKey(VK_F1+i,0),up,0);

last = 3*up+i;

}

LRESULT CALLBACK proc(int disabled,WPARAM wp,LPARAM lp) {

int *m = (int *)lp;

if (!disabled) {

if( m[1] == 0x0465 && m[2] == 0x0000 && m[3] == 2 ) btn(0,0);

if( m[1] == 0x0464 && m[2] == 0x0000 && m[3] == 2 ) btn(0,2);

if( m[1] == 0x0465 && m[2] == 0x0000 && m[3] == 4 ) btn(1,0);

if( m[1] == 0x0464 && m[2] == 0x0000 && m[3] == 4 ) btn(1,2);

if( m[1] == 0x1f58 && m[2] == 0x1b70 && m[3] == 0 ) btn(2,0);

if( m[1] == 0x1f58 && m[2] == 0x1b70 && m[3] == 1 ) btn(2,2);

if( m[1] == 0x1f58 && m[2] == 0x1b71 && m[3] == 0 ) btn(3,0);

if( m[1] == 0x1f58 && m[2] == 0x1b71 && m[3] == 1 ) btn(3,2);

if( m[1] == 0x1f58 && m[2] == 0x1b72 && m[3] == 0 ) { btn(4,0); Sleep(10); btn(4,2); }

if( m[1] == 0x1f58 && m[2] == 0x1b73 && m[3] == 0 ) { btn(5,0); Sleep(10); btn(5,2); }

}

return CallNextHookEx(hook,disabled,wp,lp);

}

extern "C" __declspec(dllexport) void inst(HWND, HINSTANCE, char* cmd){

if(!cmd||hook) return; strncpy(target,cmd,sizeof(target));

hook = SetWindowsHookEx(WH_GETMESSAGE,proc,GetModuleHandle("hook"),0);

MSG msg; while(GetMessage(&msg,0,0,0)) { TranslateMessage( &msg ); DispatchMessage( &msg ); Sleep(10); }

}

long __stdcall DllMain( HINSTANCE dll,DWORD reason){

return strstr(GetCommandLine(),target) ? 1 : 0;

} :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning: :frowning:


(nnick) #5

To czemu się pytasz skoro umiesz?


(Kunsztro) #6

Nie umiem tylko zastanawiam się że myszka to jakby mała klawiatura, a do klawiatury to już można coś napisać.

A te przyciski specjalne to wysyłają sygnały F1....F12.

Czyli że jak naciskam przycisk X ----> wysyłam sygnał F1 to mogę to oprogramować jako F1_keyEvent i przypisać do tego przycisku powiedzmy zamykanie aplikacji.... :oops:


(Drobok) #7

Człowiecze, wykorzystanie sygnałów wysyłanych przez sterownik to co innego niż napisanie własnego sterownika. Poza tym używa się znaku code.

Btw poczytaj to http://www.compsoc.man.ac.uk/~moz/kerne ... guide.html

PS to kod z codeproject. Jeśli nie wiesz jak go użyć to przeczytaj pierw artykuł o tym, komentarze itd :slight_smile: Skoro uważasz, że gimnazjalista by to napisał, a ty nie potrafisz tego wykorzystać to chodzisz do przedszkola ? :slight_smile: