XL 2016 Ouvrir clavier virtuel en VBA7 (win10)

ahart68

XLDnaute Nouveau
Bonjour,
Je souhaiterais lancer le programme osk.exe (clavier virtuel) après un double clic dans une textbox d'un userform.
J'ai essayé plusieurs codes trouvés sur différents forums, en vain :-(
Via la commande SHELL, j'ai toujours l'erreur "Argument ou appel de procédure incorrect".
Le chemin c:\windows\system32\osk.exe fonctionne très bien néanmoins, mais pas via la comande SHELL.

Une idée ?

Dim RetVal
RetVal = Shell("c:\windows\system32\osk.exe", 1)

Merci d'avance !!!
 

fanch55

XLDnaute Barbatruc
Essayez ceci, cela fonctionne sur mon Pc, mais il a fallu que je dise à mon Anti-virus de ne pas bloquer les scripts lancés par Excel :
VB:
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Shell ("CMD /C " & """" & "C:\Windows\System32\osk.exe" & """")
End Sub
 

ahart68

XLDnaute Nouveau
Merci à vous pour vos réponses plus que rapides !!

@fanch55 : merci mais j'avais déjà essayé ce code, même erreur...
@kiki29 : j'ai trouvé un bout de code qui fonctionne...finalement...grâce à ton lien.... :cool:

J'ai copié le code ci-dessous, au cas où quelqu'un en aurait besoin :

Option Explicit
Dim lngPtr As Long
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

'Call Wow64DisableWow64FsRedirection prior to calling ShellExecute and Wow64RevertWow64FsRedirection, immediately after.
Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As Long) As Boolean
Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As Long) As Boolean

Private Function ShowKeyboard()
Call Wow64DisableWow64FsRedirection(lngPtr)
ShellExecute 0, "open", "osk.exe", "", "", vbNormalFocus
Call Wow64RevertWow64FsRedirection(lngPtr)
End Function

Private Function HideKeyboard()
Call Wow64DisableWow64FsRedirection(lngPtr)
ShellExecute 0, "open", "tskill", "osk", "", vbHidden
Call Wow64RevertWow64FsRedirection(lngPtr)
End Function
 

ahart68

XLDnaute Nouveau
J'abuse....mais j'ai d'autres questions :

1) comment appelle-t-on une fonction ?
(je dois exécuter la fonction d'ouverture après un double clic sur mon textbox et la fonction fermeture quand je quitte l'userform)

2) comment définir l'emplacement de mon clavier à l'ouverture, pour qu'il ne cache pas la Textbox en question ?

Merci encore....
 

Statistiques des forums

Discussions
312 320
Messages
2 087 218
Membres
103 497
dernier inscrit
JP9231