Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildschirmtastatur

Forumthread: Bildschirmtastatur

Bildschirmtastatur
26.06.2018 21:17:37
Phil
Hallo zusammen,
habe früher auf meinem Windows 8.1 Tablet mit folgendem Modul die Tastatur immer geöffnet und geschlossen wenn ich ein Textfeld betreten und verlassen haben:
Leider funktioniert es mit Windows 10 nicht mehr, habe hier den Speicherort der TabTip.exe zwar auf C:\Program Files\Common Files\microsoft shared\ink geändert. Aber leider schließt er die Tastatur nicht!
Hat einer Lösung hierfür? Vielen Dank!
anbei der alte Code der unter Windows 8.1 ohne Probleme funktionierte:
Option Explicit
Option Private Module
Private Declare PtrSafe Function GetCurrentProcess Lib "kernel32.dll" () As LongPtr
Private Declare PtrSafe Function IsWow64Process Lib "kernel32.dll" ( _
ByVal hProcess As LongPtr, _
ByRef Wow64Process As LongPtr) As Long
Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hWnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Declare PtrSafe Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" ( _
ByVal Enable As Boolean) As Boolean
Private Const SW_SHOWNORMAL As Long = 1&
Public Sub LoadScreenKeyboard()
Dim lngptrIsWow64 As LongPtr, lngptrProcess As LongPtr
lngptrProcess = GetCurrentProcess
Call IsWow64Process(lngptrProcess, lngptrIsWow64)
If lngptrIsWow64 = 0 Then
Call ShellExecuteA(Application.hWnd, "open", "TabTip.exe", vbNullString, "C:\Windows\ _
System32\", SW_SHOWNORMAL)
Else
Call Wow64EnableWow64FsRedirection(False)
Call ShellExecuteA(Application.hWnd, "open", "TabTip.exe", vbNullString, "C:\Windows\ _
System32\", SW_SHOWNORMAL)
Call Wow64EnableWow64FsRedirection(True)
End If
End Sub

Public Sub UnloadScreenKeyboard()
Dim objWMI As Object, objProcessList As Object, objProcess As Object
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objProcessList = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'TabTip.exe' _
")
For Each objProcess In objProcessList
Call objProcess.Terminate
Next
Set objProcessList = Nothing
Set objWMI = Nothing
End Sub

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildschirmtastatur
27.06.2018 08:47:50
Nepumuk
Hallo,
prüfe mal, ob es die TabTip.exe unter Windows10 überhaupt noch gibt.
Gruß
Nepumuk
AW: Bildschirmtastatur
27.06.2018 09:48:19
Phil
Hallo,
TabTip.exe funktioniert unter Windows 10, öffnet auch automatisch wenn ich ins Textfeld gehe! Leider schließt Sie beim Verlassen nicht automatisch.
Vielleicht hat jemand einer andere Überlegung ?
Vielen Dank
Anzeige
AW: Bildschirmtastatur
27.06.2018 09:59:20
Nepumuk
Hallo,
ich habe es soeben getestet. Das Programm wird sauber beendet.
Gruß
Nepumuk
AW: Bildschirmtastatur
27.06.2018 10:18:49
Phil
Hallo,
hast du es auf einem Tablet getestet ? Oder auf den PC?
Gruß Phil
Tausche doch die...
27.06.2018 10:15:35
Case
Hallo, :-)
... "TabTip.exe" gegen "osk.exe" aus - oder spricht was dagegen? ;-)
Servus
Case

Anzeige
Du könntest es mal so...
27.06.2018 09:04:15
Case
Hallo, :-)
... versuchen: ;-)
Option Explicit
Sub Main()
Shell "cmd /c osk", vbHide
End Sub
Sub Main_1()
Shell "wmic Process where ""name='osk.exe'"" call terminate", vbHide
End Sub
Servus
Case

Anzeige
AW: Du könntest es mal so...
27.06.2018 16:11:09
Nepumuk
Hallo Case,
Main funktioniert nicht unter Windows 64 Bit. Daher auch der Kopfstand mit den API's.
Gruß
Nepumuk
Aaahhhh... das wusste ich...
28.06.2018 07:41:01
Case
Hallo Nepumuk, :-)
... nicht. Funktioniert denn die "osk.exe"? Die verwende ich immer. Lässt sich prima anzeigen und auch wieder beenden.
Servus
Case

Anzeige
AW: Aaahhhh... das wusste ich...
28.06.2018 07:58:11
Nepumuk
Hallo Case,
der Code ist von mir und im Original wurde auch die OSK benutzt. Und die funktioniert auch auf einem Tablet (selbst getestet). Warum Phil das geändert hat weiß ich nicht. Er hat es ja nicht nötig Feedback zu geben.
Gruß
Nepumuk
AW: Aaahhhh... das wusste ich...
28.06.2018 10:25:34
Phil
Hallo zusammen,
ich habe die Osk.exe geändert, da die TabTip.exe direkt unten am Bildrand eingebettet wird und das Textfeld sich dann passend auf dem Tablet verschiebt.
Habe jetzt wieder Windows 8.1 installiert, jetzt funktioniert es wieder.
Vielen Dank für eure Hilfe.
Gruß Phil
Anzeige
AW: Aaahhhh... das wusste ich...
28.06.2018 10:26:39
Phil
Hallo zusammen,
ich habe die Osk.exe geändert, da die TabTip.exe direkt unten am Bildrand eingebettet wird und das Textfeld sich dann passend auf dem Tablet verschiebt.
Habe jetzt wieder Windows 8.1 installiert, jetzt funktioniert es wieder.
Vielen Dank für eure Hilfe.
Gruß Phil
Anzeige
;
Anzeige

