Форум: "Система";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизКак свернуть все окна. Помню Что надо посылать месагу minimaze то Найти похожие ветки
← →
mmmh (2003-02-17 22:17) [0]лько как точно не помню. напишите сразу кодом если не трудно.
← →
mmmh (2003-02-18 19:48) [1]Не вижу ответов, помогите.
← →
jack128 (2003-02-18 20:12) [2]Точно не помню, но вроде SendMessage(HWND_BROADCAST ,...) посылает сообщения всем окнам...
← →
soho (2003-02-18 20:23) [3]
ShowWindow(Wnd, SW_MINIMIZE);
Wnd - Handle окна, которое нужно минимизировать.
← →
mmmh (2003-02-19 00:22) [4]Для того, чтобы изменить заголовок окна напишем следующий код
setwindowtext (findwindow(nil,"Безымянный - Блокнот"),"Дарова, ламерюга, типа ты попал... ")
Функции setwindowtext нужно указать только два параметра: это дескриптор нужного окна и новое значение для заголовка. Вот вообщем-то и всё!
Есть ещё одна интересная функция ShowWindow, которая позволяет скрывать или отображать окна. Использовать её нужно так::
ShowWindow(findwindow(nil,"Безымянный - Блокнот"),sw_hide);
В скобках указываем сначала над каким именно окном хотим издеваться, а затем что именно мы хотим с ним сделать. В качестве возможных действий можем указать:
SW_HIDE Скрывает окно и активизирует другое.
SW_MAXIMIZE Разворачивает окно.
SW_MINIMIZE Сворачивает окно.
SW_RESTORE Активизирует и выводит окно. Если окно было развёрнуто или свёрнуто - восстанавливает исходный размер и позицию.
SW_SHOW Активизирует и выводит окно с его оригинальным размером и положением.
SW_SHOWDEFAULT Активизирует с установками, заданными в структуре STARTUPINFO, которая была передана при создании процесса приложением запускающим нужную программу.
SW_SHOWMAXIMIZED Выводит окно в развёрнутом виде.
SW_SHOWMINIMIZED Выводит окно в виде пиктограммы на панели задач.
SW_SHOWMINNOACTIVE Выводит окно в свёрнутом виде на панели задач и не передаёт ему фокус ввода, т.е. окно, которое до этого было активно остаётся активно по прежнему.
SW_SHOWNA Отображает окно в его текущем состоянии. Активное окно остаётся активным по прежнему.
SW_SHOWNOACTIVATE Выводит окно в его последнем положении и с последними используемыми размерами. Активное окно остаётся активным по прежнему.
SW_SHOWNORMAL Выводит окно. Если оно было свёрнуто или развёрнуто - восстанавливает его оригинальные размеры и позицию
Но вся сложность действий заключается в том, что в заголовке Блокнота отслеживается имя текущего файла и использовать значение "Безымянный - Блокнот" мы можем не всегда : (. Тем более это не только в случае с блокнотом... Но есть выход: ведь функции FindWindow для поиска окна мы указываем не только заголовок нужного окна, но ещё его класс. Какой же это выход скажете вы, заголовок окна мы видим, значит знаем, что указывать - а класс окна... в действительности тоже может найти приложив немного усилий!
В пакет Delphi входим специальная утилита для отслеживание всех активных процессов, она называется WinSight32. Вот ею мы и воспользуемся. Запустите её, покопайтесь в списке процессов, ищите строку где значится текущий заголовок нужного окна, например Блокнота, и в левой части этой строки в фигурных скобках вы найдёте имя класса окна. Для блокнота это будет "Notepad". Теперь зная имя класса окна мы можем переписать поиск окна таким способом: Showwindow(findwindow("Notepad",nil),sw_hide);
Теперь мы вместо заголовка окна указываем значение nil, игнорируя данный параметр.
Есть ещё один замечательный способ передачи команд окнам.- функция PostMessage. Ей в качестве параметров нужно указать:
Дескриптор окна, которому посылается сообщение или следующие значения:
HWND_BROADCAST Сообщение будет послано всем окнам верхнего уровня системы, включая неактивные и невидимые окна, overlapped-окна, и PopUp-окна, но сообщение не будет посылаться дочерним[Child] окнам.
NULL Ведёт себя как функция PostThreadMessage с переданным ей dwThreadId параметром.
Посылаемое сообщение
Первый параметр сообщения
Второй параметр сообщения
Например, если послать сообщение wm_quit блокноту - окно будет закрыто без вывода всяких сообщений о необходимости сохранения!
postmessage(findwindow("Notepad",nil), wm_quit,0,0);
Для интересующихся
← →
Юрий Зотов (2003-02-19 08:34) [5]function EnumWindowsCallback(Wnd: HWND; Param: LPARAM): BOOL; stdcall;
begin
Result := True;
if (Wnd <> Param) and IsWindowVisible(Wnd) then
SendMessage(Wnd, WM_SYSCOMMAND, SC_MINIMIZE, 0)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsCallback, Handle)
end;
← →
mmmh (2003-02-20 19:52) [6]А может кто знает как с помощью последней функции не сворачивать свое окно.
← →
Song (2003-02-20 20:56) [7]if (Wnd <> Param) and IsWindowVisible(Wnd) and (Wnd<>Form1.Handle) and (Wnd<>Application.Handle> then ...
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c