Да, это возможно с использованием Windows API.
Это сообщение содержит информацию о том, как получить все оконные ручки из активных процессов: 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);
}
}
}
}
И тогда вы можете переместить окно с помощью API Windows: 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);
Здесь расположены параметры для функции MoveWindow:
Для того, чтобы перемещаться окно, мы используем функцию MoveWindow, которая принимает дескриптора окна, координаты для верхнего угла, а также желаемую ширину и высоту в окне, основанной на экране координат. Функция MoveWindow определяется как:
MoveWindow (HWND HWND, Int пХ, Int Ny, Int nWidth, Int nHeight, BOOL bRepaint);
bRepaint флаг определяет, должен ли быть признана недействительной клиентская область , в результате чего сообщение WM_PAINT для отправки, позволяя клиентской области должно быть восстановлено. В качестве в сторону, экран координаты могут быть получены с использованием вызова, похожий на GetClientRect (GetDesktopWindow(), & rcDesktop) с rcDesktop быть переменная типа RECT, принятый ссылки.
(http://windows-programming.suite101.com/article.cfm/client_area_size_with_movewindow)
Использование механического турка - просто всплывающее окно и попросить пользователя сделать это для вас. Обязательно дайте подробные инструкции. : P Извините, просто развлекаюсь здесь ... – 2008-09-26 18:10:57