Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Olbrzymie kłopoty ze sterowaniem diodami klawiszy funkcyjnych...
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002
Olbrzymie kłopoty ze sterowaniem diodami klawiszy funkcyjnych...

Jestem w dość dużym kłopocie. Napisałem proogram mający za zadanie informować użytkownika o różnych zaprogramowanych zdarzeniach systemowych za pomocą środków audiowizualnych-m. in. możliwości zapalania i gaszenia diod klawiszy funkcyjnych na klawiaturze. Użyłem do tego następującego kodu (przykład z Api-guide):

Const VK_CAPITAL = &H14
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_USED = VK_SCROLL
Private Type KeyboardBytes
    kbByte(0 To 255) As Byte
End Type
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim kbArray As KeyboardBytes, CapsLock As Boolean, kbOld As KeyboardBytes
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail:
    'Get the current keyboardstate
    GetKeyboardState kbOld
    'Hide the form
    Me.Hide
    MsgBox "Keep your eyes on the little num-, shift- and scrolllock lights on the keyboard."
    TurnOff VK_CAPITAL
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 1000
    TurnOn VK_NUMLOCK
    Sleep 100
    TurnOn VK_CAPITAL
    Sleep 100
    TurnOn VK_SCROLL
    Sleep 300
    TurnOff VK_NUMLOCK
    Sleep 100
    TurnOff VK_CAPITAL
    Sleep 100
    TurnOff VK_SCROLL
    Sleep 500
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 200
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 200
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_NUMLOCK
    TurnOn VK_SCROLL
    Sleep 200
    TurnOff VK_NUMLOCK
    TurnOff VK_SCROLL
    Sleep 200
    TurnOn VK_CAPITAL
    Sleep 400
    TurnOff VK_CAPITAL
    Sleep 200
    TurnOn VK_NUMLOCK
    Sleep 100
    TurnOn VK_CAPITAL
    Sleep 100
    TurnOn VK_SCROLL
    Sleep 300
    TurnOff VK_SCROLL
    Sleep 100
    TurnOff VK_CAPITAL
    Sleep 100
    TurnOff VK_NUMLOCK
    Sleep 1000
    Unload Me
End Sub
Private Sub TurnOn(vkKey As Long)
    'Get the keyboard state
    GetKeyboardState kbArray
    'Change a key
    kbArray.kbByte(vkKey) = 1
    'Set the keyboard state
    SetKeyboardState kbArray
End Sub
Private Sub TurnOff(vkKey As Long)
    'Get the keyboard state
    GetKeyboardState kbArray
    'change a key
    kbArray.kbByte(vkKey) = 0
    'set the keyboard state
    SetKeyboardState kbArray
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'restore the old keyboard state
    SetKeyboardState kbOld
End Sub


Gdy przeprowadzałem testy pod Windows 98 i 98 SE wszytsko było OK-schody zaczęły się przy Windows o wyższych numerach-konkretnie XP. Nie chce działać tam to polecenie służące do kontroli stanu zapalenia diod. Zobaczyłem do API Guide i stwierdziłem, że użyte przeze mnie polecenia zadziałają jedynie pod Windows 98 lub wcześniejszych... Bardzo "głupia" i przykra dla mnie sprawa. Może ktoś umiałby mi podpowiedzieć co mogę zrobić? Czy istnieje jakiś alternatywny sposób na sterowanie samymi DIODAMI (nie klawiszami) na klawiaturze? Nie wiem czy w VB można robić wstawki assemblera, ale jeśli tak, to może coś w ten sposób? Byłbym badzo wdzięczny za wszelkie rady.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


20-02-2004 14:17
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

mam sampla w wersji DOSowej (Qbasic albo TP nie pamiętam w czym pisałem ;-) on modyfikuje jakąś komórkę w pamięci, ale nie wiem czy pod XP to pójdzie. Jak chcesz mogę wysłać na priva


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

21-02-2004 19:09
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

Mam nadzieję, że za kilka dni w tym wątku: http://board.freeweb.pl/posts.php?board_id=1543&topic_id=71045&division=615 ; pojawi się jakaś konkretna odpowiedź (piszę ten post, aby osoby przeglądające w przyszłości archiwum miały pod ręką ten drugi wątek)


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

23-02-2004 13:50
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Wszystkich odpowiedzi: 2 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1