Comment minimiser/maximiser les Applications ouvertes
J'ai la liste des Applications ouvertes. Pour obtenir cette liste, j'ai utilisé le code suivant
internal static class NativeMethods
{
public static readonly Int32 GWL_STYLE = -16;
public static readonly UInt64 WS_VISIBLE = 0x10000000L;
public static readonly UInt64 WS_BORDER = 0x00800000L;
public static readonly UInt64 DESIRED_WS = WS_BORDER | WS_VISIBLE;
public delegate Boolean EnumWindowsCallback(IntPtr hwnd, Int32 lParam);
public static List<WindowWrapper> GetAllWindows()
{
List<WindowWrapper> windows = new List<WindowWrapper>();
StringBuilder buffer = new StringBuilder(100);
EnumWindows(delegate(IntPtr hwnd, Int32 lParam)
{
if ((GetWindowLongA(hwnd, GWL_STYLE) & DESIRED_WS) == DESIRED_WS)
{
GetWindowText(hwnd, buffer, buffer.Capacity);
WindowWrapper wnd = new WindowWrapper();
wnd.handle = hwnd;
wnd.title = buffer.ToString();
windows.Add(wnd);
}
return true;
}, 0);
return windows;
}
[DllImport("user32.dll")]
static extern Int32 EnumWindows(EnumWindowsCallback lpEnumFunc, Int32 lParam);
[DllImport("user32.dll")]
public static extern void GetWindowText(IntPtr hWnd, StringBuilder lpString, Int32 nMaxCount);
[DllImport("user32.dll")]
static extern UInt64 GetWindowLongA(IntPtr hWnd, Int32 nIndex);
}
public class WindowWrapper : IWin32Window
{
internal IntPtr handle;
internal String title;
public IntPtr Handle
{
get { return handle; }
}
public String Title
{
get { return title; }
}
}
appeler cela j'ai utilisé le code suivant
foreach (var wnd in NativeMethods.GetAllWindows())
{
string caption = wnd.title;
string handle = wnd.Handle
//Add this caption and handle to list
}
Maintenant, l'Utilisateur doit sélectionner la fenêtre ouverte à partir de la liste et ma tâche est de lire la légende de la fenêtre sélectionnée, obtenir le handle de processus et maximiser/minimiser ou de fermer la fenêtre. Comment puis-je faire cela.
Double Possible de Restaurer une fenêtre réduite d'une autre application
OriginalL'auteur sandeep.gosavi | 2013-09-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
findwindowbycaption
pour obtenir la poignée puis de maximiser ou de minimiser avecshowwindow
Puis dans votre code que vous utilisez ce:
Bien qu'il semble que vous avez déjà les légendes de fenêtre par l'aide de
EnumWindows
dans ce cas, vous avez seulement besoin de:i
est l'index de la fenêtre.pour fermer la fenêtre que vous allez utiliser:
dans le code:
c'est le non géré version de
system.windows.forms.form.close()
ou vous pouvez utiliser:
ou vous pouvez utiliser:
dans le code:
mise à jour de la réponse
DestroyWindow/CloseWindow ne ferme la fenêtre, pourquoi?
Cet exemple est utile: stackoverflow.com/a/1698746/2027232
Nicolas Tyler, j'ai eu la réponse dans le lien que vous avez fourni, merci beaucoup
OriginalL'auteur Nicolas Tyler
Vous pouvez utiliser la méthode native ShowWindow avec SW_MAXIMIZE, SW_MINIMIZE pour ncmdShow
Jetez un oeil à http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs. 85).aspx
Votre réponse est juste. pouvons-nous obtenir le handle de fenêtre ou si nous n'en connaissons que sa légende
Vous avez des poignées dans votre WindowWrapper, il serait plus efficace de les stocker en tant que légende de la fenêtre peut être modifiée par l'application elle-même l'exécution en arrière plan.
En fait, je suis entrain de créer une application que l'utilisateur va stocker la légende de la fenêtre qu'il/elle veut maximiser/minimiser/fermer à l'heure spécifiée, jusqu'à ce que la fenêtre sera ouverte. Mon code sera lu légende à partir de la base de données. la même chose peut arriver sur une autre machine qui aura même fenêtre ouverte. Maintenant, une autre machine n'aura pas la même poignée de code sur la machine locale, donc j'ai besoin de manipuler du code de procédure de la part de sa légende
Je vois, il y a de l'API Windows la fonction FindWindow qui peut le faire msdn.microsoft.com/en-us/library/windows/desktop/... Juste mis ClassName à NULL et l'utilisation de votre légende pour WindowsName
OriginalL'auteur Maksym Markov
vous pouvez utiliser ShowWindowAsync
et c'est mieux et d'utiliser
pour obtenir les fenêtres ouvertes
J'ai test MainWindowTitle dans Porcess et il contribue à la recherche sur la fenêtre étant donné sa légende.
voir modification pourrait aider
Le seul moyen qui fonctionne pour mon application WPF, merci!
OriginalL'auteur Alyafey