Главная страница
    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.47 MB
Время: 0.032 c
14-1087820393
ИМХО
2004-06-21 16:19
2004.07.11
Вопрос по ICQ


3-1087127689
AlexG
2004-06-13 15:54
2004.07.11
JOIN и условия


3-1087288374
Jaxtor
2004-06-15 12:32
2004.07.11
Триггер не выдает сообщения оь ошибке


3-1087231431
Ser_
2004-06-14 20:43
2004.07.11
Выборка


3-1087446671
r9000
2004-06-17 08:31
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский