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

Вниз

Как выполнить действия при сворчивании   Найти похожие ветки 

 
SKIPtr   (2007-09-04 23:38) [0]

У меня была программа где я определил действия App....OnMinimize при нажатии кнопки свернуть всё происходит как положено Щас написал прог. которая запускает ту прогу (WinExec..) и вызываю ShowWindow(wnd, sw_MiniMize) окно сворчивается а OnMinimize почему-то не выполняется как её выполнить


 
Германн ©   (2007-09-05 00:30) [1]

А при чём тут WinAPI?


 
ANTPro ©   (2007-09-05 02:25) [2]

> [1] Германн ©   (05.09.07 00:30)

ShowWindow(wnd, sw_MiniMize);


 
ANTPro ©   (2007-09-05 02:26) [3]

Это же целая апи команда %)


 
Инс ©   (2007-09-05 02:31) [4]


> апи команда

Никогда не слышал про апи-команды...


 
ANTPro ©   (2007-09-05 02:44) [5]

> [4] Инс ©   (05.09.07 02:31)

команды - функция или процедура (в данном контексте)
ЗЫ А стоит ли придираться к словам?


 
Германн ©   (2007-09-05 03:08) [6]


> ANTPro ©   (05.09.07 02:25) [2]
>
> > [1] Германн ©   (05.09.07 00:30)
>
> ShowWindow(wnd, sw_MiniMize);

Ну так помоги автору сабжа!
Тогда ты докажешь, что сей вопрос относится именно к WinAPI.


 
Германн ©   (2007-09-05 03:18) [7]


> SKIPtr   (04.09.07 23:38)
>
> У меня была программа где я определил действия App.

А app ты спросил разрешение?


 
SKIPtr   (2007-09-05 07:20) [8]

Я послал сообщение application какое разрешение надо спросить?


 
SKIPtr   (2007-09-05 07:34) [9]

Мне казалось что ShowWindow относиться к WinAPI  это же сообщение


 
Lacmus ©   (2007-09-05 11:44) [10]



procedure TForm50.ApplicationEvents1Minimize(Sender: TObject);
begin
 ShowMessage("Minimize")
end;

procedure TForm50.Button1Click(Sender: TObject);
begin
 WinExec(PChar(ParamStr(0)), SW_SHOWMINNOACTIVE)
end;



 
SKIPtr   (2007-09-05 17:58) [11]

Меня наверно не поняли несебя сворачивать надо вот подробней
давно написан программа

program prog1
....
unit1
procedure ...FormCreate;
begin
...; Application.OnMinimize := MyProc1; ...
end


Нажимаю кнопку свернуть MyProc1 выполняется Это написанно давно я ей пользуюсь

Щас решил написать

program prog2
...
unit2
procedure ...Button1Click;
begin
  WinExec({prog1}, 0);
  wnd := FindWindow(nil, {Title prog1})
end
procedure ...Button2Click;
begin
  ShowWindow(wnd, sw_MiniMize);
end


prog1 при этом сворачивается а мне надо чтоб ещё выполнилось MyProc1


 
SergeyIT ©   (2007-09-05 18:29) [12]

> prog1 при этом сворачивается
И сворачивается возможно неправильно, eсли это программа на делфи и wnd(MainForm) - не есть главное окно приложения. Это на форумах не раз обсуждалось.
Я для этих целей в своих программах использовал свое сообщение (WM_USER + ...) и в обработчике (wnd - MainForm) вызывал
Application методы
Minimize
Restore
...


 
Lacmus ©   (2007-09-05 18:38) [13]

>SKIPtr   (05.09.07 17:58) [11]



procedure TForm50.Button1Click(Sender: TObject);
begin
 SendMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
end;



 
SKIPtr   (2007-09-05 22:21) [14]


> И сворачивается возможно неправильно, eсли это программа
> на делфи и wnd(MainForm) - не есть главное окно


Я это тоже попрововал и это увидел сам форму сворчивать безполезно Я в описании описал эти действия с Application


> Lacmus ©   (05.09.07 18:38) [13]


спасибо это получилось она выполнила OnMinimize

Вопрос в продолжении h := WinExec({prog1}, 0); что возращается в h
h := FindWindow(nil, {Title prog1})  не то
h := FindWindow(Form, nil) то же не то


 
Инс ©   (2007-09-05 22:31) [15]


> что возращается в h

http://msdn2.microsoft.com/en-us/library/ms687393.aspx

Несмотря на то, что MSDN отвечает на этот вопрос достаточно загадочно, насколько мне известно, если вызов успешен, то WinExec возвращает дескриптор созданного процесса. Дескриптор процесса не имеет никакого отношения к дескриптору окна, совершенно разные вещи.


 
SergeIT   (2007-09-05 23:52) [16]

> h := FindWindow(Form, nil) то же не то
h := FindWindow("TForm", nil); //TForm тип и имя класса окна
Обратил внимание - если
h := FindWindow("TForm", nil);
вызывается сразу после WinExec("a.exe", 0), то даже если имеется несколько окон с классом TForm, возвращается последнее созданное (хотя это неплохо бы проверить - я в ХР и далее не проверял)


 
SKIPtr   (2007-09-06 07:09) [17]


>  если имеется несколько окон с классом TForm, возвращается последнее
> созданное


наверно это это связано с тем что когда перебираеш окна методом Wnd := GetWindow(Wnd, gw_hWndNext) начинается с верхнего и идет глубже



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
2-1208719740
worldmen
2008-04-20 23:29
2008.05.18
Загрузить с ini файла в переменную имена всех ключей


3-1197827256
Kley
2007-12-16 20:47
2008.05.18
Возврат товара


15-1207119287
Ega23
2008-04-02 10:54
2008.05.18
А вот как сделано: регистрируешься на каком-нибудь сайте,


2-1203231941
DRAF
2008-02-17 10:05
2008.05.18
Полоса пкрутки


8-1180290990
Wait
2007-05-27 22:36
2008.05.18
Bass + winamp plugins