8
votes

Comment réutiliser la fenêtre Explorateur Windows existante / déjà ouverte pour lancer Explorer

J'ai une application qui utilise fréquemment le lancement Explorer.exe. Je souhaite réutiliser des fenêtres d'exploration existantes / déjà ouvertes au lieu de créer une nouvelle chaque fois que je démarre le processus.

Voici ce que mon code ressemble à: p>

var processes = System.Diagnostics.Process.GetProcesses(Environment.MachineName);int kills = 0;
for (int i = 0; i < processes.Length; i++)
{
    System.Diagnostics.Process p = processes[i];
    if (p.ProcessName == "explorer" && kills < 1)
        ++kills
    p.Kill();
}


4 commentaires

Que se passe-t-il si votre utilisateur dispose d'une fenêtre d'explorateur ouverte à un répertoire d'une autre raison et ne veut pas être retirée de ce répertoire? Pensez-vous que cette approche pourrait faire frustration de vos utilisateurs?


C'est une préoccupation valable, toujours, mes utilisateurs ont déclaré qu'ils venaient de dire qu'ils voulaient réutiliser des fenêtres d'exploration existantes, au lieu d'avoir mon application ouverte de nouvelles copies à chaque fois. Sinon, je devrais déterminer exactement quels Windows exploratrices ont été ouverts par mon application et ne réutiliser que de la réutilisation.


Voir aussi Stackoverflow.com/questions/3010305/...


J'ai mis en place ceci en C # à ce Réponse


3 Réponses :


1
votes

the iShellwindows interface COM Vous donnera une liste des fenêtres ouvertes de l'Explorateur, vous pouvez obtenir l'adresse de n'importe quelle fenêtre Explorer, voir cette entrée de blog pour un échantillon C ++. Je doute que .NET a une implémentation native de cela, vous avez donc probablement besoin de pinvoke


2 commentaires

Cela peut être utile, je vais jeter un coup d'œil, même si je cherchais quelque chose de plus dans le sens de "Voici une extraction de code de la façon de faire ça ..."


Donc, il n'y a vraiment aucune option de ligne de commande pour réutiliser les fenêtres existantes précédemment? impair...



0
votes

Une autre option serait (si vous ne connaissez pas la HWND de la fenêtre de l'explorateur, vous avez déjà ouvert / souhaitez réutiliser) énumérer et trouver la fenêtre avec un titre qui "ressemble" à ce que vous voulez, puis instructez cette fenêtre venir au premier plan. Il ne révélerait pas le fichier exact que vous voulez, mais cela pourrait être plus simple que d'autres options :)


0 commentaires

0
votes

Ceci est trop compliqué, alors ne faites pas ça. Essayez cela à la place-

start explorer.exe


0 commentaires