Infobox / Tutorial

Bildschirmtastatur in Windows 10 und 11 nutzen


Schritt-für-Schritt-Anleitung

Um die Bildschirmtastatur (TabTip.exe) in Windows 10 oder 11 zu öffnen und zu schließen, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Option Explicit
    
    Private Declare PtrSafe Function GetCurrentProcess Lib "kernel32.dll" () As LongPtr
    Private Declare PtrSafe Function IsWow64Process Lib "kernel32.dll" ( _
       ByVal hProcess As LongPtr, _
       ByRef Wow64Process As LongPtr) As Long
    Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
       ByVal hWnd As LongPtr, _
       ByVal lpOperation As String, _
       ByVal lpFile As String, _
       ByVal lpParameters As String, _
       ByVal lpDirectory As String, _
       ByVal nShowCmd As Long) As Long
    Private Declare PtrSafe Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" ( _
       ByVal Enable As Boolean) As Boolean
    Private Const SW_SHOWNORMAL As Long = 1
    
    Public Sub LoadScreenKeyboard()
       Dim lngptrIsWow64 As LongPtr, lngptrProcess As LongPtr
       lngptrProcess = GetCurrentProcess
       Call IsWow64Process(lngptrProcess, lngptrIsWow64)
       If lngptrIsWow64 = 0 Then
           Call ShellExecuteA(Application.hWnd, "open", "TabTip.exe", vbNullString, "C:\Windows\System32\", SW_SHOWNORMAL)
       Else
           Call Wow64EnableWow64FsRedirection(False)
           Call ShellExecuteA(Application.hWnd, "open", "TabTip.exe", vbNullString, "C:\Windows\System32\", SW_SHOWNORMAL)
           Call Wow64EnableWow64FsRedirection(True)
       End If
    End Sub
    
    Public Sub UnloadScreenKeyboard()
       Dim objWMI As Object, objProcessList As Object, objProcess As Object
       Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
       Set objProcessList = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'TabTip.exe'")
       For Each objProcess In objProcessList
           Call objProcess.Terminate
       Next
       Set objProcessList = Nothing
       Set objWMI = Nothing
    End Sub
  4. Führe die LoadScreenKeyboard-Routine aus, um die Bildschirmtastatur anzuzeigen.

  5. Nutze die UnloadScreenKeyboard-Routine, um die Bildschirmtastatur zu schließen.


Häufige Fehler und Lösungen

  • Problem: Die Bildschirmtastatur öffnet sich, schließt aber nicht automatisch.

    • Lösung: Stelle sicher, dass die UnloadScreenKeyboard-Routine korrekt aufgerufen wird, wenn das Textfeld verlassen wird.
  • Problem: cmd öffnet sich automatisch und schließt.

    • Lösung: Nutze Shell "cmd /c osk", vbHide, um die Bildschirmtastatur ohne sichtbares Fenster zu starten.
  • Problem: TabTip.exe ist nicht vorhanden.

    • Lösung: Überprüfe, ob TabTip.exe im Verzeichnis C:\Windows\System32\ vorhanden ist.

Alternative Methoden

  1. Verwendung von osk.exe:

    • Du kannst die Bildschirmtastatur auch über den Befehl osk öffnen.
      Shell "osk", vbNormalFocus
  2. Tastenkombination:

    • In Windows 10 kannst du die Bildschirmtastatur mit der Tastenkombination Windows-Taste + Ctrl + O öffnen.
  3. Einstellungen:

    • Gehe zu Einstellungen > Erleichterte Bedienung > Tastatur und aktiviere die Option "Bildschirmtastatur".

Praktische Beispiele

  • Bildschirmtastatur automatisch einblenden: Um die Bildschirmtastatur automatisch beim Fokussieren eines Textfeldes zu öffnen, kannst du den Code in die Ereignisprozedur des Textfeldes einfügen:

    Private Sub TextBox1_GotFocus()
      LoadScreenKeyboard
    End Sub
    
    Private Sub TextBox1_LostFocus()
      UnloadScreenKeyboard
    End Sub

Tipps für Profis

  • Einstellen der Bildschirmtastatur: Du kannst die Bildschirmtastatur anpassen, um nur die benötigten Tasten anzuzeigen.
  • Verwendung von Shortcuts: Nutze Shortcuts, um die Bildschirmtastatur schnell zu öffnen und zu schließen.
  • Automatisierung: Automatisiere die Bildschirmtastatur durch Makros, insbesondere bei der Arbeit mit Formularen in Excel.

FAQ: Häufige Fragen

1. Wie öffne ich die Bildschirmtastatur ohne Tastatur?
Du kannst die Bildschirmtastatur öffnen, indem du den Befehl TabTip.exe über ein Makro oder den Befehl osk in der Eingabeaufforderung verwendest.

2. Funktioniert die Bildschirmtastatur in Windows 11?
Ja, die Bildschirmtastatur ist auch in Windows 11 verfügbar und kann ähnlich wie in Windows 10 verwendet werden.

3. Wie kann ich die Bildschirmtastatur automatisch einblenden?
Stelle sicher, dass die LoadScreenKeyboard-Routine beim Fokussieren eines Textfeldes aufgerufen wird, um die Bildschirmtastatur automatisch anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige