Tak, jest to możliwe przy użyciu interfejsu API systemu Windows.
Ten wpis nie zawiera informacji o tym, jak uzyskać wszystkie okna uchwyty z aktywnych procesów: http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=35545
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Process[] procs = Process.GetProcesses();
IntPtr hWnd;
foreach(Process proc in procs)
{
if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
{
Console.WriteLine("{0} : {1}", proc.ProcessName, hWnd);
}
}
}
}
a następnie można przenieść okno przy użyciu Windows API: http://www.devasp.net/net/articles/display/689.html
[DllImport("User32.dll", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
...
MoveWindow((IntPtr)handle, (trackBar1.Value*80), 20 , (trackBar1.Value*80)-800, 120, true);
Oto parametry funkcji MoveWindow:
Aby się przenieść Okno używamy funkcję MoveWindow, która przyjmuje uchwyt okna, współrzędne na górnym rogu, a także żądaną szerokość i wysokość okna , opartych na ekranie współrzędnych. Funkcja MoveWindow jest zdefiniowany jako:
MoveWindow (HWND hWnd int nX, Int NY, Int nWidth int nHeight, bool bRepaint);
bRepaint flag określa, czy obszar roboczy powinny być unieważnione, powodując wiadomość WM_PAINT do wysłania, pozwalając obszaru roboczego zostać przemalowane. Jako bok, ekranu koordynuje można otrzymać stosując połączenie podobny do GetClientRect (GetDesktopWindow(), & rcDesktop) z rcDesktop będąc zmienna typu rect zapadają odniesienia.
(http://windows-programming.suite101.com/article.cfm/client_area_size_with_movewindow)
użycie mechanicznego Turka - po prostu pojawiają się okno komunikatu i poprosić użytkownika, aby to zrobić dla ciebie. Pamiętaj, aby podać szczegółowe instrukcje. : P Przykro mi, po prostu bawię się tutaj ... –