|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2011, 09:45 | #1 |
Пользователь Подтвердите свой е-майл
Регистрация: 04.07.2007
Сообщений: 75
|
Не сворачивается окно.
Здравствуйте. Столкнулся я с проблемой, которую не могу решить сам, нужна помощь зала. Суть вот в чем. В нужный момент моя программа показывает сообщение которое пользователь должен увидеть в любом варианте. Сообщение посылаю так:
Код:
Код:
|
23.11.2011, 11:37 | #2 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
А если Handle сделать Windows кнопки "Свернуть все окна"?
|
23.11.2011, 11:40 | #3 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
function EnumMiniProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
Begin If Wd<>Form1.Handle then // если это не наша программа If IsWindowVisible(WD) then // если окно видимо If not IsIconic(WD) then // если окно не свернуто If isWindow(WD) then // и вообще это - окно. ShowWindow(WD, SW_MINIMIZE); // свернем его. EnumProc := TRUE; // продолжаем перебирать все окна системы. end; или procedure MinimizeAllApp; VAR Wnd : hWnd; buff: ARRAY [0..127] OF Char; begin Wnd := GetWindow(MainForm.Handle, gw_HWndFirst); WHILE Wnd <> 0 DO BEGIN {Не показываем:} IF (Wnd <> Application.Handle) AND {-Собственное окно} IsWindowVisible(Wnd) AND {-Невидимые окна} (GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна} (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков} THEN BEGIN {тут во и пишешь:} PostMessage(wnd, WM_SYSCOMMAND, SC_MINIMIZE, 0); {или что-то вроде этого} END; Wnd := GetWindow(Wnd, gw_hWndNext); END; end; |
23.11.2011, 20:34 | #4 |
Пользователь Подтвердите свой е-майл
Регистрация: 04.07.2007
Сообщений: 75
|
Свернул все окна процедурой MinimizeAllApp. Интересный эффект получился. Окно свернулось на 1 секунду и сразу автоматически восстановилось, после чего оказалось зависшим и на весь экран. Пришлось жать на резет. Такое ощущение что у этой игру какой то поток следит за состоянием этого окна и когда я его пытаюсь свернуть, то этот поток его разворачивает. Но почему так бездарно! Окно зависает. Кстати, если посылать сообщения только этому одному окну, то оно не сворачивается даже на 1 секунду, а вот если сворачивать все окна в системе, то сворачивается. В чем может быть дело? Может есть какие-нибудь соображения?
|
24.11.2011, 14:31 | #5 |
Форумчанин
Регистрация: 22.11.2011
Сообщений: 127
|
А сама по себе сварачивается?
|
24.11.2011, 22:17 | #6 |
Пользователь Подтвердите свой е-майл
Регистрация: 04.07.2007
Сообщений: 75
|
Нет, сама эта форма не сворачивается, если только не нажму выйти из игры, тогда она просто закрывается.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Треугольное окно со сторонами A, B, C. Проверить, пройдёт ли в окно коробка цилиндрической формы (D и H) (паскаль) | ihimaru | Помощь студентам | 5 | 02.10.2011 22:11 |
Не сворачивается | firephenix | Помощь студентам | 2 | 28.02.2011 08:59 |
[?] Послать клавишу в чужое окно, не выводя окно на передний план. | Moriarty | Win Api | 4 | 21.02.2011 05:11 |
Не сворачивается форма | John_chek | Общие вопросы Delphi | 2 | 30.10.2009 11:43 |
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. | RustreX | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.11.2007 19:28 |