CAPSLOCK status weergeven

Alles over het toepassen van API en DLL's in Liberty BASIC

Moderator: anthonio

CAPSLOCK status weergeven

Berichtdoor anthonio » vr dec 12, 2008 9:42 am

Oké, ik ben dus momenteel een progje aan het schrijven voor op men werk.
Het prog moet bepaalde dingen inscannen via barcode, dit lukt allemaal goed maar dit gaat alleen goed als de capslock aanstaat.
Nu zou ik graag detecteren wanneer de capslock aan/uit staat.
Alleen krijg ik steeds een foutmelding en ik geraak er maar niet aan uit.

Code: Selecteer alles
r = GetKeyboardState(20)
print r
wait

function GetKeyboardState(key)
    calldll #user32, "GetKeyBoardState", keyState as long
end function


Dus de "GetKeyboardState" commando kan detecteren of CAPSLOCK, NUMLOCK, SCROLLLOCK, etc aan of uit staat.
Op het internet is te vinden dat 2O = CAPSLOCK
of VK_CAPITAL = CAPSLOCK.
Ondertussen heb ik ook even de handleiding van LB erbij genomen en raar maar waar maar daar vind je _VK_NUMLOCK dus wel tussen maar CAPSLOCK niet.

Andy
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: CAPSLOCK status weergeven

Berichtdoor anthonio » vr dec 12, 2008 11:56 am

oke na wat zoekwerk toch gevonden.

Code: Selecteer alles
'r = 0 => Caps off
'r = 1 => caps on
'r = 128 => caps pushed down
[Loop]
timer 0
keyBuf$ =  Space$(256)
Calldll #user32, "GetKeyboardState", keyBuf$ As Ptr, r As Boolean
r = Asc(mid$(keyBuf$, 21))
print r
timer 1000, [Loop]

wait


Was het weeral eens veel te moeilijk aan het maken.

Andy
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: CAPSLOCK status weergeven

Berichtdoor Gordon » zo dec 14, 2008 10:50 am

Hallo Andy,

De API reference van Microsoft zegt volgens Colin McMurie het volgende:

Code: Selecteer alles
Struct pbKeyState, pbKeyState As short
Open "user32" for dll as #user32
calldll #user32, "GetKeyboardState", _
pbKeyState As Struct, _
 result  As Long
close #user32


Ik denk dat het bovenstaande niet zal werken.
Knap dat jij de PRT gevonden hebt. Waar vond je dat?

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: CAPSLOCK status weergeven

Berichtdoor anthonio » zo dec 14, 2008 9:40 pm

Hoi gordon,

als je men voorbeeldje uittest dan zie je dat dit toch werkt.
Ik heb het momenteel opgenomen in men programma en het werkt perfect.
Vertaling van VB naar LB.
In de API-viewer staat inderdaad ook dat je struct nodig hebt maar dit is bij deze dus niet nodig.

Andy
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm


Keer terug naar API/DLL

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron