Главная страница
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.025 c
15-1184839221
_Ламер_
2007-07-19 14:00
2007.08.19
Подскажите какие книги по делфи лучше


15-1184915044
Nic
2007-07-20 11:04
2007.08.19
Paradox : нужно ли ставить на компьютер BDE?


15-1184915752
oxffff
2007-07-20 11:15
2007.08.19
Компилятор Опять грешит


15-1185285507
TruePunk
2007-07-24 17:58
2007.08.19
рыбашка олимпиады 80


2-1185444963
pukin
2007-07-26 14:16
2007.08.19
Динамическая копия набора компонентов