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

Вниз

Как определить активен ли сейчас рабочий стол????   Найти похожие ветки 

 
WaS ©   (2004-10-29 10:49) [0]

Все и так ясно. Большая просьба помочь...


 
Grundic ©   (2004-10-29 11:12) [1]

ативен - если нет открытых окон или все окна свернуты или когда на стол жмакнули мышой?


 
WaS ©   (2004-10-29 11:19) [2]

И то, и другое можно без хлеба  ;)

А точнее при свернутых окнах.


 
[lamer]Barmaglot ©   (2004-10-29 11:28) [3]

GetActiveWindow?


 
[lamer]Barmaglot ©   (2004-10-29 11:30) [4]

GetForegroundWindow?


 
Grundic ©   (2004-10-29 11:30) [5]

не. Кажись - даст последнее свернутое. Хотя попробуй. Ща попроюсь у себя................


 
Grundic ©   (2004-10-29 11:31) [6]

посмотри...

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, Grids, ValEdit;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Timer1: TTimer;
   Button2: TButton;
   ValueListEditor1: TValueListEditor;
   Timer2: TTimer;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Timer2Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 i:Byte;

implementation

procedure AddItemInIfNotEq(V:TValueListEditor;Item:string);
var
 DateTime : TDateTime;
 str : string;
begin
if Item="Program Manager" then Item:="[Нет открытых окон]";
if Item="SysFader" then Exit;
if V.Cells[1,V.RowCount-1]<>Item then
 begin
 DateTime := Time;
 str := TimeToStr(DateTime);
 DateTime := Date;
 str :=str+" "+DateToStr(DateTime);
 V.InsertRow(str,Item,True);
 end;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Wnd : hWnd;
   buff: array [0..127] of char;
   s:String;
   err:Cardinal;
begin
 Wnd := GetWindow(Handle, gw_HWndFirst);
 while Wnd <> 0 do begin {Не показываем:}
   if (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
        and IsWindowVisible(Wnd)                    {Невидимые окна}
//         and (GetWindow(Wnd, GW_OWNER) = 0)          {Дочерние окна}
//         and (Wnd <> Application.Handle)             {Собственное окно}
     then
   begin
     GetWindowText(Wnd, buff, sizeof(buff));
     AddItemInIfNotEq(ValueListEditor1,StrPas(buff));
     Exit;
   end;
   Wnd := GetWindow(Wnd, gw_hWndNext);
 end;
 Form1.Caption:="Форма";
 AddItemInIfNotEq(ValueListEditor1,"NONE");
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1Click(Self);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=NOT Timer1.Enabled;
if Timer1.Enabled then Button2.Caption:="pause" else Button2.Caption:="play";
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 DateTime : TDateTime;
 str : string;
begin
i:=0;
DateTime := Time;
str := TimeToStr(DateTime);
DateTime := Date;
str :=str+" "+DateToStr(DateTime);
ValueListEditor1.Keys[1]:=str;
ValueListEditor1.Values[str]:="START";
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
i:=(i+1) mod 10;
Label1.Caption:=IntToStr(i);
Label1.Refresh;
if i>5 then Self.Hide
else Self.Visible:=True;
end;

end.



 
WaS ©   (2004-10-29 12:29) [7]

Желательно осле клика мышью, дабы в приведенном выше примере тока на свернутые окна.


 
WaS ©   (2004-10-29 13:17) [8]

Эгегегей, может кто-нить таки поможет???

Предыдущий пример не подходит.
Так, как предположим что (любая) программа не активна и в то же время не свернута, а активен рабочий стол - на него щелкнули мышью. Как быть?


 
-SeM-   (2004-10-29 14:01) [9]

if GetForegroundWindow = FindWindow("Progman", nil) then ...


 
WaS ©   (2004-10-29 14:21) [10]

2 -SeM-

Это именно то что нужно!!!
Прибольшое спасибо и дай бог тебе здоровьечка...    ;)



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

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

Наверх




Память: 0.47 MB
Время: 0.036 c
3-1100620186
Богдан
2004-11-16 18:49
2004.12.12
Поля TDBGrid


1-1101475987
Dmitry_04
2004-11-26 16:33
2004.12.12
Что значит $ в объявлении констант типа integer?


14-1101033590
ms
2004-11-21 13:39
2004.12.12
Как в VB6 вызвать функцию из библиотеки C++


14-1101117833
Petr V. Abramov
2004-11-22 13:03
2004.12.12
Постреляем?


6-1096646286
BKGG
2004-10-01 19:58
2004.12.12
Sockets





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