mirror of
https://github.com/ngeor/Chameleon.git
synced 2025-12-19 09:53:43 +01:00
chore: Auto-formatted Pascal files: DfmEngine.pas, frmMain.pas, frmResults.pas, StyleNames.pas, WindowEnumerator.pas, Writers.pas
This commit is contained in:
parent
fa7f696a53
commit
7350c2399f
124
DfmEngine.pas
124
DfmEngine.pas
@ -14,77 +14,77 @@ type
|
|||||||
kcPanel, kcRadioButton, kcStatusBar, kcTreeView
|
kcPanel, kcRadioButton, kcStatusBar, kcTreeView
|
||||||
);
|
);
|
||||||
TKnownControls = set of TKnownControl;
|
TKnownControls = set of TKnownControl;
|
||||||
TKnownControlHandlerProc = procedure(wnd: HWND; style: integer) of object;
|
TKnownControlHandlerProc = procedure(wnd: HWND; style: Integer) of object;
|
||||||
|
|
||||||
TDfmBuilder = class
|
TDfmBuilder = class
|
||||||
private
|
private
|
||||||
PasList: TStrings;
|
PasList: TStrings;
|
||||||
dfm1: TDfmWriter;
|
dfm1: TDfmWriter;
|
||||||
Counts: array[TKnownControl] of integer;
|
Counts: array[TKnownControl] of Integer;
|
||||||
CtlType: TKnownControl;
|
CtlType: TKnownControl;
|
||||||
procedure DispatchHandle(wnd: HWND; style: integer);
|
procedure DispatchHandle(wnd: HWND; style: Integer);
|
||||||
procedure HandleUnknown(wnd: HWND; style: integer);
|
procedure HandleUnknown(wnd: HWND; style: Integer);
|
||||||
procedure HandleButton(wnd: HWND; style: integer);
|
procedure HandleButton(wnd: HWND; style: Integer);
|
||||||
procedure HandleCheckBox(wnd: HWND; style: integer);
|
procedure HandleCheckBox(wnd: HWND; style: Integer);
|
||||||
procedure HandleComboBox(wnd: HWND; style: integer);
|
procedure HandleComboBox(wnd: HWND; style: Integer);
|
||||||
procedure HandleEdit(wnd: HWND; style: integer);
|
procedure HandleEdit(wnd: HWND; style: Integer);
|
||||||
procedure HandleGroupBox(wnd: HWND; style: integer);
|
procedure HandleGroupBox(wnd: HWND; style: Integer);
|
||||||
procedure HandleImage(wnd: HWND; style: integer);
|
procedure HandleImage(wnd: HWND; style: Integer);
|
||||||
procedure HandleLabel(wnd: HWND; style: integer);
|
procedure HandleLabel(wnd: HWND; style: Integer);
|
||||||
procedure HandleListBox(wnd: HWND; style: integer);
|
procedure HandleListBox(wnd: HWND; style: Integer);
|
||||||
procedure HandleListView(wnd: HWND; style: integer);
|
procedure HandleListView(wnd: HWND; style: Integer);
|
||||||
procedure HandlePanel(wnd: HWND; style: integer);
|
procedure HandlePanel(wnd: HWND; style: Integer);
|
||||||
procedure HandleRadioButton(wnd: HWND; style: integer);
|
procedure HandleRadioButton(wnd: HWND; style: Integer);
|
||||||
procedure HandleStatusBar(wnd: HWND; style: integer);
|
procedure HandleStatusBar(wnd: HWND; style: Integer);
|
||||||
procedure HandleTreeView(wnd: HWND; style: integer);
|
procedure HandleTreeView(wnd: HWND; style: Integer);
|
||||||
procedure PreHandleCtl(wnd: HWND);
|
procedure PreHandleCtl(wnd: HWND);
|
||||||
procedure WriteDecl;
|
procedure WriteDecl;
|
||||||
public
|
public
|
||||||
constructor Create(APasList: TStrings);
|
constructor Create(APasList: TStrings);
|
||||||
procedure Build(OutStream: TStream; const frmName: string; wnd: HWND);
|
procedure Build(OutStream: TStream; const frmName: String; wnd: HWND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
KCNames: array[TKnownControl] of string = (
|
KCNames: array[TKnownControl] of String = (
|
||||||
'Unknown', 'Button', 'CheckBox', 'ComboBox', 'Edit',
|
'Unknown', 'Button', 'CheckBox', 'ComboBox', 'Edit',
|
||||||
'GroupBox', 'Image', 'Label', 'ListBox', 'ListView',
|
'GroupBox', 'Image', 'Label', 'ListBox', 'ListView',
|
||||||
'Panel', 'RadioButton', 'StatusBar', 'TreeView'
|
'Panel', 'RadioButton', 'StatusBar', 'TreeView'
|
||||||
);
|
);
|
||||||
|
|
||||||
KCClassNames: array[TKnownControl] of string = (
|
KCClassNames: array[TKnownControl] of String = (
|
||||||
'TPanel', 'TButton', 'TCheckBox', 'TComboBox', 'TEdit',
|
'TPanel', 'TButton', 'TCheckBox', 'TComboBox', 'TEdit',
|
||||||
'TGroupBox', 'TImage', 'TLabel', 'TListBox', 'TListView',
|
'TGroupBox', 'TImage', 'TLabel', 'TListBox', 'TListView',
|
||||||
'TPanel', 'TRadioButton', 'TStatusBar', 'TTreeView'
|
'TPanel', 'TRadioButton', 'TStatusBar', 'TTreeView'
|
||||||
);
|
);
|
||||||
|
|
||||||
function BitTest(Value, Mask: integer): boolean;
|
function BitTest(Value, Mask: Integer): Boolean;
|
||||||
function GetWndText(wnd: HWND): string;
|
function GetWndText(wnd: HWND): String;
|
||||||
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
|
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
|
||||||
BelongsToPicture: boolean; const Name: string);
|
BelongsToPicture: Boolean; const Name: String);
|
||||||
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: boolean;
|
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: Boolean;
|
||||||
const Name: string);
|
const Name: String);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses WindowEnumerator;
|
uses WindowEnumerator;
|
||||||
|
|
||||||
function BitTest(Value, Mask: integer): boolean;
|
function BitTest(Value, Mask: Integer): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (Value and Mask) = Mask;
|
Result := (Value and Mask) = Mask;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetWndText(wnd: HWND): string;
|
function GetWndText(wnd: HWND): String;
|
||||||
var
|
var
|
||||||
len: integer;
|
len: Integer;
|
||||||
begin
|
begin
|
||||||
len := GetWindowTextLength(wnd);
|
len := GetWindowTextLength(wnd);
|
||||||
SetLength(Result, len);
|
SetLength(Result, len);
|
||||||
GetWindowText(wnd, PChar(Result), len + 1);
|
GetWindowText(wnd, PChar(Result), len + 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetBorderIconsStr(ABorderIcons: TBorderIcons): string;
|
function GetBorderIconsStr(ABorderIcons: TBorderIcons): String;
|
||||||
const
|
const
|
||||||
biStr: array [TBorderIcon] of string = (
|
biStr: array [TBorderIcon] of String = (
|
||||||
'biSystemMenu', 'biMinimize', 'biMaximize', 'biHelp');
|
'biSystemMenu', 'biMinimize', 'biMaximize', 'biHelp');
|
||||||
var
|
var
|
||||||
k: TBorderIcon;
|
k: TBorderIcon;
|
||||||
@ -108,17 +108,17 @@ begin
|
|||||||
PasList := APasList;
|
PasList := APasList;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.Build(OutStream: TStream; const frmName: string; wnd: HWND);
|
procedure TDfmBuilder.Build(OutStream: TStream; const frmName: String; wnd: HWND);
|
||||||
var
|
var
|
||||||
InStream: TMemoryStream;
|
InStream: TMemoryStream;
|
||||||
i: integer;
|
i: Integer;
|
||||||
style, exstyle: longint;
|
style, exstyle: Longint;
|
||||||
wndX: HWND;
|
wndX: HWND;
|
||||||
|
|
||||||
procedure WriteBorderIcons;
|
procedure WriteBorderIcons;
|
||||||
var
|
var
|
||||||
bi: TBorderIcons;
|
bi: TBorderIcons;
|
||||||
s: string;
|
s: String;
|
||||||
begin
|
begin
|
||||||
bi := [];
|
bi := [];
|
||||||
if BitTest(style, WS_SYSMENU) then
|
if BitTest(style, WS_SYSMENU) then
|
||||||
@ -167,10 +167,10 @@ begin
|
|||||||
DFM1.Free;
|
DFM1.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleUnknown(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleUnknown(wnd: HWND; style: Integer);
|
||||||
var
|
var
|
||||||
class_name: array [0..100] of char;
|
class_name: array [0..100] of Char;
|
||||||
i: integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
// since we don't know what window we're after write the class name
|
// since we don't know what window we're after write the class name
|
||||||
GetClassName(wnd, class_name, 100);
|
GetClassName(wnd, class_name, 100);
|
||||||
@ -178,18 +178,18 @@ begin
|
|||||||
EnumerateChildWindows(wnd, Self.PreHandleCtl);
|
EnumerateChildWindows(wnd, Self.PreHandleCtl);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleButton(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleButton(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
dfm1.WriteStringProp('Caption', GetWndText(wnd));
|
dfm1.WriteStringProp('Caption', GetWndText(wnd));
|
||||||
dfm1.WriteBoolProp('Default', BitTest(style, BS_DEFPUSHBUTTON));
|
dfm1.WriteBoolProp('Default', BitTest(style, BS_DEFPUSHBUTTON));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleCheckBox(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleCheckBox(wnd: HWND; style: Integer);
|
||||||
const
|
const
|
||||||
CheckedStr: array [0..2] of string = ('cbUnchecked', 'cbChecked', 'cbGrayed');
|
CheckedStr: array [0..2] of String = ('cbUnchecked', 'cbChecked', 'cbGrayed');
|
||||||
var
|
var
|
||||||
state: integer;
|
state: Integer;
|
||||||
allowgrayed: boolean;
|
allowgrayed: Boolean;
|
||||||
begin
|
begin
|
||||||
allowgrayed := BitTest(style, BS_3STATE) or BitTest(style, BS_AUTO3STATE);
|
allowgrayed := BitTest(style, BS_3STATE) or BitTest(style, BS_AUTO3STATE);
|
||||||
state := SendMessage(wnd, BM_GETCHECK, 0, 0);
|
state := SendMessage(wnd, BM_GETCHECK, 0, 0);
|
||||||
@ -198,23 +198,23 @@ begin
|
|||||||
dfm1.WriteCustomProp('State', CheckedStr[state]);
|
dfm1.WriteCustomProp('State', CheckedStr[state]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleComboBox(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleComboBox(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleEdit(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleEdit(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
dfm1.WriteStringProp('Text', GetWndText(wnd));
|
dfm1.WriteStringProp('Text', GetWndText(wnd));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleGroupBox(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleGroupBox(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleImage(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleImage(wnd: HWND; style: Integer);
|
||||||
var
|
var
|
||||||
h: THANDLE;
|
h: THANDLE;
|
||||||
OnlyIcon: boolean;
|
OnlyIcon: Boolean;
|
||||||
begin
|
begin
|
||||||
OnlyIcon := BitTest(style, SS_ICON);
|
OnlyIcon := BitTest(style, SS_ICON);
|
||||||
if OnlyIcon then
|
if OnlyIcon then
|
||||||
@ -235,43 +235,43 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleLabel(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleLabel(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
dfm1.WriteBoolProp('AutoSize', False);
|
dfm1.WriteBoolProp('AutoSize', False);
|
||||||
dfm1.WriteStringProp('Caption', GetWndText(wnd));
|
dfm1.WriteStringProp('Caption', GetWndText(wnd));
|
||||||
dfm1.WriteBoolProp('WordWrap', True);
|
dfm1.WriteBoolProp('WordWrap', True);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleListBox(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleListBox(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleListView(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleListView(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandlePanel(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandlePanel(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleRadioButton(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleRadioButton(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleStatusBar(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleStatusBar(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.HandleTreeView(wnd: HWND; style: integer);
|
procedure TDfmBuilder.HandleTreeView(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
|
procedure WriteBitmapData(dfm1: TDfmWriter; bmp: HBITMAP;
|
||||||
BelongsToPicture: boolean; const Name: string);
|
BelongsToPicture: Boolean; const Name: String);
|
||||||
var
|
var
|
||||||
b: TBitmap;
|
b: TBitmap;
|
||||||
Memory: TTextWriter;
|
Memory: TTextWriter;
|
||||||
Size, Offset: integer;
|
Size, Offset: Integer;
|
||||||
begin
|
begin
|
||||||
b := TBitmap.Create;
|
b := TBitmap.Create;
|
||||||
Memory := TTextWriter.Create(TMemoryStream.Create);
|
Memory := TTextWriter.Create(TMemoryStream.Create);
|
||||||
@ -301,8 +301,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: boolean;
|
procedure WriteIconData(dfm1: TDfmWriter; icon: HICON; BelongsToPicture: Boolean;
|
||||||
const Name: string);
|
const Name: String);
|
||||||
var
|
var
|
||||||
i: TIcon;
|
i: TIcon;
|
||||||
k: TTextWriter;
|
k: TTextWriter;
|
||||||
@ -332,7 +332,7 @@ end;
|
|||||||
|
|
||||||
procedure TDfmBuilder.WriteDecl;
|
procedure TDfmBuilder.WriteDecl;
|
||||||
var
|
var
|
||||||
s: string;
|
s: String;
|
||||||
begin
|
begin
|
||||||
Inc(Counts[CtlType]);
|
Inc(Counts[CtlType]);
|
||||||
s := KCNames[CtlType] + IntToStr(Counts[CtlType]) + ': ' + KCClassNames[CtlType];
|
s := KCNames[CtlType] + IntToStr(Counts[CtlType]) + ': ' + KCClassNames[CtlType];
|
||||||
@ -341,7 +341,7 @@ begin
|
|||||||
dfm1.Ident := dfm1.Ident + 2;
|
dfm1.Ident := dfm1.Ident + 2;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmBuilder.DispatchHandle(wnd: HWND; style: integer);
|
procedure TDfmBuilder.DispatchHandle(wnd: HWND; style: Integer);
|
||||||
begin
|
begin
|
||||||
case CtlType of
|
case CtlType of
|
||||||
kcUnknown: HandleUnknown(wnd, style);
|
kcUnknown: HandleUnknown(wnd, style);
|
||||||
@ -363,8 +363,8 @@ end;
|
|||||||
|
|
||||||
procedure TDfmBuilder.PreHandleCtl(wnd: HWND);
|
procedure TDfmBuilder.PreHandleCtl(wnd: HWND);
|
||||||
var
|
var
|
||||||
class_name: array [0..100] of char;
|
class_name: array [0..100] of Char;
|
||||||
style: integer;
|
style: Integer;
|
||||||
begin
|
begin
|
||||||
GetClassName(wnd, class_name, 100);
|
GetClassName(wnd, class_name, 100);
|
||||||
style := GetWindowLong(wnd, GWL_STYLE);
|
style := GetWindowLong(wnd, GWL_STYLE);
|
||||||
|
|||||||
@ -38,7 +38,7 @@ const
|
|||||||
WS_VISIBLE,
|
WS_VISIBLE,
|
||||||
WS_VSCROLL);
|
WS_VSCROLL);
|
||||||
|
|
||||||
WindowStyleName: array [0..21] of string = (
|
WindowStyleName: array [0..21] of String = (
|
||||||
'Border',
|
'Border',
|
||||||
'Caption',
|
'Caption',
|
||||||
'Child',
|
'Child',
|
||||||
@ -62,7 +62,7 @@ const
|
|||||||
'Visible',
|
'Visible',
|
||||||
'Vertical scroll bar');
|
'Vertical scroll bar');
|
||||||
|
|
||||||
ExtendedWindowStyle: array [0..20] of integer = (
|
ExtendedWindowStyle: array [0..20] of Integer = (
|
||||||
WS_EX_ACCEPTFILES,
|
WS_EX_ACCEPTFILES,
|
||||||
WS_EX_APPWINDOW,
|
WS_EX_APPWINDOW,
|
||||||
WS_EX_CLIENTEDGE,
|
WS_EX_CLIENTEDGE,
|
||||||
@ -85,7 +85,7 @@ const
|
|||||||
WS_EX_TRANSPARENT,
|
WS_EX_TRANSPARENT,
|
||||||
WS_EX_WINDOWEDGE);
|
WS_EX_WINDOWEDGE);
|
||||||
|
|
||||||
ExtendedWindowStyleName: array [0..20] of string = (
|
ExtendedWindowStyleName: array [0..20] of String = (
|
||||||
'Drag drop recepient',
|
'Drag drop recepient',
|
||||||
'Minimize on taskbar',
|
'Minimize on taskbar',
|
||||||
'Sunken edge border',
|
'Sunken edge border',
|
||||||
|
|||||||
@ -9,7 +9,7 @@ uses
|
|||||||
|
|
||||||
type
|
type
|
||||||
{ An object method that accepts a HWND }
|
{ An object method that accepts a HWND }
|
||||||
TWndConsumer = procedure (Wnd: HWND) of object;
|
TWndConsumer = procedure(Wnd: HWND) of object;
|
||||||
|
|
||||||
{ Calls the given consumer for every child window of the given window }
|
{ Calls the given consumer for every child window of the given window }
|
||||||
procedure EnumerateChildWindows(Wnd: HWND; Consumer: TWndConsumer);
|
procedure EnumerateChildWindows(Wnd: HWND; Consumer: TWndConsumer);
|
||||||
@ -19,6 +19,7 @@ implementation
|
|||||||
type
|
type
|
||||||
{ Wrapper structure to hold the object procedure and pass it as a pointer }
|
{ Wrapper structure to hold the object procedure and pass it as a pointer }
|
||||||
PWrapper = ^TWrapper;
|
PWrapper = ^TWrapper;
|
||||||
|
|
||||||
TWrapper = record
|
TWrapper = record
|
||||||
Consumer: TWndConsumer;
|
Consumer: TWndConsumer;
|
||||||
end;
|
end;
|
||||||
|
|||||||
70
Writers.pas
70
Writers.pas
@ -10,28 +10,28 @@ type
|
|||||||
TTextWriter = class
|
TTextWriter = class
|
||||||
private
|
private
|
||||||
FStream: TStream;
|
FStream: TStream;
|
||||||
FIdent: cardinal;
|
FIdent: Cardinal;
|
||||||
FWriteIdent: boolean;
|
FWriteIdent: Boolean;
|
||||||
procedure WriteIdent;
|
procedure WriteIdent;
|
||||||
public
|
public
|
||||||
constructor Create(AStream: TStream);
|
constructor Create(AStream: TStream);
|
||||||
constructor CreateFile(const FileName: string);
|
constructor CreateFile(const FileName: String);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure NewLine;
|
procedure NewLine;
|
||||||
procedure Write(const str: string);
|
procedure Write(const str: String);
|
||||||
procedure WriteLn(const str: string);
|
procedure WriteLn(const str: String);
|
||||||
procedure WriteString(const str: string);
|
procedure WriteString(const str: String);
|
||||||
property Ident: cardinal read FIdent write FIdent;
|
property Ident: Cardinal read FIdent write FIdent;
|
||||||
property Stream: TStream read FStream;
|
property Stream: TStream read FStream;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TDfmWriter = class(TTextWriter)
|
TDfmWriter = class(TTextWriter)
|
||||||
procedure WriteBinaryAsText(Input: TStream);
|
procedure WriteBinaryAsText(Input: TStream);
|
||||||
procedure WriteBoolProp(const Name: string; Value: boolean);
|
procedure WriteBoolProp(const Name: String; Value: Boolean);
|
||||||
procedure WriteColorProp(const Name: string; Value: TColor);
|
procedure WriteColorProp(const Name: String; Value: TColor);
|
||||||
procedure WriteCustomProp(const Name, Value: string);
|
procedure WriteCustomProp(const Name, Value: String);
|
||||||
procedure WriteIntProp(const Name: string; Value: integer);
|
procedure WriteIntProp(const Name: String; Value: Integer);
|
||||||
procedure WriteStringProp(const Name, Value: string);
|
procedure WriteStringProp(const Name, Value: String);
|
||||||
procedure WritePlacement(wnd, parent: HWND);
|
procedure WritePlacement(wnd, parent: HWND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ begin
|
|||||||
FWriteIdent := True;
|
FWriteIdent := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TTextWriter.CreateFile(const FileName: string);
|
constructor TTextWriter.CreateFile(const FileName: String);
|
||||||
begin
|
begin
|
||||||
inherited Create;
|
inherited Create;
|
||||||
FStream := TFileStream.Create(FileName, fmCreate);
|
FStream := TFileStream.Create(FileName, fmCreate);
|
||||||
@ -61,8 +61,8 @@ end;
|
|||||||
|
|
||||||
procedure TTextWriter.WriteIdent;
|
procedure TTextWriter.WriteIdent;
|
||||||
var
|
var
|
||||||
s: string;
|
s: String;
|
||||||
i: integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if FWriteIdent then
|
if FWriteIdent then
|
||||||
begin
|
begin
|
||||||
@ -77,69 +77,69 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTextWriter.Write(const str: string);
|
procedure TTextWriter.Write(const str: String);
|
||||||
begin
|
begin
|
||||||
WriteIdent;
|
WriteIdent;
|
||||||
FStream.Write(str[1], Length(str));
|
FStream.Write(str[1], Length(str));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTextWriter.WriteLn(const str: string);
|
procedure TTextWriter.WriteLn(const str: String);
|
||||||
begin
|
begin
|
||||||
Write(str);
|
Write(str);
|
||||||
NewLine;
|
NewLine;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTextWriter.WriteString(const str: string);
|
procedure TTextWriter.WriteString(const str: String);
|
||||||
begin
|
begin
|
||||||
Write(Chr(Length(str)) + str);
|
Write(Chr(Length(str)) + str);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTextWriter.NewLine;
|
procedure TTextWriter.NewLine;
|
||||||
const
|
const
|
||||||
crlf: array [0..1] of char = #13#10;
|
crlf: array [0..1] of Char = #13#10;
|
||||||
begin
|
begin
|
||||||
FStream.Write(crlf[0], 2);
|
FStream.Write(crlf[0], 2);
|
||||||
FWriteIdent := True;
|
FWriteIdent := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmWriter.WriteBoolProp(const Name: string; Value: boolean);
|
procedure TDfmWriter.WriteBoolProp(const Name: String; Value: Boolean);
|
||||||
const
|
const
|
||||||
s: array [False..True] of string = ('False', 'True');
|
s: array [False..True] of String = ('False', 'True');
|
||||||
begin
|
begin
|
||||||
WriteCustomProp(Name, s[Value]);
|
WriteCustomProp(Name, s[Value]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmWriter.WriteColorProp(const Name: string; Value: TColor);
|
procedure TDfmWriter.WriteColorProp(const Name: String; Value: TColor);
|
||||||
begin
|
begin
|
||||||
WriteCustomProp(Name, ColorToString(Value));
|
WriteCustomProp(Name, ColorToString(Value));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmWriter.WriteCustomProp(const Name, Value: string);
|
procedure TDfmWriter.WriteCustomProp(const Name, Value: String);
|
||||||
begin
|
begin
|
||||||
WriteLn(Name + ' = ' + Value);
|
WriteLn(Name + ' = ' + Value);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmWriter.WriteIntProp(const Name: string; Value: integer);
|
procedure TDfmWriter.WriteIntProp(const Name: String; Value: Integer);
|
||||||
begin
|
begin
|
||||||
WriteCustomProp(Name, IntToStr(Value));
|
WriteCustomProp(Name, IntToStr(Value));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDfmWriter.WriteStringProp(const Name, Value: string);
|
procedure TDfmWriter.WriteStringProp(const Name, Value: String);
|
||||||
begin
|
begin
|
||||||
WriteCustomProp(Name, '''' + Value + '''');
|
WriteCustomProp(Name, '''' + Value + '''');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure BinToHex(Binary, Text: PChar; Count: integer);
|
procedure BinToHex(Binary, Text: PChar; Count: Integer);
|
||||||
const
|
const
|
||||||
HexChars: array[0..15] of char = '0123456789ABCDEF';
|
HexChars: array[0..15] of Char = '0123456789ABCDEF';
|
||||||
var
|
var
|
||||||
I: integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
for I := 0 to Count - 1 do
|
for I := 0 to Count - 1 do
|
||||||
begin
|
begin
|
||||||
Text^ := HexChars[(byte(Binary[I]) and $F0) shr 4];
|
Text^ := HexChars[(Byte(Binary[I]) and $F0) shr 4];
|
||||||
Inc(Text);
|
Inc(Text);
|
||||||
Text^ := HexChars[(byte(Binary[I]) and $0F)];
|
Text^ := HexChars[(Byte(Binary[I]) and $0F)];
|
||||||
Inc(Text);
|
Inc(Text);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -148,11 +148,11 @@ procedure TDfmWriter.WriteBinaryAsText(Input: TStream);
|
|||||||
const
|
const
|
||||||
BytesPerLine = 32;
|
BytesPerLine = 32;
|
||||||
var
|
var
|
||||||
MultiLine: boolean;
|
MultiLine: Boolean;
|
||||||
I: integer;
|
I: Integer;
|
||||||
Count: longint;
|
Count: Longint;
|
||||||
Buffer: array[0..BytesPerLine - 1] of char;
|
Buffer: array[0..BytesPerLine - 1] of Char;
|
||||||
Text: array[0..BytesPerLine * 2 - 1] of char;
|
Text: array[0..BytesPerLine * 2 - 1] of Char;
|
||||||
begin
|
begin
|
||||||
Count := Input.Size;
|
Count := Input.Size;
|
||||||
MultiLine := Count > BytesPerLine;
|
MultiLine := Count > BytesPerLine;
|
||||||
|
|||||||
18
frmMain.pas
18
frmMain.pas
@ -48,9 +48,9 @@ type
|
|||||||
procedure btnAboutClick(Sender: TObject);
|
procedure btnAboutClick(Sender: TObject);
|
||||||
procedure SaveRCClick(Sender: TObject);
|
procedure SaveRCClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
procedure GenerateDfmFile(const filename, frmname: string; wnd: HWND;
|
procedure GenerateDfmFile(const filename, frmname: String; wnd: HWND;
|
||||||
PasList: TStrings);
|
PasList: TStrings);
|
||||||
procedure GeneratePasFile(const filename, frmname: string; PasList: TStrings);
|
procedure GeneratePasFile(const filename, frmname: String; PasList: TStrings);
|
||||||
procedure EnableSavePas;
|
procedure EnableSavePas;
|
||||||
procedure EnableWndInput;
|
procedure EnableWndInput;
|
||||||
public
|
public
|
||||||
@ -87,7 +87,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.BrowsePasClick(Sender: TObject);
|
procedure TMainForm.BrowsePasClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
s: string;
|
s: String;
|
||||||
begin
|
begin
|
||||||
with SaveDialog1 do
|
with SaveDialog1 do
|
||||||
begin
|
begin
|
||||||
@ -119,7 +119,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.GenerateDfmFile(const filename, frmName: string;
|
procedure TMainForm.GenerateDfmFile(const filename, frmName: String;
|
||||||
wnd: HWND; PasList: TStrings);
|
wnd: HWND; PasList: TStrings);
|
||||||
var
|
var
|
||||||
OutStream: TFileStream;
|
OutStream: TFileStream;
|
||||||
@ -132,11 +132,11 @@ begin
|
|||||||
b1.Free;
|
b1.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.GeneratePasFile(const filename, frmname: string; PasList: TStrings);
|
procedure TMainForm.GeneratePasFile(const filename, frmname: String; PasList: TStrings);
|
||||||
var
|
var
|
||||||
title: string;
|
title: String;
|
||||||
fpas: TTextWriter;
|
fpas: TTextWriter;
|
||||||
i: integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
fpas := TTextWriter.CreateFile(filename);
|
fpas := TTextWriter.CreateFile(filename);
|
||||||
try
|
try
|
||||||
@ -177,7 +177,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.SavePasClick(Sender: TObject);
|
procedure TMainForm.SavePasClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
dfmName: string;
|
dfmName: String;
|
||||||
wnd: HWND;
|
wnd: HWND;
|
||||||
s: TStringList;
|
s: TStringList;
|
||||||
begin
|
begin
|
||||||
@ -197,7 +197,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.EnableSavePas;
|
procedure TMainForm.EnableSavePas;
|
||||||
var
|
var
|
||||||
UnitName: string;
|
UnitName: String;
|
||||||
begin
|
begin
|
||||||
UnitName := ChangeFileExt(ExtractFileName(PasFileName.Text), '');
|
UnitName := ChangeFileExt(ExtractFileName(PasFileName.Text), '');
|
||||||
SavePas.Enabled := IsValidIdent(FormName.Text) and IsValidIdent(UnitName) and
|
SavePas.Enabled := IsValidIdent(FormName.Text) and IsValidIdent(UnitName) and
|
||||||
|
|||||||
@ -38,7 +38,7 @@ uses StyleNames, WindowEnumerator;
|
|||||||
|
|
||||||
function GetClassNameAsString(wnd: HWND): String;
|
function GetClassNameAsString(wnd: HWND): String;
|
||||||
var
|
var
|
||||||
class_name: array [0..100] of char;
|
class_name: array [0..100] of Char;
|
||||||
len: Integer;
|
len: Integer;
|
||||||
begin
|
begin
|
||||||
len := GetClassName(wnd, class_name, 100);
|
len := GetClassName(wnd, class_name, 100);
|
||||||
@ -60,11 +60,11 @@ procedure TResults.Savelistdata1Click(Sender: TObject);
|
|||||||
var
|
var
|
||||||
f: TextFile;
|
f: TextFile;
|
||||||
n: TTreeNode;
|
n: TTreeNode;
|
||||||
i: integer;
|
i: Integer;
|
||||||
|
|
||||||
function RemoveTag(const s: string): string;
|
function RemoveTag(const s: String): String;
|
||||||
var
|
var
|
||||||
pos1: integer;
|
pos1: Integer;
|
||||||
begin
|
begin
|
||||||
pos1 := Pos('=', s);
|
pos1 := Pos('=', s);
|
||||||
Result := Copy(s, pos1 + 2, Length(s) - pos1 - 1);
|
Result := Copy(s, pos1 + 2, Length(s) - pos1 - 1);
|
||||||
@ -108,7 +108,7 @@ end;
|
|||||||
|
|
||||||
procedure TResults.GetWinInfoText(wnd: HWND; ParentNode: TTreeNode);
|
procedure TResults.GetWinInfoText(wnd: HWND; ParentNode: TTreeNode);
|
||||||
var
|
var
|
||||||
len: integer;
|
len: Integer;
|
||||||
Text: PChar;
|
Text: PChar;
|
||||||
begin
|
begin
|
||||||
len := GetWindowTextLength(wnd) + 1;
|
len := GetWindowTextLength(wnd) + 1;
|
||||||
@ -189,9 +189,9 @@ end;
|
|||||||
|
|
||||||
procedure TResults.GetWinInfoListData(wnd: HWND; ParentNode: TTreeNode);
|
procedure TResults.GetWinInfoListData(wnd: HWND; ParentNode: TTreeNode);
|
||||||
var
|
var
|
||||||
i, cbcount: integer;
|
i, cbcount: Integer;
|
||||||
node1, node2: TTreeNode;
|
node1, node2: TTreeNode;
|
||||||
itemtext: array [0..300] of char;
|
itemtext: array [0..300] of Char;
|
||||||
begin
|
begin
|
||||||
with TreeView1.Items do
|
with TreeView1.Items do
|
||||||
begin
|
begin
|
||||||
@ -199,11 +199,11 @@ begin
|
|||||||
cbcount := SendMessage(wnd, CB_GETCOUNT, 0, 0);
|
cbcount := SendMessage(wnd, CB_GETCOUNT, 0, 0);
|
||||||
for i := 1 to cbcount do
|
for i := 1 to cbcount do
|
||||||
begin
|
begin
|
||||||
SendMessage(wnd, CB_GETLBTEXT, i - 1, longint(@itemtext));
|
SendMessage(wnd, CB_GETLBTEXT, i - 1, Longint(@itemtext));
|
||||||
node2 := AddChild(node1, 'Item #' + IntToStr(i));
|
node2 := AddChild(node1, 'Item #' + IntToStr(i));
|
||||||
AddChild(node2, 'Text = ' + itemtext);
|
AddChild(node2, 'Text = ' + itemtext);
|
||||||
AddChild(node2, 'Data = ' +
|
AddChild(node2, 'Data = ' + IntToStr(SendMessage(wnd,
|
||||||
IntToStr(SendMessage(wnd, CB_GETITEMDATA, i - 1, 0)));
|
CB_GETITEMDATA, i - 1, 0)));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -233,10 +233,12 @@ var
|
|||||||
node2: TTreeNode;
|
node2: TTreeNode;
|
||||||
begin
|
begin
|
||||||
if not Assigned(ChildrenRootNode) then
|
if not Assigned(ChildrenRootNode) then
|
||||||
ChildrenRootNode := Form.TreeView1.Items.AddChild(ParentNode, 'Children information');
|
ChildrenRootNode := Form.TreeView1.Items.AddChild(ParentNode,
|
||||||
|
'Children information');
|
||||||
Inc(ChildCount);
|
Inc(ChildCount);
|
||||||
node2 := Form.TreeView1.Items.AddChild(ChildrenRootNode, 'Child #' + IntToStr(ChildCount));
|
node2 := Form.TreeView1.Items.AddChild(ChildrenRootNode, 'Child #' +
|
||||||
Form.GetWinInfo(integer(wnd), node2);
|
IntToStr(ChildCount));
|
||||||
|
Form.GetWinInfo(Integer(wnd), node2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TResults.GetWinInfoChildren(wnd: HWND; ParentNode: TTreeNode);
|
procedure TResults.GetWinInfoChildren(wnd: HWND; ParentNode: TTreeNode);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user