Во-первых: Java, вероятно, не самый подходящий язык для этой задачи.Вам нужно вызвать собственный API Windows, так что C / C ++ будет естественным подгонкой.Вы можете использовать Java с JNI, но это, вероятно, не стоит хлопот.Я не знаю о C # / Managed C ++, поэтому не могу что-то сказать об этом.
Получение списка текущих окон: http://support.microsoft.com/kb/183009
Изменение положения окна:
SetWindowPos
SetWindowPlacement
Вам также может понадобиться получать информацию при каждом изменении окна.Посмотрите, например, SetWindowsHookEx, особенно CBTHook.
Редактировать: В прошлый раз, когда я пытался, мне всегда разрешалось менять окна других процессов.Если это больше не разрешено в Windows7, вы всегда можете установить глобальный хук и изменить окна изнутри процесса ...