OVH Cloud OVH Cloud

Démarrer dans...

5 réponses
Avatar
Jeff
Bonjour à tous,

Existe-t-il un moyen de spécifier un répertoire de travail (idem 'Démarrer
dans' des raccourcis) au lancement d'une appli avec la commande Shell ?

Merci

Jeff

5 réponses

Avatar
Jean-Pierre Thomasset
Jeff wrote:
Bonjour à tous,

Existe-t-il un moyen de spécifier un répertoire de travail (idem 'Démarrer
dans' des raccourcis) au lancement d'une appli avec la commande Shell ?



Pas avec la commande shell, mais avec l'api ShellExecute :
http://minilien.com/?LkDqLeX8Kd

A+,
JP.

--
Société TRILOGIX - Solutions alternatives
http://www.trilogix.fr/
Pour m'écrire, enlever le "nospam" dans l'adresse.
Avatar
Jacques93
Bonjour Jeff,
Jeff a écrit :
Bonjour à tous,

Existe-t-il un moyen de spécifier un répertoire de travail (idem 'Démarrer
dans' des raccourcis) au lancement d'une appli avec la commande Shell ?




Tu peux faire un ChDir avant la commande Shell

ChDir "C:"
Shell "cmd.exe"

Cependant, sous 2000/XP cela n'est opérationnel qu'avec certains
programmes, NotePad s'ouvre toujours dans 'Mes Documents', MsPaint dans
'Mes Images', etc... liés aux CSIDL :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

Quand à Word ou Excel, etc ils ont chacun leur répertoire par défaut.

La méthode indiquée par Jean-Pierre Thomasset, bien que très utile dans
bien des cas, suppose que l'on veuille ouvrir un fichier, le paramètre
'principal' de l'API ShellExecute étant un nom de fichier, et non une
application. L'application lancée dependra de l'association faite sur
une extension de fichier, et pourra donc être différente selon les
machines. Par exemple, un .bmp pourra être ouvert avec MsPaint sur une
machine ou Paint Shop Pro, ou une autre appli de dessin.

--
Cordialement,

Jacques.
Avatar
Jean-Pierre Thomasset
Jacques93 wrote:
Bonjour Jeff,

Tu peux faire un ChDir avant la commande Shell

ChDir "C:"
Shell "cmd.exe"



Attention, cette commande change le répertoire, mais pas le lecteur en
cours...

Cependant, sous 2000/XP cela n'est opérationnel qu'avec certains
programmes, NotePad s'ouvre toujours dans 'Mes Documents', MsPaint dans
'Mes Images', etc... liés aux CSIDL :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp



C'est vrai que cela dépend pas mal du programme qui est lancé : le
programme est libre d'utiliser ou non le chemin en cours.
(Pour info, chez moi notepad me propose toujours le chemin du dernier
fichier ouvert.)



Quand à Word ou Excel, etc ils ont chacun leur répertoire par défaut.

La méthode indiquée par Jean-Pierre Thomasset, bien que très utile dans
bien des cas, suppose que l'on veuille ouvrir un fichier, le paramètre
'principal' de l'API ShellExecute étant un nom de fichier, et non une
application. L'application lancée dependra de l'association faite sur
une extension de fichier, et pourra donc être différente selon les
machines. Par exemple, un .bmp pourra être ouvert avec MsPaint sur une
machine ou Paint Shop Pro, ou une autre appli de dessin.




Bon, c'est vrai, ce n'est pas prévu pour :). Toutefois on peux lancer à
peu près n'importe quel programme avec la commande shellexecute. Un
exemple :

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
Private Const SW_SHOWNORMAL = 1

Private Sub Command1_Click()
ShellExecute Me.hwnd, "Open", "monapp.exe", "", "c:temp",
SW_SHOWNORMAL
End Sub

En dernier recours, il ne reste que la fonction CreateProcess.

A+,
JP.

--
Société TRILOGIX - Solutions alternatives
http://www.trilogix.fr/
Pour m'écrire, enlever le "nospam" dans l'adresse.
Avatar
Jacques93
Bonjour Jean-Pierre Thomasset,
Jean-Pierre Thomasset a écrit :

ChDir "C:"
Shell "cmd.exe"



Attention, cette commande change le répertoire, mais pas le lecteur en
cours...



Exact, donc rectification :

ChDrive "Z:"
ChDir "Toto"

[...]


C'est vrai que cela dépend pas mal du programme qui est lancé : le
programme est libre d'utiliser ou non le chemin en cours.
(Pour info, chez moi notepad me propose toujours le chemin du dernier
fichier ouvert.)



Exact, chez moi aussi, répondu trop vite :-(
Ce qui pourrait se comprendre si on fait Démarrer => Exécuter =>
Notepad.exe. Mais il semble qu'il ignore totalement le paramètre
'Démarrer dans' des raccourcis.


En dernier recours, il ne reste que la fonction CreateProcess.




Ne crois tu pas que l'on retomberai sur les comportements décrits
précedemment en fonction de tel ou tel programme ?

--
Cordialement,

Jacques.
Avatar
Jeff
Merci

Je vais examiner vos solutions...

Jeff


"Jeff" a écrit dans le message de news:

Bonjour à tous,

Existe-t-il un moyen de spécifier un répertoire de travail (idem 'Démarrer
dans' des raccourcis) au lancement d'une appli avec la commande Shell ?

Merci

Jeff