Любое ли окно можно подвинуть, т.е. послать WM_MOVE или использовать MoveWindow? Что-то с calc.exe из win98 у меня не прокатывает..
Был не прав, MoveWindow работает! Но не работает установка параметров окна через STARTUPINFO структуру при запуске через CreateProcess.
Вроде уже же выясняли, что на эту структуру всем наложить. В том числе и ее изобретателям. Структура, бесспорно, полезная, но не необходимая и потому на ее обработку в таких мега-прогах, как блокнот, калк, паинт и прочая, все забили. Осмелюсь заметить, что правильно сделали.
n0p > потому на ее обработку в таких мега-прогах, как блокнот, калк, А мне вот надоело что он где попало появляется, да ещё нужно каждый раз в HEX режим переключать после старта, решил написать ему loader Код (Text): format PE GUI 4.0 entry start include '%fasminc%\win32a.inc' INFINITE = 0FFFFFFFFh ; Infinite timeout section '.code' code readable executable align 4 proc EnumChildWindowsFunc, hwnd, lParam .Buff rb 64 enter lea eax, [.Buff] invoke GetWindowText, [hwnd], eax, 64 lea eax, [.Buff] invoke lstrcmpi, ButtonText, eax test eax, eax jnz @F invoke SendMessage, [hwnd], WM_LBUTTONDOWN, 1, 0 invoke SendMessage, [hwnd], WM_LBUTTONUP, 1, 0 xor eax, eax jmp .finish @@: xor eax, eax inc eax .finish: return endp align 4 proc EnumWindowsFunc, hwnd, lParam .Buff rb 256 .WndRect RECT enter lea eax, [.Buff] invoke GetWindowText, [hwnd], eax, 256 lea eax, [.Buff] invoke lstrcmpi, WindowText, eax test eax, eax jnz @F lea eax, [.WndRect] invoke GetWindowRect, [hwnd], eax push TRUE mov eax, [.WndRect.bottom] sub eax, [.WndRect.top] push eax mov eax, [.WndRect.right] sub eax, [.WndRect.left] push eax push 150 push 200 push [hwnd] call [MoveWindow] invoke EnumChildWindows, [hwnd], EnumChildWindowsFunc, 0 xor eax, eax jmp .finish @@: xor eax, eax inc eax .finish: return endp align 4 start: mov edi, sBuff invoke GetWindowsDirectory, edi, 260 test eax, eax jz @exit invoke lstrcat, edi, szFileName test eax, eax jz @exit mov [StartupInfo.cb], sizeof.STARTUPINFO xor esi, esi invoke CreateProcess, esi, edi, esi, esi, esi, NORMAL_PRIORITY_CLASS,\ esi, esi, StartupInfo, ProcessInfo test eax, eax jz @exit invoke WaitForInputIdle, [ProcessInfo.hProcess], INFINITE invoke CloseHandle, [ProcessInfo.hThread] invoke CloseHandle, [ProcessInfo.hProcess] invoke EnumWindows, EnumWindowsFunc, esi @exit: invoke ExitProcess, esi section '.data' data readable writeable szFileName db '\Calc.exe',0 WindowText db 'Калькулятор',0 ButtonText db 'Hex',0 section '.udata' readable writeable StartupInfo STARTUPINFO ProcessInfo PROCESSINFO sBuff rb 260 section '.idata' import data readable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include '%fasminc%\APIA\KERNEL32.INC' include '%fasminc%\APIA\USER32.INC'