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

Вниз

Окно на поверхности   Найти похожие ветки 

 
demon ©   (2009-01-11 04:14) [0]

Как узнать не прикрыто ли моё окно сверху другими окноми?


 
Rouse_ ©   (2009-01-11 10:23) [1]

Как-то так:

unit Unit6;

interface

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

type
 TForm6 = class(TForm)
   Memo1: TMemo;
   Timer1: TTimer;
   procedure Timer1Timer(Sender: TObject);
 end;

var
 Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.Timer1Timer(Sender: TObject);
var
 CurrentRect, OtherRect, IntersectedRect: TRect;
 WndHandle, ForegrowndHandle: THandle;
 OtherWindoCaption: String;
 CaptionLength: Integer;
begin
 if not Visible then
   Exit
 else
   GetWindowRect(Handle, CurrentRect);
 ForegrowndHandle := GetForegroundWindow;
 if ForegrowndHandle <> Handle then
 begin
   WndHandle := GetNextWindow(Handle, GW_HWNDPREV);
   repeat
     if not IsWindowVisible(WndHandle) then
     begin
       WndHandle := GetNextWindow(WndHandle, GW_HWNDPREV);
       Continue;
     end;
     GetWindowRect(WndHandle, OtherRect);
     if IntersectRect(IntersectedRect, CurrentRect, OtherRect) then
     begin
       Memo1.Lines.Add("Найдено окно, расположенное поверх контрольного:");
       Memo1.Lines.Add("Хэндл окна: " + IntToStr(WndHandle));
       CaptionLength := SendMessage(WndHandle, WM_GETTEXTLENGTH, 0, 0);
       if CaptionLength > 0 then
       begin
         Inc(CaptionLength);
         SetLength(OtherWindoCaption, CaptionLength);
         SendMessage(WndHandle, WM_GETTEXT, CaptionLength, Integer(@OtherWindoCaption[1]));
         Memo1.Lines.Add("Заголовок окна: " + OtherWindoCaption);
       end;
     end;
     WndHandle := GetNextWindow(WndHandle, GW_HWNDPREV);
   until WndHandle = 0;
 end;
end;

end.


 
palva ©   (2009-01-11 12:57) [2]

Если в окне что-то есть (главное меню, кнопка...) то оно всегда прикрыто другими окнами - окнами, которые отрисовывают эту кнопку и т. д.


 
demon ©   (2009-01-11 17:42) [3]

Rouse_, спасибо!



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

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

Наверх





Память: 0.45 MB
Время: 0.005 c
15-1230272529
{RASkov}
2008-12-26 09:22
2009.02.22
Разрешение принтера


15-1229614558
Добежал
2008-12-18 18:35
2009.02.22
Сообщение Vista Эта программа, возможно, установлена неправильно


8-1190199525
gtr86
2007-09-19 14:58
2009.02.22
Вывод текста на канве


2-1231487437
321
2009-01-09 10:50
2009.02.22
abstracts methods


2-1231743195
b@v
2009-01-12 09:53
2009.02.22
ComboBox





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