Avatar billede taio Novice
29. januar 2003 - 23:05 Der er 11 kommentarer og
1 løsning

NumLock

Hej Alle

En lille opgave!

Jeg er ved at lave en lille database. Når jeg klikker på en boks/knap vil jeg gerne have numlock sættes til Numlock=ja

Hvordan skal dette gøres..? helst i VBA

På forhånd tak

\\Taio
Avatar billede sjap Praktikant
29. januar 2003 - 23:14 #1
Hvad med

SendKeys "{NUMLOCK}"
Avatar billede taio Novice
29. januar 2003 - 23:19 #2
Nope, det virker ikke. Det jeg skal bruge er at jeg skal være sikker på at numlock altid er on.
Avatar billede sjap Praktikant
29. januar 2003 - 23:24 #3
Det kender jeg desværre ikke nogen metode til. :-(
Avatar billede jkrons Professor
30. januar 2003 - 00:11 #4
Prøv at se på dette link:

http://www.mvps.org/access/api/api0046.htm
Avatar billede kabbak Professor
30. januar 2003 - 00:59 #5
Application.SendKeys ("{NUMLOCK}")
Avatar billede jpvj Nybegynder
30. januar 2003 - 01:12 #6
kabbak> Dit svar er da det samme som zuperjaps...

Jeg ved ikke om det kan gøres i VBA, jeg mit kendskab til VBA ligger på et lille sted, men jeg fandt denne VB kode - håber det kan hjælpe dig.

JP

http://www.blindprogramming.com/ftp/basic/statkeys.txt
Avatar billede taio Novice
30. januar 2003 - 08:58 #7
Det ser lidt uoverskueligt ud for mig med den VBA. Hvis der findes andre løsninger bliver jeg glad. Funktionen skal virke under access2000.

Det kan godt være at det er den rigtige kode som jkrons og jpvj har sendt link til, men koden er lidt for indviklet for mig.

På forhånd tak..!
Avatar billede somaliomar Praktikant
30. januar 2003 - 10:24 #8
Sådan gør du:

- Åbn din Access-database
- Tryk på F11 eller Ctrl+G for at åbne VBEditor
- Klik på Module under menuen Insert
- Åbn modulet og føj flg. kode til modulet:

Option Compare Database
Option Explicit

      ' Declare Type for API call:
      Private Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128  '  Maintenance string for PSS usage
      End Type

      ' API declarations:
      Private Declare Function GetVersionEx Lib "Kernel32" _
        Alias "GetVersionExA" _
        (lpVersionInformation As OSVERSIONINFO) As Long

      Private Declare Sub keybd_event Lib "user32" _
        (ByVal bVk As Byte, _
          ByVal bScan As Byte, _
          ByVal dwflags As Long, ByVal dwExtraInfo As Long)

      Private Declare Function GetKeyboardState Lib "user32" _
        (pbKeyState As Byte) As Long

      Private Declare Function SetKeyboardState Lib "user32" _
        (lppbKeyState As Byte) As Long

      ' Constant declarations:
      Const VK_NUMLOCK = &H90
      Const VK_SCROLL = &H91
      Const VK_CAPITAL = &H14
      Const KEYEVENTF_EXTENDEDKEY = &H1
      Const KEYEVENTF_KEYUP = &H2
      Const VER_PLATFORM_WIN32_NT = 2
      Const VER_PLATFORM_WIN32_WINDOWS = 1


Function IsNumLockOn() As Boolean
        Dim o As OSVERSIONINFO
       
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
        IsNumLockOn = keys(VK_NUMLOCK)
End Function

Sub ToggleNumLock()
        Dim o As OSVERSIONINFO
               
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)

          If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=====Win95
                keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
                SetKeyboardState keys(0)
          ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then  '=====WinNT
          'Simulate Key Press
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
          'Simulate Key Release
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
              Or KEYEVENTF_KEYUP, 0
          End If
       
End Sub

Sub SetNumLockOn()
    If IsNumLockOn() <> True Then
        ToggleNumLock
    End If
End Sub


Nu kan du bare kalde proceduren SetNumLockOn når du vil have tænde Num Lock.
Avatar billede henrik13 Nybegynder
30. januar 2003 - 10:25 #9
taio
Send tiol mig, så skal jeg sætte  sendkeys ind for dig, det er den rigtige løsning, plus den skal slåes fra ved lukning af access.
Henrik
Avatar billede henrik13 Nybegynder
30. januar 2003 - 10:38 #10
taio
Send den til mig, så skal jeg sætte  sendkeys ind for dig, det er den rigtige løsning, plus den skal slåes fra ved lukning af access. Min email er:
oz1bua@wanadoo.dk
Henrik
Avatar billede jkrons Professor
30. januar 2003 - 16:15 #11
I følge det jeg kan finde kan du ikke sende Numlock via Sendkeys - skulle være en bug i Access. I følge The Access Web er ovenstående metode (som også gengivet af somaliomar) den eneste, der med sikkerhed virker. Og så risikerer du ikke at få sendt en Sendkeys på et forkert tidspunkt.
Avatar billede taio Novice
30. januar 2003 - 17:17 #12
Tak for hjælpen til alle..!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester