[Unit] uWindowStyle
#1
السلام عليكم
قمت بكتابة هاتين الدالتين للحاجة
شكرا خاص لأخي SMP3

PHP كود :
{
 
 Coded by Agmcz
  Date
: 21-01-2016
  Thanks to SMP3
  
.......
 
 Added func WS_Ex_Exists (12-03-2016) 
}

unit uWindowStyle;

interface

uses
  Windows
, Classes;

procedure GetWindowStylesList(hWindow: THandle; out StylesList: TStringList);
procedure GetWindowStylesExtendedList(hWindow: THandle; out StylesList: TStringList);
function 
WS_Exists(hWindow: THandle; Style: Integer): Boolean;
function 
WS_EX_Exists(hWindow: THandle; ExStyle: Integer): Boolean;

implementation

procedure GetWindowStylesList
(hWindow: THandle; out StylesList: TStringList);
const
 
 WSStr: array[0..17] of string = (
 
   'WS_OVERLAPPED',
 
   'WS_POPUP',
 
   'WS_CHILD',
 
   'WS_MINIMIZE',
 
   'WS_VISIBLE',
 
   'WS_DISABLED',
 
   'WS_CLIPSIBLINGS',
 
   'WS_CLIPCHILDREN',
 
   'WS_MAXIMIZE',
 
   'WS_CAPTION',
 
   'WS_BORDER',
 
   'WS_DLGFRAME',
 
   'WS_VSCROLL',
 
   'WS_HSCROLL',
 
   'WS_SYSMENU',
 
   'WS_THICKFRAME',
 
   'WS_GROUP',
 
   'WS_TABSTOP');
 
 WSInt: array[0..17] of Integer = (
 
   0,
 
   $80000000,
 
   $40000000,
 
   $20000000,
 
   $10000000,
 
   $8000000,
 
   $4000000,
 
   $2000000,
 
   $1000000,
 
   $C00000,
 
   $800000,
 
   $400000,
 
   $200000,
 
   $100000,
 
   $80000,
 
   $40000,
 
   $20000,
 
   $10000);
var
 
 I, dwOldLong: Integer;
begin
  dwOldLong 
:= GetWindowLong(hWindow, GWL_STYLE);
 
 for I := Low(WSInt) to High(WSInt) do
 
 begin
    if dwOldLong 
or WSInt[I] = dwOldLong then
      StylesList
.Add(WSStr[I]);
 
 end;
end;

procedure GetWindowStylesExtendedList(hWindow: THandle; out StylesList: TStringList);
const
 
 EXWSStr: array[0..23] of string = (
 
   'WS_EX_DLGMODALFRAME',
 
   'WS_EX_NOPARENTNOTIFY',
 
   'WS_EX_TOPMOST',
 
   'WS_EX_ACCEPTFILES',
 
   'WS_EX_TRANSPARENT',
 
   'WS_EX_MDICHILD',
 
   'WS_EX_TOOLWINDOW',
 
   'WS_EX_WINDOWEDGE',
 
   'WS_EX_CLIENTEDGE',
 
   'WS_EX_CONTEXTHELP',
 
   'WS_EX_RIGHT',
 
   'WS_EX_LEFT',
 
   'WS_EX_RTLREADING',
 
   //'WS_EX_LTRREADING',     // = 0;
 
   'WS_EX_LEFTSCROLLBAR',
 
   //'WS_EX_RIGHTSCROLLBAR', // = 0;
 
   'WS_EX_CONTROLPARENT',
 
   'WS_EX_STATICEDGE',
 
   'WS_EX_APPWINDOW',
 
   'WS_EX_OVERLAPPEDWINDOW', // = (WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE);
 
   'WS_EX_PALETTEWINDOW',    // = (WS_EX_WINDOWEDGE or WS_EX_TOOLWINDOW or WS_EX_TOPMOST);
 
   'WS_EX_LAYERED',
 
   'WS_EX_NOINHERITLAYOUT',
 
   'WS_EX_LAYOUTRTL',
 
   'WS_EX_COMPOSITED',
 
   'WS_EX_NOACTIVATE');
 
 EXWSInt: array[0..23] of Integer = (
 
   1,
 
   4,
 
   8,
 
   $10,
 
   $20,
 
   $40,
 
   $80,
 
   $100,
 
   $200,
 
   $400,
 
   $1000,
 
   0,
 
   $2000,
 
   //0,
 
   $4000,
 
   //0,
 
   $10000,
 
   $20000,
 
   $40000,
 
   WS_EX_OVERLAPPEDWINDOW,
 
   WS_EX_PALETTEWINDOW,
 
   $00080000,
 
   $00100000,
 
   $00400000,
 
   $02000000,
 
   $08000000);
var
 
 I, dwOldLong: Integer;
begin
  dwOldLong 
:= GetWindowLong(hWindow, GWL_EXSTYLE);
 
 for I := Low(EXWSInt) to High(EXWSInt) do
 
 begin
    if dwOldLong 
or EXWSInt[I] = dwOldLong then
      StylesList
.Add(EXWSStr[I]);
 
 end;
end;

function 
WS_Exists(hWindow: THandle; Style: Integer): Boolean;
var
 
 dwOldLong: Integer;
begin
  dwOldLong 
:= GetWindowLong(hWindow, GWL_STYLE);
 
 Result := dwOldLong or Style = dwOldLong;
end;

function 
WS_Ex_Exists(hWindow: THandle; ExStyle: Integer): Boolean;
var
 
 dwOldLong: Integer;
begin
  dwOldLong 
:= GetWindowLong(hWindow, GWL_EXSTYLE);
 
 Result := dwOldLong or ExStyle = dwOldLong;
end;

{
Usage:
//GetWindowStylesList
var
 
 SL: TStringList;
begin
  SL 
:= TStringList.Create;
 
 try
    GetWindowStylesList
(Handle, SL);
 
   //SL
 
 finally
    SL
.Free;
 
 end;
end;

//GetWindowStylesExtendedList
var
 
 SL: TStringList;
begin
  SL 
:= TStringList.Create;
 
 try
    GetWindowStylesExtendedList
(Handle, SL);
 
   //SL
 
 finally
    SL
.Free;
 
 end;
end;

//WS_Exists
begin
  if WS_Exists
(Handle, WS_VISIBLE) then
    
//Exists
end;

//WS_Ex_Exists
begin
  if WS_Ex_Exists
(Handle, WS_EX_LAYERED) then
    
//Exists
end;
}

end. 
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • محمد عبد العزيز
الرد


الردود في هذا الموضوع
[Unit] uWindowStyle - بواسطة Agmcz - 21-01-2016, 11:36 AM
RE: GetWindowStylesList, WS_Exists - بواسطة Bachirsoft - 11-03-2016, 03:08 PM
RE: GetWindowStylesList, WS_Exists - بواسطة Agmcz - 12-03-2016, 03:05 PM
RE: [Unit] uWindowStyle - بواسطة MarmaR - 18-03-2016, 04:05 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم