![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про 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);