IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Проблема с CreateProcess
Unconnected
сообщение 21.06.2010 17:31
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Открываю процесс через CreateProcess, и надобно мне, чтобы окно его создавалось не где придётся, а там, где мне надо. В структуре типа TStartUpInfo полям dwX и dwY присваиваю некоторые значения. Но бестолку, блокнот, например, где был при прошлом ручном запуске, там и остался, при программном.

Procedure createpad;
var StInfo : TStartupInfo;
SeAttr : TSecurityAttributes;
ProcInfo : TProcessInformation;
ProcHandle : THandle;
begin
FillChar(StInfo,SizeOf(StInfo),0);
StInfo.cb := SizeOf(StInfo);
stInfo.dwFlags:=STARTF_USESHOWWINDOW;
StInfo.wShowWindow:=SW_SHOWDEFAULT;
stinfo.dwX:=1000;
stinfo.dwY:=730;
with SeAttr do begin
nLength:=SizeOf(SeAttr);
bInheritHandle:=true;
lpSecurityDescriptor:=nil;
end;
if CreateProcess(nil,
PChar('c:\windows\notepad.exe'),
@SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
nil,
PChar('C:\WINDOWS\'),
StInfo, ProcInfo) then begin
ProcHandle := ProcInfo.hProcess;
end else raise Exception.Create('');
end;


И ещё вопрос, на эти поля, dwX и dwY (ну может не на эти, а на те, которые отвечают за координаты создания окна) наложены какие-либо ограничения? Например, эти координаты могут быть отрицательными (типа пол-окна за границей экрана)?
Та же история с размерами. Меняю dwXSize и dwYSize.

PS: разрешение экрана 1024-768.

Добавлено через 12 мин.
Цитата
StInfo.wShowWindow:=SW_SHOWDEFAULT;


Мб из-за этого DEFAULT?

Сообщение отредактировано: Unconnected - 21.06.2010 17:32


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Unconnected
сообщение 21.06.2010 20:42
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
Ты уверен, что окно Notepad-а создается с CW_USEDEFAULT, чтоб у тебя было право его менять?


Ага, кажется, без него создаётся, с STARTF_USEPOSITION тоже не двигается. Так что, получается, без этого USEDEFAULT не получится ничего подобного сделать? WM_CREATE тоже перехватывать без толку будет?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 4.07.2025 4:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"