none
Bildschirmtastatur (auf Win10-Tablet) per VBA in MS Access (Office 365) ein- und ausblenden?

    Frage

  • Hallo, ich möchte für die Dateneingabe in bestimmte Felder einer Access-DB die Bildschirmtastatur des Tablets nutzen. Beim Betreten eines entsprechenden Feldes soll sie automatisch eingeblendet  und beim Verlassen des Feldes wieder ausgeblendet werden. Ich möchte dies mit VBA realisieren.

    Ich weiss, dass Access nicht für Tablet-Anwendungen optimiert ist. Meine Suche nach entsprechenden Code-Beispielen war bisher nicht erfolgreich.

    Wer kann mir auf die Sprünge helfen?

    Dienstag, 15. März 2016 14:46

Antworten

  • Es gibt zwei Bildschirmtastaturen, die ältere osk.exe und die neuere TabTip.exe. Aufrufen kann man sie wie folgt:

    Im Kopf des Moduls

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
     ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    

    Im gewünschten Ereignis (zum Beispiel Text1_Enter):

    Dim ret As Long
    
    ret = ShellExecute(0, vbNullString, "osk.exe", vbNullString, "C:\Windows\System32", 1)
    If ret <= 32 Then
       Call MsgBox("Tastatur anzeigen ist fehlgeschlagen, vbOkOnly,"Tastatur")
    End If
    

    respektive

    Dim ret As Long
    
    ret = ShellExecute(0, vbNullString, "TabTip.exe", vbNullString, "C:\Program Files\Common Files\Microsoft Shared\ink", 1)
    If ret <= 32 Then
       Call MsgBox("Tastatur anzeigen ist fehlgeschlagen, vbOkOnly,"Tastatur")
    End If
    

    Matthias Kläy, Kläy Computing AG

    Donnerstag, 17. März 2016 09:22

Alle Antworten

  • Es gibt zwei Bildschirmtastaturen, die ältere osk.exe und die neuere TabTip.exe. Aufrufen kann man sie wie folgt:

    Im Kopf des Moduls

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
     ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    

    Im gewünschten Ereignis (zum Beispiel Text1_Enter):

    Dim ret As Long
    
    ret = ShellExecute(0, vbNullString, "osk.exe", vbNullString, "C:\Windows\System32", 1)
    If ret <= 32 Then
       Call MsgBox("Tastatur anzeigen ist fehlgeschlagen, vbOkOnly,"Tastatur")
    End If
    

    respektive

    Dim ret As Long
    
    ret = ShellExecute(0, vbNullString, "TabTip.exe", vbNullString, "C:\Program Files\Common Files\Microsoft Shared\ink", 1)
    If ret <= 32 Then
       Call MsgBox("Tastatur anzeigen ist fehlgeschlagen, vbOkOnly,"Tastatur")
    End If
    

    Matthias Kläy, Kläy Computing AG

    Donnerstag, 17. März 2016 09:22
  • Danke. Das hat mir schon sehr geholfen.

    Kann man die TabTip.exe auch nur auf den Ziffernblock beschränken?  Es sollen nur Ziffern eingegeben werden.

    Freitag, 8. April 2016 16:49
  • Wie nutze ich das Ereignis? Ich habe bis jetzt noch keine guten Tutorials oder auch nur Dokumentation dazu gefunden.
    Donnerstag, 16. November 2017 10:00