J'essaie de lancer le clavier visuel sous Win7-64 depuis une appli 32
bits, avec CreateProcess(0,"C:\\Windows\\System32\\Osk.exe",...) mais je
n'obtiens qu'une pop-up "Impossible de démarrer le clavier visuel". Si
j'ai bien compris, on ne peut pas lancer un utilitaire 64 bits depuis
une appli 32 bits, mais je suppose que ce n'est pas le cas ici ?
J'ajoute que c'est pareil avec ShellExecute(), mais si je copie OSK.EXE vers le répertoire d'installation de mon appli, je peux le lancer à cet endroit sans problème. Une explication ?
J'ajoute que c'est pareil avec ShellExecute(), mais si je copie OSK.EXE
vers le répertoire d'installation de mon appli, je peux le lancer à cet
endroit sans problème. Une explication ?
J'ajoute que c'est pareil avec ShellExecute(), mais si je copie OSK.EXE vers le répertoire d'installation de mon appli, je peux le lancer à cet endroit sans problème. Une explication ?
Laurent
"Bertrand Lenoir-Welter" a écrit dans le message de news: 4eb7d952$0$30756$
Bonjour à tous
J'essaie de lancer le clavier visuel sous Win7-64 depuis une appli 32 bits, avec CreateProcess(0,"C:WindowsSystem32Osk.exe",...) mais je n'obtiens qu'une pop-up "Impossible de démarrer le clavier visuel". Si j'ai bien compris, on ne peut pas lancer un utilitaire 64 bits depuis une appli 32 bits, mais je suppose que ce n'est pas le cas ici ?
"Bertrand Lenoir-Welter" <bertrand-dot-2011@galaad-dot-net> a écrit dans le
message de news: 4eb7d952$0$30756$ba4acef3@reader.news.orange.fr...
Bonjour à tous
J'essaie de lancer le clavier visuel sous Win7-64 depuis une appli 32
bits, avec CreateProcess(0,"C:\Windows\System32\Osk.exe",...) mais je
n'obtiens qu'une pop-up "Impossible de démarrer le clavier visuel". Si
j'ai bien compris, on ne peut pas lancer un utilitaire 64 bits depuis une
appli 32 bits, mais je suppose que ce n'est pas le cas ici ?
Tout tuyau bienvenu, merci d'avance.
Ils en parlent là :peut-etre
http://blog.delphi-jedi.net/2010/11/29/how-to-run-the-onscreenkeyboard/
"Bertrand Lenoir-Welter" a écrit dans le message de news: 4eb7d952$0$30756$
Bonjour à tous
J'essaie de lancer le clavier visuel sous Win7-64 depuis une appli 32 bits, avec CreateProcess(0,"C:WindowsSystem32Osk.exe",...) mais je n'obtiens qu'une pop-up "Impossible de démarrer le clavier visuel". Si j'ai bien compris, on ne peut pas lancer un utilitaire 64 bits depuis une appli 32 bits, mais je suppose que ce n'est pas le cas ici ?
Ok, merci. Mais j'ai résolu le problème en faisant une copie locale de OSK.EXE. Les voies de Microsoft sont parfois tortueuses.
Jean-Christophe
On 7 nov, 18:51, Bertrand Lenoir-Welter
j'ai résolu le problème en faisant une copie locale de OSK.EXE. Les voies de Microsoft sont parfois tortueuses.
Ok, mais ca manque un peu d'élégance ... Quelle est la valeur retournée par ShellExecute ?
0 The operating system is out of memory or resources. ERROR_FILE_NOT_FOUND The specified file was not found. ERROR_PATH_NOT_FOUND The specified path was not found. ERROR_BAD_FORMAT The .exe file is invalid (non-Win32® .exe or error in .exe image). SE_ERR_ACCESSDENIED The operating system denied access to the specified file. SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid. SE_ERR_DDEBUSY The DDE transaction could not be completed because other DDE transactions were being processed. SE_ERR_DDEFAIL The DDE transaction failed. SE_ERR_DDETIMEOUT The DDE transaction could not be completed because the request timed out. SE_ERR_DLLNOTFOUND The specified dynamic-link library was not found. SE_ERR_FNF The specified file was not found. SE_ERR_NOASSOC There is no application associated with the given file name extension. SE_ERR_OOM There was not enough memory to complete the operation. SE_ERR_PNF The specified path was not found. SE_ERR_SHARE A sharing violation occurred.
Si je tape "osk.exe" dans une console DOS ca marche bien depuis n'importe quel répertoire. ( vu que osk.exe est dans le chemin des commandes )
Ou encore cela : ShellExecute( hwnd, "open", "osk.exe", NULL, "repertoire_de_ton_programme", SW_SHOWNORMAL );
On 7 nov, 18:51, Bertrand Lenoir-Welter
j'ai résolu le problème en faisant une copie locale de
OSK.EXE. Les voies de Microsoft sont parfois tortueuses.
Ok, mais ca manque un peu d'élégance ...
Quelle est la valeur retournée par ShellExecute ?
0 The operating system is out of memory or resources.
ERROR_FILE_NOT_FOUND The specified file was not found.
ERROR_PATH_NOT_FOUND The specified path was not found.
ERROR_BAD_FORMAT The .exe file is invalid (non-Win32® .exe or error
in .exe image).
SE_ERR_ACCESSDENIED The operating system denied access to the
specified file.
SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or
invalid.
SE_ERR_DDEBUSY The DDE transaction could not be completed because
other DDE transactions were being processed.
SE_ERR_DDEFAIL The DDE transaction failed.
SE_ERR_DDETIMEOUT The DDE transaction could not be completed because
the request timed out.
SE_ERR_DLLNOTFOUND The specified dynamic-link library was not
found.
SE_ERR_FNF The specified file was not found.
SE_ERR_NOASSOC There is no application associated with the given file
name extension.
SE_ERR_OOM There was not enough memory to complete the operation.
SE_ERR_PNF The specified path was not found.
SE_ERR_SHARE A sharing violation occurred.
Si je tape "osk.exe" dans une console DOS
ca marche bien depuis n'importe quel répertoire.
( vu que osk.exe est dans le chemin des commandes )
j'ai résolu le problème en faisant une copie locale de OSK.EXE. Les voies de Microsoft sont parfois tortueuses.
Ok, mais ca manque un peu d'élégance ... Quelle est la valeur retournée par ShellExecute ?
0 The operating system is out of memory or resources. ERROR_FILE_NOT_FOUND The specified file was not found. ERROR_PATH_NOT_FOUND The specified path was not found. ERROR_BAD_FORMAT The .exe file is invalid (non-Win32® .exe or error in .exe image). SE_ERR_ACCESSDENIED The operating system denied access to the specified file. SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid. SE_ERR_DDEBUSY The DDE transaction could not be completed because other DDE transactions were being processed. SE_ERR_DDEFAIL The DDE transaction failed. SE_ERR_DDETIMEOUT The DDE transaction could not be completed because the request timed out. SE_ERR_DLLNOTFOUND The specified dynamic-link library was not found. SE_ERR_FNF The specified file was not found. SE_ERR_NOASSOC There is no application associated with the given file name extension. SE_ERR_OOM There was not enough memory to complete the operation. SE_ERR_PNF The specified path was not found. SE_ERR_SHARE A sharing violation occurred.
Si je tape "osk.exe" dans une console DOS ca marche bien depuis n'importe quel répertoire. ( vu que osk.exe est dans le chemin des commandes )
résolu le problème en faisant une copie locale de OSK.EXE.
Si tu créées un batch dans le répertoire de ton programme ( genre toto.bat ) dans lequel tu écris l'unique ligne
osk.exe
ou peut-être
c:windowssystem32osk.exe
et que tu appelles ce batch depuis ton programme, est-ce que ca marche ?
Bertrand Lenoir-Welter
Ok, mais ca manque un peu d'élégance ...
Si ça marche, c'est élégant. C'est pas pour la place qu'occupe le programme en question.
Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mais il affiche une pop-up "Impossible de démarrer le clavier visuel".
Le batch est en effet une solution.
Merci
Ok, mais ca manque un peu d'élégance ...
Si ça marche, c'est élégant. C'est pas pour la place qu'occupe le
programme en question.
Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme
OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mais
il affiche une pop-up "Impossible de démarrer le clavier visuel".
Si ça marche, c'est élégant. C'est pas pour la place qu'occupe le programme en question.
Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mais il affiche une pop-up "Impossible de démarrer le clavier visuel".
Le batch est en effet une solution.
Merci
Jean-Christophe
On 7 nov, 14:30, Bertrand Lenoir-Welter
| Ok, mais ca manque un peu d'élégance ...
Si ça marche, c'est élégant.
Il ne suffit pas que ca marche pour que ce soit élégant : on peut toujours faire tourner un truc par la force brute, mais c'est mieux de minimiser les ressources pour un même résultat.
C'est pas pour la place qu'occupe le programme en question.
Mais ca reste incohérent d'avoir deux copies du même exécutable. Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète (voire inutilisable) celui que tu as copié dans ton répertoire, ca t'oblige à le copier de nouveau, et seulement après t'être rendu compte que ca ne marchait plus. Le batch supprime déja ce problème, mais il y a sûrement mieux à faire.
| Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mai s il affiche une pop-up "Impossible de démarrer le clavier visuel".
Ok.
Le batch est en effet une solution.
Disons que ca évite une copie brutale de l'exécutable, mais c'est juste un test.
Est-ce que tu lances ton programme avec des droits admin ? ( j'ai eu ce genre de problème avec un de mes softs qui accédait à la base de registres sous Win7 alors que ca marchait bien sous WinXP )
Il ne suffit pas que ca marche pour que ce soit élégant :
on peut toujours faire tourner un truc par la force brute,
mais c'est mieux de minimiser les ressources pour un même résultat.
C'est pas pour la place qu'occupe le programme en question.
Mais ca reste incohérent d'avoir deux copies du même exécutable.
Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète
(voire inutilisable) celui que tu as copié dans ton répertoire,
ca t'oblige à le copier de nouveau, et seulement
après t'être rendu compte que ca ne marchait plus.
Le batch supprime déja ce problème,
mais il y a sûrement mieux à faire.
| Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme
OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mai s
il affiche une pop-up "Impossible de démarrer le clavier visuel".
Ok.
Le batch est en effet une solution.
Disons que ca évite une copie brutale
de l'exécutable, mais c'est juste un test.
Est-ce que tu lances ton programme avec des droits admin ?
( j'ai eu ce genre de problème avec un de mes softs qui accédait à la
base de registres sous Win7 alors que ca marchait bien sous WinXP )
Il ne suffit pas que ca marche pour que ce soit élégant : on peut toujours faire tourner un truc par la force brute, mais c'est mieux de minimiser les ressources pour un même résultat.
C'est pas pour la place qu'occupe le programme en question.
Mais ca reste incohérent d'avoir deux copies du même exécutable. Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète (voire inutilisable) celui que tu as copié dans ton répertoire, ca t'oblige à le copier de nouveau, et seulement après t'être rendu compte que ca ne marchait plus. Le batch supprime déja ce problème, mais il y a sûrement mieux à faire.
| Quelle est la valeur retournée par ShellExecute ?
CreateProcess et ShellExecute ne retournent pas d'erreur. Le programme OSK.EXE monte en mémoire, son icone est dans la barre des tâches, mai s il affiche une pop-up "Impossible de démarrer le clavier visuel".
Ok.
Le batch est en effet une solution.
Disons que ca évite une copie brutale de l'exécutable, mais c'est juste un test.
Est-ce que tu lances ton programme avec des droits admin ? ( j'ai eu ce genre de problème avec un de mes softs qui accédait à la base de registres sous Win7 alors que ca marchait bien sous WinXP )
Il ne suffit pas que ca marche pour que ce soit élégant : on peut toujours faire tourner un truc par la force brute, mais c'est mieux de minimiser les ressources pour un même résultat.
Ce n'est pas de la force brute, c'est juste que je n'ai pas d'autre solution et que j'ai besoin de faire tourner ce truc. Mon appli doit marcher sur un écran tactile et j'ai pas envie de réinventer la roue. Un simple CopyFile, c'est quand même pas si vilain.
Mais ca reste incohérent d'avoir deux copies du même exécutable.
Sauf qu'il y a une copie qui marche et une qui marche pas. Je vais pas passer des heures avec ça.
Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète (voire inutilisable) celui que tu as copié dans ton répertoire, ca t'oblige à le copier de nouveau, et seulement après t'être rendu compte que ca ne marchait plus.
Je fais un CopyFile au lancement du programme. Comme ça, il est à jour. Au demeurant, je n'ai pas vraiment besoin de le voir évoluer. Tel qu'il est, il remplit parfaitement son office.
Le batch supprime déja ce problème, mais il y a sûrement mieux à faire.
Le batch ne marche pas : même message d'erreur. Je suppose que le ShellExecute lancé par mon appli reste en 32 bits.
Est-ce que tu lances ton programme avec des droits admin ?
Oui, j'avais fait ça après avoir essayé CreateProcess. Même problème.
Il ne suffit pas que ca marche pour que ce soit élégant :
on peut toujours faire tourner un truc par la force brute,
mais c'est mieux de minimiser les ressources pour un même résultat.
Ce n'est pas de la force brute, c'est juste que je n'ai pas d'autre
solution et que j'ai besoin de faire tourner ce truc. Mon appli doit
marcher sur un écran tactile et j'ai pas envie de réinventer la roue. Un
simple CopyFile, c'est quand même pas si vilain.
Mais ca reste incohérent d'avoir deux copies du même exécutable.
Sauf qu'il y a une copie qui marche et une qui marche pas. Je vais pas
passer des heures avec ça.
Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète
(voire inutilisable) celui que tu as copié dans ton répertoire,
ca t'oblige à le copier de nouveau, et seulement
après t'être rendu compte que ca ne marchait plus.
Je fais un CopyFile au lancement du programme. Comme ça, il est à jour.
Au demeurant, je n'ai pas vraiment besoin de le voir évoluer. Tel qu'il
est, il remplit parfaitement son office.
Le batch supprime déja ce problème,
mais il y a sûrement mieux à faire.
Le batch ne marche pas : même message d'erreur. Je suppose que le
ShellExecute lancé par mon appli reste en 32 bits.
Est-ce que tu lances ton programme avec des droits admin ?
Il ne suffit pas que ca marche pour que ce soit élégant : on peut toujours faire tourner un truc par la force brute, mais c'est mieux de minimiser les ressources pour un même résultat.
Ce n'est pas de la force brute, c'est juste que je n'ai pas d'autre solution et que j'ai besoin de faire tourner ce truc. Mon appli doit marcher sur un écran tactile et j'ai pas envie de réinventer la roue. Un simple CopyFile, c'est quand même pas si vilain.
Mais ca reste incohérent d'avoir deux copies du même exécutable.
Sauf qu'il y a une copie qui marche et une qui marche pas. Je vais pas passer des heures avec ça.
Si une mise à jour de Windows modifie osk.exe et/ou rend obsolète (voire inutilisable) celui que tu as copié dans ton répertoire, ca t'oblige à le copier de nouveau, et seulement après t'être rendu compte que ca ne marchait plus.
Je fais un CopyFile au lancement du programme. Comme ça, il est à jour. Au demeurant, je n'ai pas vraiment besoin de le voir évoluer. Tel qu'il est, il remplit parfaitement son office.
Le batch supprime déja ce problème, mais il y a sûrement mieux à faire.
Le batch ne marche pas : même message d'erreur. Je suppose que le ShellExecute lancé par mon appli reste en 32 bits.
Est-ce que tu lances ton programme avec des droits admin ?
Bonjour, As-tu essayé d'ajouter un manifest gérant le mode de compatibilité ?
Bertrand Lenoir-Welter
As-tu essayé d'ajouter un manifest gérant le mode de compatibilité ?
Je sais même pas ce que c'est. Mais bon, la solution consistant à faire une copie locale d'OSK.EXE au lancement de l'appli marche bien. C'est efficace à défaut d'être canonique.
Merci pour les réponses, en tout cas.
As-tu essayé d'ajouter un manifest gérant le mode de compatibilité ?
Je sais même pas ce que c'est. Mais bon, la solution consistant à faire
une copie locale d'OSK.EXE au lancement de l'appli marche bien. C'est
efficace à défaut d'être canonique.
As-tu essayé d'ajouter un manifest gérant le mode de compatibilité ?
Je sais même pas ce que c'est. Mais bon, la solution consistant à faire une copie locale d'OSK.EXE au lancement de l'appli marche bien. C'est efficace à défaut d'être canonique.