Текущий архив: 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.48 MB
Время: 0.042 c