Ĺadny brzuch
Już kiedyś (click!) pisałem o problemi z dodatkowymi klawiszami klawiatury multimedialnej pod Windows 98.
Postanowiłem pobrać kod wciśniętego klawisza w Delphi, ale żaden ze znalezionych przeze mnie kodów (m.in. standardowe eventy onKey... obiektu, globalne hooki na klawiaturę itp.) nie działa tak, by mnie satysfakcjonował - funkcje owszem, zwracają kod klawisza, ale jest on zawsze równy 255 i to niezależnie od wciśniętego klawisza. Jednak wiem na pewno, że one wywołują jakieś przerwania (?), gdyż po odpaleniu "sterowników" niektóre klawisze działają prawidłowo (tj. Mute, Vol+/- i Home).
Jednak pragnę sam je oprogramować, ale bez ich "danych" nic nie zrobię.
Czy może ktoś mógłby mi pomóc?
edit: Temat utworzony również na forum 4programmers.net.
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 21:46
Już kiedyś (click!) pisałem o problemi z dodatkowymi klawiszami klawiatury multimedialnej pod Windows 98.
Postanowiłem pobrać kod wciśniętego klawisza w Delphi, ale żaden ze znalezionych przeze mnie kodów (m.in. standardowe eventy onKey... obiektu, globalne hooki na klawiaturę itp.) nie działa tak, by mnie satysfakcjonował - funkcje owszem, zwracają kod klawisza, ale jest on zawsze równy 255 i to niezależnie od wciśniętego klawisza. Jednak wiem na pewno, że one wywołują jakieś przerwania (?), gdyż po odpaleniu "sterowników" niektóre klawisze działają prawidłowo (tj. Mute, Vol+/- i Home).
Jednak pragnę sam je oprogramować, ale bez ich "danych" nic nie zrobię.
Czy może ktoś mógłby mi pomóc?
Wydaje mi się, że nic tu nie wskurasz. To zna tylko producent klawiatury no i Pan Bóg. :)
Użytkownik statjacek edytował ten post 13 luty 2007, 18:23
Sposób na dorwanie kodu lub przerwania jest na pewno... tylko ja go nie znam :kwasny:
A może z tych sterowników można coś wyciągnąć?
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 20:47
Sposób na dorwanie kodu lub przerwania jest na pewno... tylko ja go nie znam :kwasny:
A może z tych sterowników można coś wyciągnąć?
Napisz do producenta klawiatury, może coś dostaniesz (umotywuj to dobrze).
Świetny pomysł, lecz szczerze wątpię w odpowiedź :kwasny:
Poczekam, może ją dostanę, a może ktoś (p1101, Cyrkiel ;) ?) pomoże mi w problemie... na tym forum... albo na forum 4p...
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 21:44
Temat już był poruszany na forum. Niestety bez rezultatu. Pomocny jest komunikat WM_APPCOMMAND wraz z hookiem (lub bez jeśli nie ma takiej potrzeby). Wartość 'lParam' powinna zawierać info o tym, który klawisz multimedialny wciśnięto po przechwyceniu komunikatu WM_APPCOMMAND.
Poczytaj:
http://www.codeguru....le.php/c5655__1
Sądzę, że w mniejszym lub większym stopniu Ci pomoże.
Użytkownik p1101 edytował ten post 13 luty 2007, 22:11
Wreszcie pobawiłem się komunikatami i przedstawiam mini raporcik :)
Co do "WM_APPCOMMAND", to może i jest on sprawny i prawidłowo się zachowuje, ale pewnie pod Win2k/XP.
Ja siedzę pod 98, w związku z czym ten komunikat jest "martwy" (przynajmniej w moim wypadku).
Ale po zapoznaniu się z różnymi FAQ, pomocami itp. postanowiłem sprawdzić wyniki wartości lParam, ale komunikatu WM_KEYDOWN. Okazało się, że owe dodatkowe klawisze mają wartość całkowicie inną niż inne przyciski :)
Oto co zmajstrowałem (przy pomocy 4p):
type TForm1 = class(TForm) // ... private procedure gettamsg(var Msg : TMsg; var Handled: Boolean); // ... implementation // ... procedure TForm1.gettamsg(var Msg: TMsg; var Handled: Boolean); begin if (Msg.message=$0100) //WM_KEYDOWN then ListBox.Items.Add( IntToStr(Msg.lParam) ); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := gettamsg; end;
Teraz wystarczy założyć globalnego hooka i oprogramować wyniki eventu :)
Dzięki wszystkim za pomoc i mobilizację ;)
PS statjacek: pomyliłeś się, na szczęście na moją korzyść :)
edit: prosiłbym o komentarze, czy wymyślony przeze mnie sposób jest prawidłowy, oraz inne plusy i minusy tego sposobu :)
Użytkownik DJ_ProG edytował ten post 15 luty 2007, 20:01
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Postanowiłem pobrać kod wciśniętego klawisza w Delphi, ale żaden ze znalezionych przeze mnie kodów (m.in. standardowe eventy onKey... obiektu, globalne hooki na klawiaturę itp.) nie działa tak, by mnie satysfakcjonował - funkcje owszem, zwracają kod klawisza, ale jest on zawsze równy 255 i to niezależnie od wciśniętego klawisza. Jednak wiem na pewno, że one wywołują jakieś przerwania (?), gdyż po odpaleniu "sterowników" niektóre klawisze działają prawidłowo (tj. Mute, Vol+/- i Home).
Jednak pragnę sam je oprogramować, ale bez ich "danych" nic nie zrobię.
Czy może ktoś mógłby mi pomóc?
edit: Temat utworzony również na forum 4programmers.net.
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 21:46
Już kiedyś (click!) pisałem o problemi z dodatkowymi klawiszami klawiatury multimedialnej pod Windows 98.
Postanowiłem pobrać kod wciśniętego klawisza w Delphi, ale żaden ze znalezionych przeze mnie kodów (m.in. standardowe eventy onKey... obiektu, globalne hooki na klawiaturę itp.) nie działa tak, by mnie satysfakcjonował - funkcje owszem, zwracają kod klawisza, ale jest on zawsze równy 255 i to niezależnie od wciśniętego klawisza. Jednak wiem na pewno, że one wywołują jakieś przerwania (?), gdyż po odpaleniu "sterowników" niektóre klawisze działają prawidłowo (tj. Mute, Vol+/- i Home).
Jednak pragnę sam je oprogramować, ale bez ich "danych" nic nie zrobię.
Czy może ktoś mógłby mi pomóc?
Wydaje mi się, że nic tu nie wskurasz. To zna tylko producent klawiatury no i Pan Bóg. :)
Użytkownik statjacek edytował ten post 13 luty 2007, 18:23
Sposób na dorwanie kodu lub przerwania jest na pewno... tylko ja go nie znam :kwasny:
A może z tych sterowników można coś wyciągnąć?
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 20:47
Sposób na dorwanie kodu lub przerwania jest na pewno... tylko ja go nie znam :kwasny:
A może z tych sterowników można coś wyciągnąć?
Napisz do producenta klawiatury, może coś dostaniesz (umotywuj to dobrze).
Świetny pomysł, lecz szczerze wątpię w odpowiedź :kwasny:
Poczekam, może ją dostanę, a może ktoś (p1101, Cyrkiel ;) ?) pomoże mi w problemie... na tym forum... albo na forum 4p...
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 21:44
Temat już był poruszany na forum. Niestety bez rezultatu. Pomocny jest komunikat WM_APPCOMMAND wraz z hookiem (lub bez jeśli nie ma takiej potrzeby). Wartość 'lParam' powinna zawierać info o tym, który klawisz multimedialny wciśnięto po przechwyceniu komunikatu WM_APPCOMMAND.
Poczytaj:
http://www.codeguru....le.php/c5655__1
Sądzę, że w mniejszym lub większym stopniu Ci pomoże.
Użytkownik p1101 edytował ten post 13 luty 2007, 22:11
Wreszcie pobawiłem się komunikatami i przedstawiam mini raporcik :)
Co do "WM_APPCOMMAND", to może i jest on sprawny i prawidłowo się zachowuje, ale pewnie pod Win2k/XP.
Ja siedzę pod 98, w związku z czym ten komunikat jest "martwy" (przynajmniej w moim wypadku).
Ale po zapoznaniu się z różnymi FAQ, pomocami itp. postanowiłem sprawdzić wyniki wartości lParam, ale komunikatu WM_KEYDOWN. Okazało się, że owe dodatkowe klawisze mają wartość całkowicie inną niż inne przyciski :)
Oto co zmajstrowałem (przy pomocy 4p):
type TForm1 = class(TForm) // ... private procedure gettamsg(var Msg : TMsg; var Handled: Boolean); // ... implementation // ... procedure TForm1.gettamsg(var Msg: TMsg; var Handled: Boolean); begin if (Msg.message=$0100) //WM_KEYDOWN then ListBox.Items.Add( IntToStr(Msg.lParam) ); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := gettamsg; end;
Teraz wystarczy założyć globalnego hooka i oprogramować wyniki eventu :)
Dzięki wszystkim za pomoc i mobilizację ;)
PS statjacek: pomyliłeś się, na szczęście na moją korzyść :)
edit: prosiłbym o komentarze, czy wymyślony przeze mnie sposób jest prawidłowy, oraz inne plusy i minusy tego sposobu :)
Użytkownik DJ_ProG edytował ten post 15 luty 2007, 20:01