Dans une application WPF, lorsqu'un utilisateur clique sur un bouton, je veux ouvrir l'explorateur Windows vers un certain répertoire, comment faire ?
Je m'attendrais à quelque chose comme ça :
Windows.OpenExplorer("c:\test");
Dans une application WPF, lorsqu'un utilisateur clique sur un bouton, je veux ouvrir l'explorateur Windows vers un certain répertoire, comment faire ?
Je m'attendrais à quelque chose comme ça :
Windows.OpenExplorer("c:\test");
Remarque : vous pouvez également utiliser cette fonction pour exécuter d'autres applications. Process.Start("calc.exe");
exécutera Calculator. Vous pouvez lui passer le chemin complet d'un exécutable et il l'exécutera.
LOL, oui, pourquoi pas. C'est drôle, j'avais Application.Run dans ma tête, je n'arrivais pas à obtenir l'omniprésent Process.Start et je pensais que WPF se moquait de moi.
Cela m'a aidé car j'essayais de charger l'explorateur et d'ajouter le dossier comme répertoire de travail en utilisant process.start. Merci pour la réponse.
Cela devrait fonctionner :
Process.Start(@"<directory goes here>")
Ou si vous souhaitez une méthode pour exécuter des programmes/ouvrir des fichiers et/ou des dossiers :
private void StartProcess(string path)
{
ProcessStartInfo StartInformation = new ProcessStartInfo();
StartInformation.FileName = path;
Process process = Process.Start(StartInformation);
process.EnableRaisingEvents = true;
}
Ensuite, appelez la méthode et mettez entre parenthèses soit le répertoire du fichier et/ou du dossier, soit le nom de l'application. J'espère que cela vous a aidé !
Vous pouvez utiliser System.Diagnostics.Process.Start
.
Vous pouvez aussi utiliser directement la WinApi avec quelque chose comme ce qui suit, qui lancera explorer.exe. Vous pouvez utiliser le quatrième paramètre de ShellExecute pour lui donner un répertoire de départ.
public partial class Window1 : Window
{
public Window1()
{
ShellExecute(IntPtr.Zero, "open", "explorer.exe", "", "", ShowCommands.SW_NORMAL);
InitializeComponent();
}
public enum ShowCommands : int
{
SW_HIDE = 0,
SW_SHOWNORMAL = 1,
SW_NORMAL = 1,
SW_SHOWMINIMIZED = 2,
SW_SHOWMAXIMIZED = 3,
SW_MAXIMIZE = 3,
SW_SHOWNOACTIVATE = 4,
SW_SHOW = 5,
SW_MINIMIZE = 6,
SW_SHOWMINNOACTIVE = 7,
SW_SHOWNA = 8,
SW_RESTORE = 9,
SW_SHOWDEFAULT = 10,
SW_FORCEMINIMIZE = 11,
SW_MAX = 11
}
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
IntPtr hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
ShowCommands nShowCmd);
}
Les déclarations proviennent du Site web de pinvoke.net .
Oui, j'ai eu des erreurs en poursuivant cela, je ne savais pas pour <strike>strike</strike> btw cool
Qui, malheureusement, ne fonctionne que dans les réponses / questions, mais pas dans les commentaires ;-). Je viens de mettre à jour.
+1 Je vais utiliser ce code pour lancer d'autres applications, mais la fonction Process.Start() était exactement ce dont j'avais besoin.
Voici ce qui a marché pour moi :
En gros, utilisez la ligne de commande pour appeler "start C:/path". Et quittez le terminal après, donc "start c:/path && exit".
WindowsExplorerOpen(@"C:/path");
public static void WindowsExplorerOpen(string path)
{
CommandLine(path, $"start {path}");
}
private static void CommandLine(string workingDirectory, string Command)
{
ProcessStartInfo ProcessInfo;
Process Process;
ProcessInfo = new ProcessStartInfo("cmd.exe", "/K " + Command + " && exit");
ProcessInfo.WorkingDirectory = workingDirectory;
ProcessInfo.CreateNoWindow = true;
ProcessInfo.UseShellExecute = true;
ProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process = Process.Start(ProcessInfo);
Process.WaitForExit();
}
Aucun des deux n'a fonctionné pour moi :
Process.Start(@"c:\test");
Process.Start("explorer.exe" , @"C:\Users");
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.