Главная страница
    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.041 c
14-1101186125
Sour
2004-11-23 08:02
2004.12.12
Еще вопрос про SMTP и POP3 серверы


3-1100076696
Yurij-7
2004-11-10 11:51
2004.12.12
Информация из DBGrid


11-1083996308
fr!
2004-05-08 10:05
2004.12.12
как поймать message?


3-1100182927
Katrin
2004-11-11 17:22
2004.12.12
Тригер и переменные


14-1101044542
f00rd
2004-11-21 16:42
2004.12.12
SpeedButton + темы WinXP





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