using System;
using System.Drawing;
using System.Collections.Generic;
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
Dictionary<string, IntPtr> windows = new Dictionary<string, IntPtr>();
foreach (IntPtr window in BFS.Window.GetVisibleAndMinimizedWindowHandles())
{
if (IsDisplayFusionWindowOrHiddenExplorerWindow(window))
continue;
string title = BFS.Window.GetText(window);
if(string.IsNullOrEmpty(title))
continue;
if(windows.ContainsKey(title))
{
int i;
for(i = 1; windows.ContainsKey(title + "(" + i + ")") ; i++)
{
}
windows.Add(title + "(" + i + ")", window);
}
else
{
windows.Add(title, window);
}
}
string selectedWindow = BFS.Dialog.GetUserInputListViewWithFilter("Select the window to move...", new List<string>(windows.Keys).ToArray());
BFS.Window.Focus(windows[selectedWindow]);
BFS.Window.SetWindowHighlight(windows[selectedWindow], Color.Red);
BFS.General.ThreadWait(5000);
BFS.Window.RemoveWindowHighlight(windows[selectedWindow]);
}
private static bool IsDisplayFusionWindowOrHiddenExplorerWindow(IntPtr window)
{
//ignore any DisplayFusion windows (title bar buttons, etc.)
//ignore pesky hidden explorer.exe windows
if((BFS.Window.GetClass(window).StartsWith("DF", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("EdgeUiInputTopWndClass", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("EdgeUiInputWndClass", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("NativeHWNDHost", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("ModeInputWnd", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("MetroGhostWindow", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("ImmersiveLauncher", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("ApplicationManager_ImmersiveShellWindow", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("Shell_TrayWnd", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("WorkerW", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("Progman", StringComparison.OrdinalIgnoreCase)) ||
(BFS.Window.GetClass(window).Equals("SearchPane", StringComparison.OrdinalIgnoreCase)))
{
return true;
}
return false;
}
}