Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

Вопрос про SW_MAXIMIZE.   Найти похожие ветки 

 
vegarulez ©   (2007-07-05 17:48) [0]

Привет всем мастерам. У меня вот такой вопрос. допустим открываю программу (к примеру блокнот) с помощью

ShellExecute(h,  "open",  PChar("C:\windows\notepad.exe"),  nil,  nil,  SW_MAXIMIZE);

Она естественно раскрывается на весь экран.

Но есть другая программулина - онау себя где-то хранит настройки может... или как... но вообщем она открывается всегда в маленьком окошке - пока не нажмёшь на кнопочку развернуть - она не развернётся. А с вызовом приведённым выше не получается её развернуть.... :(

Подскажите как можно допустим какой нить апишный вызов в программу передать, чтоб она развернулась... или ещё как... подскажите...


 
Игорь Шевченко ©   (2007-07-05 18:00) [1]


> А с вызовом приведённым выше не получается её развернуть.
> ...


Программа запросто может игнорировать то, что ей передали через ShellExecute.


> Подскажите как можно допустим какой нить апишный вызов в
> программу передать, чтоб она развернулась... или ещё как.
> .. подскажите...


Найти окно программы (по заголовку, например) и сказать
PostMessage(найденное_окно, WM_SYSCOMMAND, SC_MAXIMIZE, 0);


 
vegarulez ©   (2007-07-05 18:47) [2]

>> Найти окно программы (по заголовку, например) и сказать

Подскажи как это сделать? Какую комманду почитать в HELPe


 
{RASkov} ©   (2007-07-05 19:08) [3]

> Какую комманду почитать в HELPe

FindWindow


 
vegarulez ©   (2007-07-05 21:15) [4]

Ахха пасип. получилось всё.

Тока вот ещё пару вопросов возникло...

1. В той программмулине - пока она подключается - название окна одно как только подключится - название окна становится другим.... Так вот можео как нить по маске попробовать его отловить? т.е туда в файндвиндов запихнуть маску какую нить...

2. Если допустим есть какой-то процесс... то как его закрыть? Просто ситуация такая - это программа тока в процессах почему-то, а в приложениях её даже нет. Можно тогда впринципе не на название окна опираться, а на название процесса... там он называется всегда одинаково.

З.Ы.  Ещё одно заметил... когда пытаюсь закрыть эту программулину
PostMessage(FindWindow(nil, "Тут название моего окна"), WM_QUIT, 0, 0);

он её нормально закрывает...
но когда пытаюсь

PostMessage(FindWindow(nil, "Тут название процесса типа *.exe"), WM_QUIT, 0, 0);

то моя прога просто вылетает ничего не делая...

Как это объяснить? почему там низя писать название процесса "название.exe"?...


 
vegarulez ©   (2007-07-07 07:24) [5]

Привет мастерам!

и ещё 1 вопрос + к тем 2-ум которые написал выше.

как узнать что PostMessage отработал?
В хелпе написано что возращает либо зеро либо нонзеро... в булевом формате... как это понять?


 
Washington ©   (2007-07-07 07:44) [6]

Насчёт закрытия процесса - поищи в Нете KillProcessByName. Я это где-то видел, когда делал прогу, которая вырубает комп.


 
Однокамушкин   (2007-07-07 08:59) [7]


> vegarulez ©   (05.07.07 21:15) [4]
> 1. В той программмулине - пока она подключается - название
> окна одно как только подключится - название окна становится
> другим.... Так вот можео как нить по маске попробовать его
> отловить? т.е туда в файндвиндов запихнуть маску какую нить.

Нет, маску в FindWindow нельзя, можно получить все окна верхнего уровня через EnumWindows и там уже самому реализовать любую маску...

> В хелпе написано что возращает либо зеро либо нонзеро...
>  в булевом формате... как это понять?

Тяжёлое наследие C/C++... В С нет вообще лагоического типа, а в С++ есть, но условно, он совместим с целым... Считается, что любое ненулевое значение это TRUE, а нулевое - FALSE... В Delphi есть тип BOOL, который надо использовать в таких случаях, он при необходимости автоматически приводится к Boolean, программисту можно об этом вообще не думать...


 
vegarulez ©   (2007-07-08 07:38) [8]


> Тяжёлое наследие C/C++... В С нет вообще лагоического типа,
>  а в С++ есть, но условно, он совместим с целым... Считается,
>  что любое ненулевое значение это TRUE, а нулевое - FALSE.
> .. В Delphi есть тип BOOL, который надо использовать в таких
> случаях, он при необходимости автоматически приводится к
> Boolean, программисту можно об этом вообще не думать...


Ну хорошо. Пусть так. Но как же всёже проверить что комманда действительно выполнилась? Проверяю на true - всегда срабатывает независимо оттого выполнилась или нет, проверяю на false - никогда не срабатывает - если даже успешно выполнилась... как быть?


 
vegarulez ©   (2007-07-20 07:33) [9]

Никто не может подсказать про vegarulez ©   (08.07.07 07:38) [8] ?


 
Dib@zol ©   (2007-07-20 09:41) [10]

Может :) Понимаеш, ПостМессидж он на то и Пост, а не Сенд, что вылетает сразу как передал кому надо сообчение, и ему конкретно в отличие от SendMessage наплевать выполнилось оно или нет. А true он возвращает потому, что посылка (да, посылка а не обработка) мессиджа окончилась успешно. Вывод - юзай SendMessage.



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

Текущий архив: 2007.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
2-1185515033
Galiley
2007-07-27 09:43
2007.08.19
программа на данном компьютере больше не запускалась


8-1163353953
Anton1986
2006-11-12 20:52
2007.08.19
Дата в jpeg


4-1173091631
Углук
2007-03-05 13:47
2007.08.19
Странность с вызовом функции из DLL


15-1184847220
de.
2007-07-19 16:13
2007.08.19
MapView своими руками...


2-1185347898
Kolan
2007-07-25 11:18
2007.08.19
Чем работать с DBF файлами