Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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...
Comme vous avez de nombreux userforms , je vous laisse décider duquel modifier :
VB:
Const Kb_Pgm = "Osk.exe"
Private Sub UserForm_Initialize()
CreateObject("Shell.Application").shellexecute _
CreateObject("Scripting.FileSystemObject").GetSpecialFolder(1) & "\" & Kb_Pgm
Me.Repaint
' ......
' ......
End Sub
Private Sub UserForm_Terminate()
Set Svc = GetObject("winmgmts:root\cimv2")
For Each Oproc In Svc.execQuery( _
"select * from win32_process " & _
" where name like '" & Kb_Pgm & "'")
Oproc.Terminate
Next
Set Oproc = Nothing
Set Svc = Nothing
End Sub
re @fanch55
ca ne fonctionne pas chez moi
il arrive parfois que vous ayez l'erreur "chemin introuvable" même si le chemin est correct
c'est peut être là a cause du statut grant administrator
même avec la mienne shell cmd
Code:
Private Sub OpenVirtualKeyboard1()
keyboard = Shell("CMD /C " & """" & "C:\Windows\System32\osk.exe" & """")
End Sub
Alors aux grand mot les grands remèdes
VB:
Option Explicit
Type SHELLEXECUTEINFO
cbSize As Long: fMask As Long: hwnd As Long: lpVerb As String: lpFile As String: lpParameters As String: lpDirectory As String: nShow As Long
hInstApp As Long: lpIDList As Long: lpClass As String: hkeyClass As Long: dwHotKey As Long: hIcon As Long: hProcess As Long
End Type
#If VBA7 Then
Public Declare PtrSafe Function ShellExecuteEx Lib "shell32.dll" (lpExecInfo As SHELLEXECUTEINFO) As LongPtr
Declare PtrSafe Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As LongPtr) As Boolean
Declare PtrSafe Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As LongPtr) As Boolean
#Else
Public Declare Function ShellExecuteEx Lib "shell32.dll" (lpExecInfo As SHELLEXECUTEINFO) As Long
Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As Long) As Boolean
Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" (ByRef ptr As Long) As Boolean
#End If
Sub OpenVirtualKeyboardApi()
Dim shInfo As SHELLEXECUTEINFO, lngPtr As Long
With shInfo
.cbSize = Len(shInfo)
.lpFile = "C:\Windows\Sysnative\cmd.exe" 'best to use Known folders here
.lpParameters = "/c start osk.exe"
.lpDirectory = "C:\windows\system32" 'best to use Known folders here
.lpVerb = "open"
.nShow = 0
End With
Call Wow64DisableWow64FsRedirection(lngPtr)
Call ShellExecuteEx(shInfo)
Call Wow64RevertWow64FsRedirection(lngPtr)
End Sub
on appelera "OpenVirtualKeyboardApi" ou on veut dans l'userform
Ah ben ça m'en bouche un coin ...
Chez moi, comme le dossier système est déclaré à l'origine dans ma variable d'environnement Path,
je peux appeler Osk en direct :
VB:
Private Sub UserForm_Initialize()
CreateObject("Shell.Application").shellexecute "Osk.exe"
End Sub
Et quand tu fais Win+R puis Osk, pas de problème ?
Merci Pat pour ce temps passé .
J'ai un compte Microsoft et un compte local, les 2 fonctionnent correctement.
La seule différence que je vois avec toi, c'est que mon office est 64 bits.
Ta proposition ne fonctionne pas chez moi ( pas d'erreur détectée )
Je ne sais pas si ça vaut le coup d'investiguer plus loin ... 🤔
De retour de la pétanque : oui, aucun problème de te fournir un coup de main, mais cela vaut -il l' effort de concurrencer l 'Osk et de prévoir toutes les langues ????
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD