Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Как послать WM_SYSCOMMAND,SC_RESTORE окну, которое   Найти похожие ветки 

 
Long   (2004-06-01 17:15) [0]

сидит в панели задач?
Ну, например, ловя его за Caption?
За примерчик буду очень признателен.


 
Игорь Шевченко ©   (2004-06-01 17:23) [1]

FindWindow + SendMessageTimeout


 
Long   (2004-06-01 17:30) [2]

Спасибо, Игорь.
Теория мне известна. А вот практика - увы.
Если не трудно, хотя бы маленький пример.
Не подумайте, что я халявщик и сам думать не хочу.
Сегодня целый день бился с этими HWND.
И ничего не получается :-(


 
Long   (2004-06-01 17:41) [3]

Если подробнее, то это проблеиа свернуть все окна,
а потом открыть конкретное.
Свернуть легко.
А вот, развернуть нужное?
В faq я искал и не нашел.


 
Игорь Шевченко ©   (2004-06-01 17:44) [4]


function RestoreWindow (const ACaption: string);
var
 Wnd: HWND;
 Dummy: DWORD;
begin
 Wnd := FindWindow(nil, PChar(ACaption));
 if IsWindow(Wnd) then
   SendMessageTimeout(Wnd, WM_SYSCOMMAND, SC_RESTORE, 0,
     SMTO_ABORTIFHUNG, 2000, Dummy);
end;


 
WebErr ©   (2004-06-01 17:52) [5]

Пусть окно имеет класс const MyClassName = "TMyClassName";
Далее:

procedure SetNormalMyWnd;
var
 MyWnd: HWND;
 S: PChar;
begin
 try
   GetMem(S, 256);
 except
   ShowMessage("Sorry!");
   Exit;
 end;
 MyWnd := FindWindow(0, 0);
 while MyWnd <> 0 do
 begin
   MyWnd := GetNextWindow(MyWnd, GW_HWNDNEXT);
   GetClassName(S, 255);
   if StrComp(S, MyClassName) = 0 then
   begin
     SendMessage(MyWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
     Break;
   end;
 end;
 FreeMem(S);
end;

В коде могут быть ошибки - писал на ходу. :)


 
WebErr ©   (2004-06-01 17:55) [6]


> Long   (01.06.04 17:41) [3]

Лучше пробегать по окнам и сворачивать либо раскрывать конкретные окна, тогда не будет проблем типа туда-сюда и мелькания на экране, хотя для визуального эффекта... такой подход имеет место быть!


 
Long   (2004-06-01 19:16) [7]

Не выходит, все равно.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 h,k,b:Hwnd;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var h,b:Hwnd;
begin

h:=handle;
while h > 0 do begin
if isWindowVisible(h) then
postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0);
h:=getnextwindow(h,GW_HWNDNEXT);
              end;

b := FindWindow(nil, "Конкретный Caption");
if IsWindow(b) then
postmessage(b,WM_SYSCOMMAND, SC_RESTORE,0);
end;
end.

Простите меня друзья, спасибо за вашу помощь, но я так и не врубился.
Делаю вот то, что выше. Окна благополучно закрываются, а "Конкретный Caption"
не открывается. Прмо хоть стреляйся :-(


 
Игорь Шевченко ©   (2004-06-02 00:43) [8]

Long   (01.06.04 19:16)

EnumWindows почитай



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

Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.026 c
14-1087976260
Глеб
2004-06-23 11:37
2004.07.11
Алгоритм нахождения перестановок чисел


1-1087993092
killer
2004-06-23 16:18
2004.07.11
Как можно изменить цвет рамки и кнопочки в DateTimePicker?


14-1088128632
Думкин
2004-06-25 05:57
2004.07.11
С днем рождения! 25 июня


14-1087559102
Dmitriy O.
2004-06-18 15:45
2004.07.11
А вот хотите Upgrade now Delphi !?


3-1087308867
Ross
2004-06-15 18:14
2004.07.11
Дата





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский