Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

В CreateProcess задать координаты и размеры приложения   Найти похожие ветки 

 
Анна   (2008-07-02 12:04) [0]

Добрый день!
Запускаю .exe из основной программы.
Можно ли заставить окно запускаемого приложения открыться в определенном месте экрана и определенного размера?

Перед CreateProcess(....)  делаю инициализацию структуры TStartupInfo

var
StInfo : TStartupInfo;
SeAttr : TSecurityAttributes;
ProcInfo : TProcessInformation;
ProcHandle : THandle;

begin

FillChar(StInfo,SizeOf(StInfo),0);
StInfo.cb := SizeOf(StInfo);
stInfo.dwFlags:=STARTF_USESIZE or STARTF_USEPOSITION;
stInfo.dwX:=700;
stInfo.dwY:=500;
stInfo.dwXSize:=400;
stInfo.dwYSize:=300
;

with SeAttr do begin
nLength:=SizeOf(SeAttr);
bInheritHandle:=true;
lpSecurityDescriptor:=nil;
end;

if CreateProcess(nil,
PChar("D:\small_prog\small_prog.exe"),
@SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
nil,
PChar("c:\windows\"),
StInfo, ProcInfo) then begin
ProcHandle := ProcInfo.hProcess;
end
else begin
raise Exception.Create("ошибка запуска");
end;

Приложение запускается, но не "слушается" заданным  свойствам процесса. Что я делаю не так?


 
Правильный-Вася   (2008-07-02 12:08) [1]

приложение может само при старте менять, как ему вздумается, эти значения
попробуй на блокноте, он должен слушаться


 
Анна   (2008-07-02 12:14) [2]


> Правильный-Вася   (02.07.08 12:08) [1]

Попробовала. Блокнот тоже не слушается. :-((


 
Palladin ©   (2008-07-02 12:23) [3]


> Анна   (02.07.08 12:14) [2]

значит у тебя не стандартный блокнот

создай пустой проект, назначь главной форме Position=poDefault, запусти вышеприведенным методом и увидишь, что все прекрасно работает


 
Анна   (2008-07-02 12:34) [4]


> Palladin ©   (02.07.08 12:23) [3]

Главной форме назначила Position=poDefault
запускаю блокнот:
PChar("c:\windows\notepad.exe"),
@SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
nil,
PChar("c:\windows\"),
StInfo, ProcInfo)

Не слушается


 
{RASkov} ©   (2008-07-02 12:37) [5]

> [4] Анна   (02.07.08 12:34)
> Главной форме назначила Position=poDefault
> запускаю блокнот:

:)
Да не блокнот запускай, а твое "новое" приложение с настройками главной формы из [3])


 
Palladin ©   (2008-07-02 12:37) [6]


> Анна   (02.07.08 12:34) [4]

у тебя какой цвет волос?

1. создай пустой проект
2. назначь главной форме пустого, вновьсозданного проекта Position=poDefault
3. запусти вышеприведенным методом
4. посмотри и удивись


 
{RASkov} ©   (2008-07-02 12:38) [7]

т.е. у тебя должно быть два твоих приложений
одно: просто форма с Position=poDefault
второе: с кнопкой и кодом из [0] и запуском первого...


 
Palladin ©   (2008-07-02 12:43) [8]

а вообще смысла это никакого не имеет, потому что целевое приложение плевать хотело на передаваемые положение и размер :) но код верен


 
{RASkov} ©   (2008-07-02 12:47) [9]

> [8] Palladin ©   (02.07.08 12:43)
> а вообще смысла это никакого не имеет

Если только оба приложения "твои"(автора).... но и тут нужно "иметь на то какие-то свои соображения" :)
Но я согласен, что смысла в данном вопросе в общем - нет.


 
Правильный-Вася   (2008-07-02 12:50) [10]


> целевое приложение плевать хотело на передаваемые положение
> и размер

а консольное окно?


 
Palladin ©   (2008-07-02 12:52) [11]


> Правильный-Вася   (02.07.08 12:50) [10]

и консольное окно тоже может запросто наплевать


 
Palladin ©   (2008-07-02 12:52) [12]

точнее не окно, а приложение


 
Анна   (2008-07-02 13:00) [13]


> Palladin ©   (02.07.08 12:37) [6]

Цвет волос не тот, что Вы думаете....
И вопрос задаю в начинающих, значит имею право что-то не понимать и рассчитывать на совет. Но все равно Вам спасибо за ответы.


> {RASkov} ©   (02.07.08 12:38) [7]

Не поняла. Создала (пустое) приложение, из второго  запускаю по кнопке пустую форму с poDefault...А откуда запускать : CreateProcess(nil,
PChar("D:\small_prog\small_prog.exe"),
@SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
nil,
PChar("c:\windows\"),
StInfo, ProcInfo) ;      ?


 
Германн ©   (2008-07-02 13:10) [14]


> > {RASkov} ©   (02.07.08 12:38) [7]
>
> Не поняла. Создала (пустое) приложение, из второго  запускаю
> по кнопке пустую форму с poDefault...А откуда запускать
> : CreateProcess(nil,
> PChar("D:\small_prog\small_prog.exe"),
> @SeAttr,@SeAttr,false,NORMAL_PRIORITY_CLASS,
> nil,
> PChar("c:\windows\"),
> StInfo, ProcInfo) ;      ?
>

Цвет волос не имеет значения. :)


 
Palladin ©   (2008-07-02 13:13) [15]


> Анна   (02.07.08 13:00) [13]

в общем не важно, просто пойми для себя два факта
1. Твой код абсолютно правилен
2. Работать будет только для приложений, которые делают вызов CreateWindow с CW_USEDEFAULT в параметрах, отвечающих за размер и положение создаваемого окна.


 
{RASkov} ©   (2008-07-02 16:14) [16]

> Анна

> 2. Работать будет только для приложений, которые делают
> вызов CreateWindow с CW_USEDEFAULT в параметрах, отвечающих
> за размер и положение создаваемого окна.

А, например, все приложения делфи с настройками(свойствами(Position)) гл. формы по умолчанию, размер и положение формы берутся из ресурса приложения и устанавливаются уже позже. Т.е. создаешь процесс, задаешь параметры гл. окну, а затем все эти твои настройки "затираются" значениями из ресурса...
Отсюда следует, что для большенства приложений на делфи(мало кто выставляет Position=poDefault) код из [0] бесполезен.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
15-1213606446
9899100
2008-06-16 12:54
2008.08.03
Виртуальный логический диск


2-1214886949
DJ_UZer
2008-07-01 08:35
2008.08.03
Как считать текстовый файл из интерната


2-1214858997
AlexeyMir
2008-07-01 00:49
2008.08.03
Версия проекта


2-1215040775
Si13
2008-07-03 03:19
2008.08.03
VSL Form, проблемы с открытием


3-1203418842
well
2008-02-19 14:00
2008.08.03
ADO. Не выполняются изменения в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский