Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про SW_MAXIMIZE. [D6, XP]


vegarulez ©   (2007-07-05 17:48:00) 

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

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

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

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

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


Dib@zol   (2007-07-20 09:41:00) [1]

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


vegarulez   (2007-07-20 07:33:00) [2]

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


vegarulez   (2007-07-08 07:38:00) [3]


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


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


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


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

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

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

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


Washington   (2007-07-07 07:44:00) [5]

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


vegarulez   (2007-07-07 07:24:00) [6]

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

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

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


vegarulez   (2007-07-05 21:15:00) [7]

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

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

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

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

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

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

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

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

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


{RASkov}   (2007-07-05 19:08:00) [8]

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

FindWindow


vegarulez   (2007-07-05 18:47:00) [9]

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

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


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


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


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


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


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо