Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Virtuelle Tastatur öffnen VBA

Virtuelle Tastatur öffnen VBA
01.03.2019 08:25:03
Thomas
Habe folgenden Code gefunden, leider bekomme ich die Fehlermeldung "Konnte Tastatur nicht öffnen"
Nutze Windows 10.
Hat jemand eine Idee.....
'--------------------------------------------------------------------------
' Module : UserForm1
' Author : Case (Ralf Stolzenburg)
' Date : 25.04.2013
' Purpose : On Screen Keyboard - OSK - Bildschirmtastatur...
'--------------------------------------------------------------------------
Option Explicit

Private Sub CommandButton1_Click()
Shell "wmic Process where ""name='osk.exe'"" call terminate", vbHide
Unload Me
End Sub

Private Sub TextBox1_Enter()
TextBox1.Text = ""
ShellAndWait "cmd /c osk"
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Shell "wmic Process where ""name='osk.exe'"" call terminate", vbHide
End Sub

'--------------------------------------------------------------------------
' Module : UserForm1
' Procedure : ShellAndWait
' Author : Case (Ralf Stolzenburg)
' Date : 25.04.2013
' Purpose : ShellAndWait mit ausgeblendetem Dosfenster...
'--------------------------------------------------------------------------

Private Sub ShellAndWait(ByVal strPathName As String)
Dim WshShell As Object
On Error GoTo Fin
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run strPathName, 0, True
Fin:
Set WshShell = Nothing
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

' UserForm nicht über das "X" schliessen lassen

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 08:46:08
Nepumuk
Hallo Thomas,
teste mal:
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", "osk.exe", _
            vbNullString, "C:\Windows\System32\", SW_SHOWNORMAL)
    Else
        Call Wow64EnableWow64FsRedirection(False)
        Call ShellExecuteA(Application.Hwnd, "open", "osk.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 = 'osk.exe'")
    For Each objProcess In objProcessList
        Call objProcess.Terminate
    Next
    Set objProcessList = Nothing
    Set objWMI = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 09:17:56
Thomas
Hallo
Vielen Dank für die schnelle Antwort:
Muss ich deinen Code zusätzlich zu dem anderen Script hinzufügen?
Beim einfügen wird bei mir immer Option Private Module rot gekennzeichnet.
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 09:27:23
Nepumuk
Hallo Thomas,
lösch die Zeile. Bei mir steht der Code in einem Standardmodul und da ist die Option zulässig. Der Code ersetzt deinen bisherigen Code vollständig.
Gruß
Nepumuk
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 09:28:29
Dieter(Drummer)
Hallo Thomas,
einfach den gesamten Code von Nepumuk, in z.B, Modul 1, einfügen. Nepumuk hat da einen tollen Code bereit gestellt, der bestens funktioniert. Man kann sogar die Größe der virtuellen Tastatur ändern.
Einfachtol ...
Gruß, Dieter(Drummer)
Anzeige
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 09:40:57
Thomas
Ok, Habe es in ein Modul gepackt.
Wie rufe ich die Tastatur auf, wenn ich in ein Textfeld klicke?
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 10:04:08
Thomas
Hab's hinbekommen.
Vielen Vielen Dank an Nepumuk und Dieter(Drummer).
Ihr seid die besten !!!
AW: Der Dank gehört überwiegen Nepumuk, ...
01.03.2019 10:16:08
Dieter(Drummer)
... aber Danke für deine Rückmeldung.
Gruß, Dieter(Drummer)
AW: Virtuelle Tastatur öffnen VBA
01.03.2019 10:18:55
Nepumuk
Hallo Thomas,
versuch es mal so:
Private Sub TextBox1_Enter()
    Call LoadScreenKeyboard
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call UnloadScreenKeyboard
End Sub

Gruß
Nepumuk
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge