Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
14-44451
Таня
2003-03-14 09:33
2003.04.14
Уважаемый Мазут Береговой!


1-44128
Delphi-Beginner
2003-04-03 11:33
2003.04.14
вопрос из области использования QReport


1-44241
BALU1111
2003-04-01 10:43
2003.04.14
Курсор в TextEdit


1-44247
Tayfun
2003-04-02 13:08
2003.04.14
Как из сроки S вырезать символы


6-44299
avm
2003-02-19 17:32
2003.04.14
удалённый реестр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский