├── LICENSE.md
├── .gitattributes
├── DzTalkApp.dcr
├── DzTalkApp.res
├── .gitignore
├── Demo
├── App1
│ ├── App1.res
│ ├── App1.dpr
│ ├── UFrmMain.pas
│ ├── UFrmMain.dfm
│ └── App1.dproj
└── App2
│ ├── App2.res
│ ├── App2.dpr
│ ├── UFrmStream.pas
│ ├── UFrmStream.dfm
│ ├── UFrmMain.dfm
│ ├── UFrmMain.pas
│ └── App2.dproj
├── images
└── demo_screen.png
├── CompInstall.ini
├── DzTalkApp.dpk
├── DzTalkApp.pas
├── README.md
└── DzTalkApp.dproj
/LICENSE.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/LICENSE.md
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/DzTalkApp.dcr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/DzTalkApp.dcr
--------------------------------------------------------------------------------
/DzTalkApp.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/DzTalkApp.res
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.identcache
2 | *.local
3 | *.stat
4 | /Win32
5 | /Win64
6 | /Design
7 | Win32/
8 |
--------------------------------------------------------------------------------
/Demo/App1/App1.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/Demo/App1/App1.res
--------------------------------------------------------------------------------
/Demo/App2/App2.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/Demo/App2/App2.res
--------------------------------------------------------------------------------
/images/demo_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digao-dalpiaz/DzTalkApp/HEAD/images/demo_screen.png
--------------------------------------------------------------------------------
/Demo/App1/App1.dpr:
--------------------------------------------------------------------------------
1 | program App1;
2 |
3 | uses
4 | Vcl.Forms,
5 | UFrmMain in 'UFrmMain.pas' {FrmMain};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.MainFormOnTaskbar := True;
12 | Application.CreateForm(TFrmMain, FrmMain);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/CompInstall.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | Name=Digao Dalpiaz - DzTalkApp component
3 | Version=1.9
4 | DelphiVersions=XE3;XE4;XE5;XE6;XE7;XE8;10;10.1;10.2;10.3;10.4;11
5 | Packages=DzTalkApp
6 | AddLibrary=1
7 |
8 | [P_DzTalkApp]
9 | Allow64bit=1
10 | Install=1
11 |
12 | [GitHub]
13 | Repository=digao-dalpiaz/DzTalkApp
14 |
--------------------------------------------------------------------------------
/Demo/App2/App2.dpr:
--------------------------------------------------------------------------------
1 | program App2;
2 |
3 | uses
4 | Vcl.Forms,
5 | UFrmMain in 'UFrmMain.pas' {Form1},
6 | UFrmStream in 'UFrmStream.pas' {FrmStream};
7 |
8 | {$R *.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.MainFormOnTaskbar := True;
13 | Application.CreateForm(TForm1, Form1);
14 | Application.CreateForm(TFrmStream, FrmStream);
15 | Application.Run;
16 | end.
17 |
--------------------------------------------------------------------------------
/Demo/App2/UFrmStream.pas:
--------------------------------------------------------------------------------
1 | unit UFrmStream;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
8 |
9 | type
10 | TFrmStream = class(TForm)
11 | Img: TImage;
12 | private
13 | { Private declarations }
14 | public
15 | { Public declarations }
16 | end;
17 |
18 | var
19 | FrmStream: TFrmStream;
20 |
21 | implementation
22 |
23 | {$R *.dfm}
24 |
25 | end.
26 |
--------------------------------------------------------------------------------
/Demo/App2/UFrmStream.dfm:
--------------------------------------------------------------------------------
1 | object FrmStream: TFrmStream
2 | Left = 0
3 | Top = 0
4 | Caption = 'Stream received'
5 | ClientHeight = 331
6 | ClientWidth = 471
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object Img: TImage
17 | Left = 0
18 | Top = 0
19 | Width = 471
20 | Height = 331
21 | Align = alClient
22 | ExplicitWidth = 105
23 | ExplicitHeight = 105
24 | end
25 | end
26 |
--------------------------------------------------------------------------------
/Demo/App2/UFrmMain.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 0
3 | Top = 0
4 | Caption = 'App2'
5 | ClientHeight = 264
6 | ClientWidth = 449
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object M: TMemo
17 | Left = 8
18 | Top = 8
19 | Width = 433
20 | Height = 249
21 | ScrollBars = ssBoth
22 | TabOrder = 0
23 | end
24 | object TA: TDzTalkApp
25 | AutoActivate = True
26 | AutoFind = True
27 | MyWindowName = 'WND_APP2'
28 | DestWindowName = 'WND_APP1'
29 | Synchronous = True
30 | OnMessage = TAMessage
31 | Left = 224
32 | Top = 64
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/DzTalkApp.dpk:
--------------------------------------------------------------------------------
1 | package DzTalkApp;
2 |
3 | {$R *.res}
4 | {$R 'DzTalkApp.dcr'}
5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
6 | {$ALIGN 8}
7 | {$ASSERTIONS ON}
8 | {$BOOLEVAL OFF}
9 | {$DEBUGINFO OFF}
10 | {$EXTENDEDSYNTAX ON}
11 | {$IMPORTEDDATA ON}
12 | {$IOCHECKS ON}
13 | {$LOCALSYMBOLS OFF}
14 | {$LONGSTRINGS ON}
15 | {$OPENSTRINGS ON}
16 | {$OPTIMIZATION ON}
17 | {$OVERFLOWCHECKS OFF}
18 | {$RANGECHECKS OFF}
19 | {$REFERENCEINFO OFF}
20 | {$SAFEDIVIDE OFF}
21 | {$STACKFRAMES OFF}
22 | {$TYPEDADDRESS OFF}
23 | {$VARSTRINGCHECKS ON}
24 | {$WRITEABLECONST OFF}
25 | {$MINENUMSIZE 1}
26 | {$IMAGEBASE $400000}
27 | {$DEFINE RELEASE}
28 | {$ENDIF IMPLICITBUILDING}
29 | {$DESCRIPTION 'Digao Dalpiaz - DzTalkApp component'}
30 | {$IMPLICITBUILD ON}
31 |
32 | requires
33 | rtl,
34 | vcl;
35 |
36 | contains
37 | DzTalkApp in 'DzTalkApp.pas';
38 |
39 | end.
40 |
--------------------------------------------------------------------------------
/Demo/App2/UFrmMain.pas:
--------------------------------------------------------------------------------
1 | unit UFrmMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DzTalkApp, Vcl.StdCtrls;
8 |
9 | type
10 | TForm1 = class(TForm)
11 | TA: TDzTalkApp;
12 | M: TMemo;
13 | procedure TAMessage(Sender: TObject; From: HWND; ID: Word; P: Pointer;
14 | Size: Cardinal; var Result: Integer);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | var
22 | Form1: TForm1;
23 |
24 | implementation
25 |
26 | {$R *.dfm}
27 |
28 | uses System.StrUtils, UFrmStream;
29 |
30 | type
31 | TRecordData = packed record
32 | Number: Integer;
33 | Text: ShortString;
34 | Flag: Boolean;
35 | end;
36 |
37 | procedure TForm1.TAMessage(Sender: TObject; From: HWND; ID: Word; P: Pointer;
38 | Size: Cardinal; var Result: Integer);
39 | var R: TRecordData;
40 | S: TMemoryStream;
41 | B: Vcl.Graphics.TBitmap;
42 | begin
43 | if ID<=1000 then
44 | begin
45 | M.Lines.Add('Command received: '+IntToStr(ID));
46 | end else
47 | case ID of
48 | 1001: M.Lines.Add('Integer received: '+IntToStr(TA.AsInteger));
49 | 1002: M.Lines.Add('String received: '+TA.AsString);
50 | 1003: M.Lines.Add('Double received: '+FloatToStr(Double(P^)));
51 | 1004:
52 | begin
53 | R := TRecordData(P^);
54 |
55 | M.Lines.Add(Format('Record received: Number=%d / Text=%s / Flag=%s',
56 | [R.Number, R.Text, IfThen(R.Flag, 'TRUE', 'FALSE')]));
57 | end;
58 |
59 | 1005: //receive stream (screen shot)
60 | begin
61 | B := Vcl.Graphics.TBitmap.Create;
62 | try
63 | S := TMemoryStream.Create;
64 | try
65 | TA.AsStream(S);
66 | S.Position := 0;
67 | B.LoadFromStream(S);
68 | finally
69 | S.Free;
70 | end;
71 | FrmStream.Img.Picture.Assign(B);
72 | FrmStream.Show;
73 | finally
74 | B.Free;
75 | end;
76 |
77 | Result := 9999;
78 | end;
79 |
80 | else M.Lines.Add(Format('Unknown command ID: %d', [ID]));
81 | end;
82 | end;
83 |
84 | end.
85 |
--------------------------------------------------------------------------------
/Demo/App1/UFrmMain.pas:
--------------------------------------------------------------------------------
1 | unit UFrmMain;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DzTalkApp, Vcl.StdCtrls;
8 |
9 | type
10 | TFrmMain = class(TForm)
11 | TA: TDzTalkApp;
12 | BtnSendCmd: TButton;
13 | EdID: TEdit;
14 | Label1: TLabel;
15 | BtnSendInteger: TButton;
16 | Label2: TLabel;
17 | EdInteger: TEdit;
18 | BtnSendString: TButton;
19 | Label3: TLabel;
20 | EdString: TEdit;
21 | BtnSendDouble: TButton;
22 | Label4: TLabel;
23 | EdDouble: TEdit;
24 | BtnSendRecord: TButton;
25 | Label5: TLabel;
26 | EdRecNumber: TEdit;
27 | Label6: TLabel;
28 | EdRecText: TEdit;
29 | CkRecFlag: TCheckBox;
30 | BtnSendStream: TButton;
31 | Label7: TLabel;
32 | LbResult: TLabel;
33 | procedure BtnSendCmdClick(Sender: TObject);
34 | procedure BtnSendIntegerClick(Sender: TObject);
35 | procedure BtnSendStringClick(Sender: TObject);
36 | procedure BtnSendDoubleClick(Sender: TObject);
37 | procedure BtnSendRecordClick(Sender: TObject);
38 | procedure BtnSendStreamClick(Sender: TObject);
39 | private
40 | { Private declarations }
41 | public
42 | { Public declarations }
43 | end;
44 |
45 | var
46 | FrmMain: TFrmMain;
47 |
48 | implementation
49 |
50 | {$R *.dfm}
51 |
52 | type
53 | TRecordData = packed record
54 | Number: Integer;
55 | Text: ShortString;
56 | Flag: Boolean;
57 | end;
58 |
59 | procedure TFrmMain.BtnSendCmdClick(Sender: TObject);
60 | var ID: Word;
61 | begin
62 | ID := StrToInt(EdID.Text);
63 | if ID>1000 then
64 | raise Exception.Create('ID bigger than 1000 not allowed on this demo app');
65 |
66 | TA.Send(ID);
67 | end;
68 |
69 | procedure TFrmMain.BtnSendIntegerClick(Sender: TObject);
70 | begin
71 | TA.Send(1001, StrToInt( EdInteger.Text ) );
72 | end;
73 |
74 | procedure TFrmMain.BtnSendStringClick(Sender: TObject);
75 | begin
76 | TA.Send(1002, EdString.Text);
77 | end;
78 |
79 | procedure TFrmMain.BtnSendDoubleClick(Sender: TObject);
80 | var D: Double;
81 | begin
82 | D := StrToFloat(EdDouble.Text);
83 |
84 | TA.Send(1003, @D, SizeOf(D));
85 | end;
86 |
87 | procedure TFrmMain.BtnSendRecordClick(Sender: TObject);
88 | var R: TRecordData;
89 | begin
90 | R.Number := StrToInt(EdRecNumber.Text);
91 | R.Text := ShortString(EdRecText.Text);
92 | R.Flag := CkRecFlag.Checked;
93 |
94 | TA.Send(1004, @R, SizeOf(R));
95 | end;
96 |
97 | procedure TFrmMain.BtnSendStreamClick(Sender: TObject);
98 |
99 | procedure GetPrintScreen(var B: Vcl.Graphics.TBitmap);
100 | var DC: HDC;
101 | R: TRect;
102 | begin
103 | DC := GetDC(0);
104 | try
105 | Winapi.Windows.GetClientRect(WindowFromDC(DC), R);
106 | B.SetSize(R.Width, R.Height);
107 |
108 | BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);
109 | finally
110 | ReleaseDC(0, DC);
111 | end;
112 | end;
113 |
114 | var M: TMemoryStream;
115 | B: Vcl.Graphics.TBitmap;
116 | begin
117 | M := TMemoryStream.Create;
118 | try
119 | B := TBitmap.Create;
120 | try
121 | GetPrintScreen(B);
122 | B.SaveToStream(M);
123 | finally
124 | B.Free;
125 | end;
126 |
127 | TA.Send(1005, M);
128 | finally
129 | M.Free;
130 | end;
131 |
132 | LbResult.Caption := IntToStr(TA.GetResult);
133 | end;
134 |
135 | end.
136 |
--------------------------------------------------------------------------------
/Demo/App1/UFrmMain.dfm:
--------------------------------------------------------------------------------
1 | object FrmMain: TFrmMain
2 | Left = 0
3 | Top = 0
4 | Caption = 'App1'
5 | ClientHeight = 297
6 | ClientWidth = 447
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | PixelsPerInch = 96
15 | TextHeight = 13
16 | object Label1: TLabel
17 | Left = 144
18 | Top = 8
19 | Width = 61
20 | Height = 13
21 | Caption = 'Command ID'
22 | end
23 | object Label2: TLabel
24 | Left = 144
25 | Top = 56
26 | Width = 65
27 | Height = 13
28 | Caption = 'Integer Value'
29 | end
30 | object Label3: TLabel
31 | Left = 144
32 | Top = 104
33 | Width = 51
34 | Height = 13
35 | Caption = 'String text'
36 | end
37 | object Label4: TLabel
38 | Left = 144
39 | Top = 152
40 | Width = 62
41 | Height = 13
42 | Caption = 'Double value'
43 | end
44 | object Label5: TLabel
45 | Left = 144
46 | Top = 200
47 | Width = 37
48 | Height = 13
49 | Caption = 'Number'
50 | end
51 | object Label6: TLabel
52 | Left = 200
53 | Top = 200
54 | Width = 22
55 | Height = 13
56 | Caption = 'Text'
57 | end
58 | object Label7: TLabel
59 | Left = 144
60 | Top = 264
61 | Width = 34
62 | Height = 13
63 | Caption = 'Result:'
64 | end
65 | object LbResult: TLabel
66 | Left = 192
67 | Top = 264
68 | Width = 12
69 | Height = 13
70 | Caption = '---'
71 | end
72 | object BtnSendCmd: TButton
73 | Left = 8
74 | Top = 8
75 | Width = 121
76 | Height = 41
77 | Caption = 'Send Command'
78 | TabOrder = 0
79 | OnClick = BtnSendCmdClick
80 | end
81 | object EdID: TEdit
82 | Left = 144
83 | Top = 24
84 | Width = 121
85 | Height = 21
86 | NumbersOnly = True
87 | TabOrder = 1
88 | Text = '1'
89 | end
90 | object BtnSendInteger: TButton
91 | Left = 8
92 | Top = 56
93 | Width = 121
94 | Height = 41
95 | Caption = 'Send Integer Value'
96 | TabOrder = 2
97 | OnClick = BtnSendIntegerClick
98 | end
99 | object EdInteger: TEdit
100 | Left = 144
101 | Top = 72
102 | Width = 121
103 | Height = 21
104 | NumbersOnly = True
105 | TabOrder = 3
106 | Text = '123456'
107 | end
108 | object BtnSendString: TButton
109 | Left = 8
110 | Top = 104
111 | Width = 121
112 | Height = 41
113 | Caption = 'Send String'
114 | TabOrder = 4
115 | OnClick = BtnSendStringClick
116 | end
117 | object EdString: TEdit
118 | Left = 144
119 | Top = 120
120 | Width = 121
121 | Height = 21
122 | TabOrder = 5
123 | Text = 'TEST STRING'
124 | end
125 | object BtnSendDouble: TButton
126 | Left = 8
127 | Top = 152
128 | Width = 121
129 | Height = 41
130 | Caption = 'Send Double'
131 | TabOrder = 6
132 | OnClick = BtnSendDoubleClick
133 | end
134 | object EdDouble: TEdit
135 | Left = 144
136 | Top = 168
137 | Width = 121
138 | Height = 21
139 | TabOrder = 7
140 | Text = '15.49'
141 | end
142 | object BtnSendRecord: TButton
143 | Left = 8
144 | Top = 200
145 | Width = 121
146 | Height = 41
147 | Caption = 'Send Record'
148 | TabOrder = 8
149 | OnClick = BtnSendRecordClick
150 | end
151 | object EdRecNumber: TEdit
152 | Left = 144
153 | Top = 216
154 | Width = 49
155 | Height = 21
156 | TabOrder = 9
157 | Text = '123'
158 | end
159 | object EdRecText: TEdit
160 | Left = 200
161 | Top = 216
162 | Width = 89
163 | Height = 21
164 | TabOrder = 10
165 | Text = 'RECORD TEXT'
166 | end
167 | object CkRecFlag: TCheckBox
168 | Left = 304
169 | Top = 216
170 | Width = 89
171 | Height = 17
172 | Caption = 'Boolean Flag'
173 | Checked = True
174 | State = cbChecked
175 | TabOrder = 11
176 | end
177 | object BtnSendStream: TButton
178 | Left = 8
179 | Top = 248
180 | Width = 121
181 | Height = 41
182 | Caption = 'Send Stream'
183 | TabOrder = 12
184 | OnClick = BtnSendStreamClick
185 | end
186 | object TA: TDzTalkApp
187 | AutoActivate = True
188 | AutoFind = True
189 | MyWindowName = 'WND_APP1'
190 | DestWindowName = 'WND_APP2'
191 | Synchronous = True
192 | Left = 328
193 | Top = 48
194 | end
195 | end
196 |
--------------------------------------------------------------------------------
/DzTalkApp.pas:
--------------------------------------------------------------------------------
1 | {------------------------------------------------------------------------------
2 | TDzTalkApp component
3 | Developed by Rodrigo Depine Dalpiaz (digao dalpiaz)
4 | Non visual component to communicate between applications
5 |
6 | https://github.com/digao-dalpiaz/DzTalkApp
7 |
8 | Please, read the documentation at GitHub link.
9 | ------------------------------------------------------------------------------}
10 |
11 | {Send Record:
12 | > DzTalkApp.Send(ID, @Record, SizeOf(Record));
13 |
14 | Receive Record (OnMessage):
15 | > Record := TRecord(P^);
16 |
17 | Warning: always use "packed record" !!!
18 |
19 | // -------------------------------------------
20 |
21 | Send Double:
22 | > DzTalkApp.Send(ID, @Dbl, SizeOf(Dbl));
23 |
24 | Receive Double (OnMessage):
25 | > Dbl := Double(P^);
26 | }
27 |
28 | unit DzTalkApp;
29 |
30 | interface
31 |
32 | uses System.Classes, Winapi.Windows, Winapi.Messages, System.SysUtils;
33 |
34 | type
35 | TOnMessage = procedure(Sender: TObject; From: HWND; ID: Word; P: Pointer; Size: Cardinal;
36 | var Result: Integer) of object;
37 |
38 | TDzTalkApp = class(TComponent)
39 | private
40 | WinHandle: HWND; //Handle of VIRTUAL Window created by component
41 |
42 | FAbout: string;
43 |
44 | FAutoActivate: Boolean; //auto-activate on component Loaded
45 | FAutoFind: Boolean; //auto-find destination Window on Send
46 | FMyWindowName: string;
47 | FDestWindowName: string;
48 | FSynchronous: Boolean; //stay locked until other app release OnMessage event
49 |
50 | FActive: Boolean;
51 | FToHandle: HWND; //Destination Window Handle
52 |
53 | FOnMessage: TOnMessage;
54 |
55 | LastFrom: HWND; //last received handle
56 | LastData: Pointer; //last data pointer
57 | LastSize: Cardinal; //last size of data
58 | LastResult: Integer;
59 |
60 | procedure WndProc(var Msg: TMessage);
61 | procedure Msg_CopyData(var D: TWMCopyData);
62 |
63 | procedure IntEnv(ID: Word; P: Pointer; Size: Cardinal);
64 | procedure SetMyWindowName(const Value: string);
65 | protected
66 | procedure Loaded; override;
67 | public
68 | constructor Create(AOwner: TComponent); override;
69 | destructor Destroy; override;
70 |
71 | procedure Enable;
72 | procedure Disable;
73 |
74 | procedure FindDestWindow;
75 |
76 | procedure Send(ID: Word); overload;
77 | procedure Send(ID: Word; N: Integer); overload;
78 | procedure Send(ID: Word; const A: string); overload;
79 | procedure Send(ID: Word; P: Pointer; Size: Cardinal); overload;
80 | procedure Send(ID: Word; S: TMemoryStream); overload;
81 |
82 | function AsString: string; //read received message as string
83 | function AsInteger: Integer; //read received message as Integer
84 | procedure AsStream(Stm: TStream); //read received message as Stream
85 |
86 | property Active: Boolean read FActive;
87 | property ToHandle: HWND read FToHandle write FToHandle;
88 |
89 | function GetResult: Integer;
90 | published
91 | property About: string read FAbout;
92 |
93 | property AutoActivate: Boolean read FAutoActivate write FAutoActivate default False;
94 | property AutoFind: Boolean read FAutoFind write FAutoFind default False;
95 | property MyWindowName: string read FMyWindowName write SetMyWindowName;
96 | property DestWindowName: string read FDestWindowName write FDestWindowName;
97 | property Synchronous: Boolean read FSynchronous write FSynchronous default False;
98 |
99 | property OnMessage: TOnMessage read FOnMessage write FOnMessage;
100 | end;
101 |
102 | EDzTalkAppWndNotFound = class(Exception);
103 |
104 | procedure Register;
105 |
106 | implementation
107 |
108 | const STR_VERSION = '1.9';
109 |
110 | procedure Register;
111 | begin
112 | RegisterComponents('Digao', [TDzTalkApp]);
113 | end;
114 |
115 | const CONST_WM = WM_COPYDATA; {!}
116 |
117 | constructor TDzTalkApp.Create(AOwner: TComponent);
118 | begin
119 | inherited;
120 |
121 | FAbout := 'Digao Dalpiaz / Version '+STR_VERSION;
122 |
123 | FActive := False;
124 | end;
125 |
126 | destructor TDzTalkApp.Destroy;
127 | begin
128 | if FActive then Disable;
129 |
130 | inherited;
131 | end;
132 |
133 | procedure TDzTalkApp.Loaded;
134 | begin
135 | inherited;
136 |
137 | if not (csDesigning in ComponentState) then
138 | if FAutoActivate then Enable;
139 | end;
140 |
141 | procedure TDzTalkApp.Enable;
142 | begin
143 | if FActive then
144 | raise Exception.Create('TalkApp already active');
145 |
146 | if FMyWindowName=string.Empty then
147 | raise Exception.Create('Window name is blank');
148 |
149 | WinHandle := AllocateHWND(WndProc);
150 | SetWindowText(WinHandle, PChar(FMyWindowName));
151 |
152 | FActive := True;
153 | end;
154 |
155 | procedure TDzTalkApp.Disable;
156 | begin
157 | if not FActive then
158 | raise Exception.Create('TalkApp is not active');
159 |
160 | DeallocateHWnd(WinHandle);
161 |
162 | FActive := False;
163 | end;
164 |
165 | procedure TDzTalkApp.SetMyWindowName(const Value: string);
166 | begin
167 | if Value<>FMyWindowName then
168 | begin
169 | if FActive then
170 | raise Exception.Create('Can''t change window name while handle is active');
171 |
172 | FMyWindowName := Value;
173 | end;
174 | end;
175 |
176 | procedure TDzTalkApp.WndProc(var Msg: TMessage);
177 | begin
178 | if Msg.Msg = CONST_WM then //CopyData message
179 | begin
180 | if not FSynchronous then
181 | ReplyMessage(Msg.Result);
182 |
183 | Msg_CopyData( TWMCopyData(Msg) );
184 | end
185 | else
186 | Msg.Result := DefWindowProc(WinHandle, Msg.Msg, Msg.WParam, Msg.LParam);
187 | end;
188 |
189 | procedure TDzTalkApp.Msg_CopyData(var D: TWMCopyData);
190 | var Res: Integer;
191 | begin
192 | LastFrom := D.From;
193 | LastData := D.CopyDataStruct.lpData;
194 | LastSize := D.CopyDataStruct.cbData;
195 |
196 | Res := 0;
197 | if Assigned(FOnMessage) then
198 | FOnMessage(Self, D.From,
199 | D.CopyDataStruct.dwData, D.CopyDataStruct.lpData, D.CopyDataStruct.cbData, Res);
200 |
201 | D.Result := Res;
202 | end;
203 |
204 | procedure TDzTalkApp.IntEnv(ID: Word; P: Pointer; Size: Cardinal);
205 | var D: TCopyDataStruct;
206 | begin
207 | D.dwData := ID;
208 | D.cbData := Size;
209 | D.lpData := P;
210 |
211 | LastResult :=
212 | SendMessage(FToHandle, CONST_WM, WinHandle, Integer(@D));
213 | end;
214 |
215 | procedure TDzTalkApp.Send(ID: Word);
216 | begin
217 | Send(ID, nil, 0);
218 | end;
219 |
220 | procedure TDzTalkApp.Send(ID: Word; N: Integer);
221 | begin
222 | Send(ID, @N, SizeOf(N));
223 | end;
224 |
225 | procedure TDzTalkApp.Send(ID: Word; const A: string);
226 | var S: TStringStream;
227 | begin
228 | S := TStringStream.Create(A, TEncoding.Unicode);
229 | try
230 | Send(ID, S);
231 | finally
232 | S.Free;
233 | end;
234 | end;
235 |
236 | procedure TDzTalkApp.Send(ID: Word; S: TMemoryStream);
237 | begin
238 | Send(ID, S.Memory, S.Size);
239 | end;
240 |
241 | procedure TDzTalkApp.Send(ID: Word; P: Pointer; Size: Cardinal);
242 | begin
243 | if not FActive then
244 | raise Exception.Create('TalkApp is not active to send');
245 |
246 | if FAutoFind then FindDestWindow;
247 |
248 | IntEnv(ID, P, Size);
249 | end;
250 |
251 | procedure TDzTalkApp.FindDestWindow;
252 | var H: HWND;
253 | begin
254 | if FDestWindowName=string.Empty then
255 | raise Exception.Create('Destination window name is blank');
256 |
257 | H := FindWindow(nil, PChar(FDestWindowName));
258 |
259 | if H<>0 then
260 | FToHandle := H
261 | else
262 | raise EDzTalkAppWndNotFound.Create('Destination app window not found');
263 | end;
264 |
265 | function TDzTalkApp.AsString: string;
266 | var S: TStringStream;
267 | begin
268 | S := TStringStream.Create(string.Empty, TEncoding.Unicode);
269 | try
270 | S.WriteData(LastData, LastSize);
271 | Result := S.DataString;
272 | finally
273 | S.Free;
274 | end;
275 | end;
276 |
277 | function TDzTalkApp.AsInteger: Integer;
278 | begin
279 | Result := Integer(LastData^);
280 | end;
281 |
282 | procedure TDzTalkApp.AsStream(Stm: TStream);
283 | begin
284 | Stm.WriteData(LastData, LastSize);
285 | end;
286 |
287 | function TDzTalkApp.GetResult: Integer;
288 | begin
289 | Result := LastResult;
290 | end;
291 |
292 | end.
293 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DzTalkApp
2 |
3 | ## Delphi non-visual component to communicate between applications
4 |
5 | 
6 | 
7 | 
8 | 
9 |
10 | [](https://ko-fi.com/C0C53LVFN)
11 |
12 | - [What's New](#whats-new)
13 | - [Component Description](#component-description)
14 | - [Installing](#installing)
15 | - [How to use](#how-to-use)
16 | - [Properties](#properties)
17 | - [Methods](#methods)
18 | - [Events](#events)
19 | - [How to send and read custom types](#how-to-send-and-read-custom-types)
20 |
21 | 
22 |
23 | ## What's New
24 |
25 | - 09/12/2021 (Version 1.9)
26 |
27 | - Delphi 11 auto-install support.
28 |
29 |
30 | Click here to view the entire changelog
31 |
32 | - 03/13/2021 (Version 1.8)
33 |
34 | - Removed CompInstall.exe from component sources due to AV false positive warning (now you can get it directly from CompInstall repository).
35 |
36 | - 02/01/2021 (Version 1.7)
37 |
38 | - Removed Delphi XE2 from the list of environments as it was never possible to compile in this version.
39 |
40 | - 12/18/2020 (Version 1.6)
41 |
42 | - Updated Component Installer app (Fixed call to rsvars.bat when Delphi is installed in a path containing spaces characters).
43 |
44 | - 11/28/2020 (Version 1.5)
45 |
46 | - FMX support.
47 |
48 | - 11/01/2020 (Version 1.4)
49 |
50 | - Implemented Unicode string send method support.
51 |
52 | - 10/31/2020 (Version 1.3)
53 |
54 | - Included Delphi 10.4 auto-install support.
55 |
56 | - 10/27/2020 (Version 1.2)
57 |
58 | - Fixed previous Delphi versions (at least on XE2, XE3, XE4 and XE5) package tag. It was causing package compilation error.
59 |
60 | - 10/26/2020 (Version 1.1)
61 |
62 | - Updated CompInstall to version 2.0 (now supports GitHub auto-update)
63 |
64 | - 05/03/2020
65 |
66 | - Updated CompInstall to version 1.2
67 |
68 | - 03/11/2019
69 |
70 | - Add Result Code possibility.
71 | - Add method to send Stream data.
72 | - OnMessage event declaration changed. :warning:
73 |
74 |
75 |
76 | ## Component Description
77 |
78 | DzTalkApp allows you to send data between distinct applications. You can send simple data type like Integer or String, and even complex data, like a record.
79 |
80 | ## Installing
81 |
82 | ### Auto install
83 |
84 | 1. Download Component Installer from: https://github.com/digao-dalpiaz/CompInstall/releases/latest
85 | 2. Put **CompInstall.exe** into the component repository sources folder.
86 | 3. Close Delphi IDE and run **CompInstall.exe** app.
87 |
88 | ### Manual install
89 |
90 | 1. Open **DzTalkApp** package in Delphi.
91 | 2. Ensure **Win32** Platform and **Release** config are selected.
92 | 3. Then **Build** and **Install**.
93 | 4. If you want to use Win64 platform, select this platform and Build again.
94 | 5. Add sub-path Win32\Release to the Library paths at Tools\Options using 32-bit option, and if you have compiled to 64 bit platform, add sub-path Win64\Release using 64-bit option.
95 |
96 | Supports Delphi XE3..Delphi 11
97 |
98 | ## How to use
99 |
100 | Drop a TDzTalkApp in the source and destination applications.
101 |
102 | You just need to set the window name in the component, and the communication will occur between window handles.
103 |
104 | In the destination application, just set the OnMessage event to receive and read data.
105 |
106 | ## Properties
107 |
108 | `AutoActivate: Boolean` = Auto-enable the handle on component loaded. This will only works when you set other properties in design-time mode.
109 |
110 | `AutoFind: Boolean` = When AutoFind is enabled, on each Send command, the component will find the destination window handle.
111 |
112 | `MyWindowName: String` = Specify the source handle name. This property is only needed if this app will receive communication. Otherwise you only need to set the destination window name.
113 |
114 | `DestWindowName: String` = Specify the destination window name. This property is only needed if this app will send communication, otherwise you only need to set the source window handle name.
115 |
116 | `Synchronous: Boolean` = If this property is enabled, when you send a command to other app, the execution pointer will be released only after the destination app method `OnMessage` ends. If this property is disabled, when the destination receive the message, immediately the execution pointer is released in the source application.
117 |
118 | `Active: Boolean` (public read-only) = Indicates if the component is enabled or disabled (see `Enable` and `Disable` methods).
119 |
120 | `ToHandle: HWND` (public) = Stores the last destination window handle. You can set this property manually if needed, but I recommend you to use `FindDestWindow` method instead.
121 |
122 | ## Methods
123 |
124 | ```delphi
125 | procedure Enable;
126 | ```
127 |
128 | Enables the window handle to send and receive messages. You need to specify the name of window handle before use this method.
129 |
130 | ```delphi
131 | procedure Disable;
132 | ```
133 |
134 | Disables the window handle.
135 |
136 | ```delphi
137 | procedure FindDestWindow;
138 | ```
139 |
140 | Find and set destination window handle by the name defined in `DestWindowName` property. If the destination window is not found, an error is raised, using class `EDzTalkAppWndNotFound`.
141 |
142 | ```delphi
143 | procedure Send(ID: Word); overload;
144 | procedure Send(ID: Word; N: Integer); overload;
145 | procedure Send(ID: Word; const A: string); overload;
146 | procedure Send(ID: Word; P: Pointer; Size: Cardinal); overload;
147 | procedure Send(ID: Word; S: TMemoryStream); overload;
148 | ```
149 |
150 | Use **Send** methods to send a message to destination application. To send messages, the component needs to be enabled (use `Enable` method) and needs a destination window name defined (use `DestWindowName` property).
151 |
152 | The overloads methods allows you to send:
153 |
154 | - Only a command, using `ID` parameter
155 |
156 | - A command with an Integer parameter, using `N` parameter
157 |
158 | - A command with a String parameter, using `A` parameter
159 |
160 | - A command with any kind of data parameter, using `P` parameter and specifying the size of data parameter.
161 |
162 | - A command with a memory data stream, using `S` parameter.
163 |
164 | ```delphi
165 | function AsString: string;
166 | ```
167 |
168 | Use this function inside the OnMessage event to get a message data as String type.
169 |
170 | ```delphi
171 | function AsInteger: Integer;
172 | ```
173 |
174 | Use this function inside the OnMessage event to get a message data as Integer type.
175 |
176 | ```delphi
177 | procedure AsStream(Stm: TStream);
178 | ```
179 |
180 | Use this procedure inside the OnMessage event to get a message data as TStream type (the object need to be created before call this method).
181 |
182 | ```delphi
183 | function GetResult: Integer;
184 | ```
185 |
186 | You can use this function right after call `Send` method to get the result code of the message received by the destination app. You can set this result in **OnMessage** event at destination application. *Please see description of OnMessage event.*
187 |
188 | ## Events
189 |
190 | ```delphi
191 | procedure OnMessage(Sender: TObject; From: HWND; ID: Word; P: Pointer; Size: Cardinal; var Result: Integer);
192 | ```
193 |
194 | This method will occur in the destination app when a message is received. The `From` parameter indicates the handle of the source window. The `ID` parameter indicates the code of the message used in the `Send` method at the source app. The `P` parameter has the pointer of the message data. The `Size` parameter allows you to know the size of the data received.
195 |
196 | The `Result` parameter allows you to set a result code to return to the sender application (the sender application should use `GetResult` function right after use `Send` method to read this result code).
197 |
198 | You can use the `AsString`, `AsInteger` or `AsStream` methods to get message data content as specific type.
199 |
200 | ## How to send and read custom types
201 |
202 | ### Record types:
203 |
204 | You can send record structure. To do this, ensure you are always using `packed record`, because this kind of record will use a fixed size structure.
205 |
206 | **To send a record, use:**
207 |
208 | ```delphi
209 | type
210 | TData = packed record
211 | Number: Integer;
212 | Text: ShortString;
213 | Flag: Boolean;
214 | end;
215 |
216 | var R: TData;
217 | begin
218 | R.Number := 100;
219 | R.Text := 'TEST';
220 | R.Flag := True;
221 |
222 | DzTalkApp.Send(1, @R, SizeOf(R));
223 | end;
224 | ```
225 |
226 | **To receive this record using OnMessage event:**
227 |
228 | ```delphi
229 | var R: TData;
230 | begin
231 | R := TData(P^);
232 | end;
233 | ```
234 |
235 | > Of course, the packed record on destination application must have the same structure as the record used in the sender application.
236 |
237 | ### Simple types:
238 |
239 | **To send a Double type:**
240 |
241 | ```delphi
242 | var D: Double;
243 | begin
244 | DzTalkApp.Send(1, @D, SizeOf(D));
245 | end;
246 | ```
247 |
248 | **To receive a Double type (OnMessage event):**
249 |
250 | ```delphi
251 | var D: Double;
252 | begin
253 | D := Double(P^);
254 | end;
255 | ```
256 |
--------------------------------------------------------------------------------
/DzTalkApp.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {45120C4C-2880-42D0-A28A-BA38C2D2A50E}
4 | DzTalkApp.dpk
5 | 18.8
6 | VCL
7 | True
8 | Release
9 | Win32
10 | 1
11 | Package
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Cfg_1
29 | true
30 | true
31 |
32 |
33 | true
34 | Base
35 | true
36 |
37 |
38 | true
39 | Cfg_2
40 | true
41 | true
42 |
43 |
44 | .\$(Platform)\$(Config)
45 | .\$(Platform)\$(Config)
46 | false
47 | false
48 | false
49 | false
50 | false
51 | true
52 | true
53 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
54 | 1046
55 | DzTalkApp
56 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
57 | Digao Dalpiaz - TalkApp Component
58 |
59 |
60 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
61 | Debug
62 | true
63 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
64 | 1033
65 | vcl;rtl;$(DCC_UsePackage)
66 |
67 |
68 | DEBUG;$(DCC_Define)
69 | true
70 | false
71 | true
72 | true
73 | true
74 |
75 |
76 | false
77 |
78 |
79 | false
80 | RELEASE;$(DCC_Define)
81 | 0
82 |
83 |
84 | true
85 | 1033
86 | Digao Dalpiaz - DzTalkApp component
87 |
88 |
89 |
90 | MainSource
91 |
92 |
93 |
94 |
95 |
96 |
97 | Cfg_2
98 | Base
99 |
100 |
101 | Base
102 |
103 |
104 | Cfg_1
105 | Base
106 |
107 |
108 |
109 | Delphi.Personality.12
110 | Package
111 |
112 |
113 |
114 | DzTalkApp.dpk
115 |
116 |
117 | Microsoft Office 2000 Sample Automation Server Wrapper Components
118 | Microsoft Office XP Sample Automation Server Wrapper Components
119 |
120 |
121 |
122 |
123 |
124 | true
125 |
126 |
127 |
128 |
129 | true
130 |
131 |
132 |
133 |
134 | true
135 |
136 |
137 |
138 |
139 | true
140 |
141 |
142 |
143 |
144 | true
145 |
146 |
147 |
148 |
149 | DzTalkApp.bpl
150 | true
151 |
152 |
153 |
154 |
155 | 1
156 |
157 |
158 | 0
159 |
160 |
161 |
162 |
163 | classes
164 | 1
165 |
166 |
167 | classes
168 | 1
169 |
170 |
171 |
172 |
173 | res\xml
174 | 1
175 |
176 |
177 | res\xml
178 | 1
179 |
180 |
181 |
182 |
183 | library\lib\armeabi-v7a
184 | 1
185 |
186 |
187 |
188 |
189 | library\lib\armeabi
190 | 1
191 |
192 |
193 | library\lib\armeabi
194 | 1
195 |
196 |
197 |
198 |
199 | library\lib\armeabi-v7a
200 | 1
201 |
202 |
203 |
204 |
205 | library\lib\mips
206 | 1
207 |
208 |
209 | library\lib\mips
210 | 1
211 |
212 |
213 |
214 |
215 | library\lib\armeabi-v7a
216 | 1
217 |
218 |
219 | library\lib\arm64-v8a
220 | 1
221 |
222 |
223 |
224 |
225 | library\lib\armeabi-v7a
226 | 1
227 |
228 |
229 |
230 |
231 | res\drawable
232 | 1
233 |
234 |
235 | res\drawable
236 | 1
237 |
238 |
239 |
240 |
241 | res\values
242 | 1
243 |
244 |
245 | res\values
246 | 1
247 |
248 |
249 |
250 |
251 | res\values-v21
252 | 1
253 |
254 |
255 | res\values-v21
256 | 1
257 |
258 |
259 |
260 |
261 | res\values
262 | 1
263 |
264 |
265 | res\values
266 | 1
267 |
268 |
269 |
270 |
271 | res\drawable
272 | 1
273 |
274 |
275 | res\drawable
276 | 1
277 |
278 |
279 |
280 |
281 | res\drawable-xxhdpi
282 | 1
283 |
284 |
285 | res\drawable-xxhdpi
286 | 1
287 |
288 |
289 |
290 |
291 | res\drawable-ldpi
292 | 1
293 |
294 |
295 | res\drawable-ldpi
296 | 1
297 |
298 |
299 |
300 |
301 | res\drawable-mdpi
302 | 1
303 |
304 |
305 | res\drawable-mdpi
306 | 1
307 |
308 |
309 |
310 |
311 | res\drawable-hdpi
312 | 1
313 |
314 |
315 | res\drawable-hdpi
316 | 1
317 |
318 |
319 |
320 |
321 | res\drawable-xhdpi
322 | 1
323 |
324 |
325 | res\drawable-xhdpi
326 | 1
327 |
328 |
329 |
330 |
331 | res\drawable-mdpi
332 | 1
333 |
334 |
335 | res\drawable-mdpi
336 | 1
337 |
338 |
339 |
340 |
341 | res\drawable-hdpi
342 | 1
343 |
344 |
345 | res\drawable-hdpi
346 | 1
347 |
348 |
349 |
350 |
351 | res\drawable-xhdpi
352 | 1
353 |
354 |
355 | res\drawable-xhdpi
356 | 1
357 |
358 |
359 |
360 |
361 | res\drawable-xxhdpi
362 | 1
363 |
364 |
365 | res\drawable-xxhdpi
366 | 1
367 |
368 |
369 |
370 |
371 | res\drawable-xxxhdpi
372 | 1
373 |
374 |
375 | res\drawable-xxxhdpi
376 | 1
377 |
378 |
379 |
380 |
381 | res\drawable-small
382 | 1
383 |
384 |
385 | res\drawable-small
386 | 1
387 |
388 |
389 |
390 |
391 | res\drawable-normal
392 | 1
393 |
394 |
395 | res\drawable-normal
396 | 1
397 |
398 |
399 |
400 |
401 | res\drawable-large
402 | 1
403 |
404 |
405 | res\drawable-large
406 | 1
407 |
408 |
409 |
410 |
411 | res\drawable-xlarge
412 | 1
413 |
414 |
415 | res\drawable-xlarge
416 | 1
417 |
418 |
419 |
420 |
421 | res\values
422 | 1
423 |
424 |
425 | res\values
426 | 1
427 |
428 |
429 |
430 |
431 | 1
432 |
433 |
434 | 1
435 |
436 |
437 | 0
438 |
439 |
440 |
441 |
442 | 1
443 | .framework
444 |
445 |
446 | 1
447 | .framework
448 |
449 |
450 | 0
451 |
452 |
453 |
454 |
455 | 1
456 | .dylib
457 |
458 |
459 | 1
460 | .dylib
461 |
462 |
463 | 0
464 | .dll;.bpl
465 |
466 |
467 |
468 |
469 | 1
470 | .dylib
471 |
472 |
473 | 1
474 | .dylib
475 |
476 |
477 | 1
478 | .dylib
479 |
480 |
481 | 1
482 | .dylib
483 |
484 |
485 | 1
486 | .dylib
487 |
488 |
489 | 0
490 | .bpl
491 |
492 |
493 |
494 |
495 | 0
496 |
497 |
498 | 0
499 |
500 |
501 | 0
502 |
503 |
504 | 0
505 |
506 |
507 | 0
508 |
509 |
510 | 0
511 |
512 |
513 | 0
514 |
515 |
516 | 0
517 |
518 |
519 |
520 |
521 | 1
522 |
523 |
524 | 1
525 |
526 |
527 | 1
528 |
529 |
530 |
531 |
532 | 1
533 |
534 |
535 | 1
536 |
537 |
538 | 1
539 |
540 |
541 |
542 |
543 | 1
544 |
545 |
546 | 1
547 |
548 |
549 | 1
550 |
551 |
552 |
553 |
554 | 1
555 |
556 |
557 | 1
558 |
559 |
560 | 1
561 |
562 |
563 |
564 |
565 | 1
566 |
567 |
568 | 1
569 |
570 |
571 | 1
572 |
573 |
574 |
575 |
576 | 1
577 |
578 |
579 | 1
580 |
581 |
582 | 1
583 |
584 |
585 |
586 |
587 | 1
588 |
589 |
590 | 1
591 |
592 |
593 | 1
594 |
595 |
596 |
597 |
598 | 1
599 |
600 |
601 | 1
602 |
603 |
604 | 1
605 |
606 |
607 |
608 |
609 | 1
610 |
611 |
612 | 1
613 |
614 |
615 | 1
616 |
617 |
618 |
619 |
620 | 1
621 |
622 |
623 | 1
624 |
625 |
626 | 1
627 |
628 |
629 |
630 |
631 | 1
632 |
633 |
634 | 1
635 |
636 |
637 | 1
638 |
639 |
640 |
641 |
642 | 1
643 |
644 |
645 | 1
646 |
647 |
648 | 1
649 |
650 |
651 |
652 |
653 | 1
654 |
655 |
656 | 1
657 |
658 |
659 | 1
660 |
661 |
662 |
663 |
664 | 1
665 |
666 |
667 | 1
668 |
669 |
670 | 1
671 |
672 |
673 |
674 |
675 | 1
676 |
677 |
678 | 1
679 |
680 |
681 | 1
682 |
683 |
684 |
685 |
686 | 1
687 |
688 |
689 | 1
690 |
691 |
692 | 1
693 |
694 |
695 |
696 |
697 | 1
698 |
699 |
700 | 1
701 |
702 |
703 | 1
704 |
705 |
706 |
707 |
708 | 1
709 |
710 |
711 | 1
712 |
713 |
714 | 1
715 |
716 |
717 |
718 |
719 | 1
720 |
721 |
722 | 1
723 |
724 |
725 | 1
726 |
727 |
728 |
729 |
730 | 1
731 |
732 |
733 | 1
734 |
735 |
736 | 1
737 |
738 |
739 |
740 |
741 | 1
742 |
743 |
744 | 1
745 |
746 |
747 | 1
748 |
749 |
750 |
751 |
752 | 1
753 |
754 |
755 | 1
756 |
757 |
758 | 1
759 |
760 |
761 |
762 |
763 | 1
764 |
765 |
766 | 1
767 |
768 |
769 | 1
770 |
771 |
772 |
773 |
774 | 1
775 |
776 |
777 | 1
778 |
779 |
780 | 1
781 |
782 |
783 |
784 |
785 | 1
786 |
787 |
788 | 1
789 |
790 |
791 | 1
792 |
793 |
794 |
795 |
796 | 1
797 |
798 |
799 | 1
800 |
801 |
802 | 1
803 |
804 |
805 |
806 |
807 | 1
808 |
809 |
810 | 1
811 |
812 |
813 | 1
814 |
815 |
816 |
817 |
818 | 1
819 |
820 |
821 | 1
822 |
823 |
824 | 1
825 |
826 |
827 |
828 |
829 | 1
830 |
831 |
832 | 1
833 |
834 |
835 |
836 |
837 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
838 | 1
839 |
840 |
841 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
842 | 1
843 |
844 |
845 |
846 |
847 |
848 |
849 |
850 | 1
851 |
852 |
853 | 1
854 |
855 |
856 | 1
857 |
858 |
859 |
860 |
861 |
862 |
863 |
864 | Contents\Resources
865 | 1
866 |
867 |
868 | Contents\Resources
869 | 1
870 |
871 |
872 |
873 |
874 | library\lib\armeabi-v7a
875 | 1
876 |
877 |
878 | library\lib\arm64-v8a
879 | 1
880 |
881 |
882 | 1
883 |
884 |
885 | 1
886 |
887 |
888 | 1
889 |
890 |
891 | 1
892 |
893 |
894 | 1
895 |
896 |
897 | 1
898 |
899 |
900 | 0
901 |
902 |
903 |
904 |
905 | library\lib\armeabi-v7a
906 | 1
907 |
908 |
909 |
910 |
911 | 1
912 |
913 |
914 | 1
915 |
916 |
917 |
918 |
919 | Assets
920 | 1
921 |
922 |
923 | Assets
924 | 1
925 |
926 |
927 |
928 |
929 | Assets
930 | 1
931 |
932 |
933 | Assets
934 | 1
935 |
936 |
937 |
938 |
939 |
940 |
941 |
942 |
943 |
944 |
945 |
946 |
947 |
948 |
949 | True
950 |
951 |
952 | 12
953 |
954 |
955 |
956 |
957 |
958 |
--------------------------------------------------------------------------------
/Demo/App1/App1.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {535B749B-3E39-476B-9FF5-373AC1198CD0}
4 | 18.8
5 | VCL
6 | App1.dpr
7 | True
8 | Debug
9 | Win32
10 | 1
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Cfg_1
29 | true
30 | true
31 |
32 |
33 | true
34 | Base
35 | true
36 |
37 |
38 | true
39 | Cfg_2
40 | true
41 | true
42 |
43 |
44 | .\$(Platform)\$(Config)
45 | .\$(Platform)\$(Config)
46 | false
47 | false
48 | false
49 | false
50 | false
51 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
52 | $(BDS)\bin\delphi_PROJECTICON.ico
53 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
54 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
55 | App1
56 |
57 |
58 | DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;svnui;dsnapcon;FireDACADSDriver;DzDirSeek;FireDACMSAccDriver;fmxFireDAC;vclimg;TeeDB;FireDAC;vcltouch;vcldb;bindcompfmx;svn;FireDACSqliteDriver;FireDACPgDriver;inetdb;DzMiniTable;FMXTee;soaprtl;DbxCommonDriver;FmxTeeUI;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;Tee;fmxobj;vclwinx;rtl;DzTalkApp;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;DzSocket;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;SynEdit_R;RESTBackendComponents;TeeUI;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;DzListHeader;vclie;DzHTMLText;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;DzNotepad;FireDACCommonODBC;FireDACCommonDriver;DamPackage;inet;fmxase;$(DCC_UsePackage)
59 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
60 | Debug
61 | true
62 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
63 | 1033
64 | $(BDS)\bin\default_app.manifest
65 |
66 |
67 | DEBUG;$(DCC_Define)
68 | true
69 | false
70 | true
71 | true
72 | true
73 |
74 |
75 | false
76 | true
77 | PerMonitorV2
78 |
79 |
80 | false
81 | RELEASE;$(DCC_Define)
82 | 0
83 | 0
84 |
85 |
86 | true
87 | PerMonitorV2
88 |
89 |
90 |
91 | MainSource
92 |
93 |
94 |
95 | dfm
96 |
97 |
98 | Cfg_2
99 | Base
100 |
101 |
102 | Base
103 |
104 |
105 | Cfg_1
106 | Base
107 |
108 |
109 |
110 | Delphi.Personality.12
111 | Application
112 |
113 |
114 |
115 | App1.dpr
116 |
117 |
118 |
119 |
120 |
121 | App1.exe
122 | true
123 |
124 |
125 |
126 |
127 | 1
128 |
129 |
130 | Contents\MacOS
131 | 1
132 |
133 |
134 | 0
135 |
136 |
137 |
138 |
139 | classes
140 | 1
141 |
142 |
143 | classes
144 | 1
145 |
146 |
147 |
148 |
149 | res\xml
150 | 1
151 |
152 |
153 | res\xml
154 | 1
155 |
156 |
157 |
158 |
159 | library\lib\armeabi-v7a
160 | 1
161 |
162 |
163 |
164 |
165 | library\lib\armeabi
166 | 1
167 |
168 |
169 | library\lib\armeabi
170 | 1
171 |
172 |
173 |
174 |
175 | library\lib\armeabi-v7a
176 | 1
177 |
178 |
179 |
180 |
181 | library\lib\mips
182 | 1
183 |
184 |
185 | library\lib\mips
186 | 1
187 |
188 |
189 |
190 |
191 | library\lib\armeabi-v7a
192 | 1
193 |
194 |
195 | library\lib\arm64-v8a
196 | 1
197 |
198 |
199 |
200 |
201 | library\lib\armeabi-v7a
202 | 1
203 |
204 |
205 |
206 |
207 | res\drawable
208 | 1
209 |
210 |
211 | res\drawable
212 | 1
213 |
214 |
215 |
216 |
217 | res\values
218 | 1
219 |
220 |
221 | res\values
222 | 1
223 |
224 |
225 |
226 |
227 | res\values-v21
228 | 1
229 |
230 |
231 | res\values-v21
232 | 1
233 |
234 |
235 |
236 |
237 | res\values
238 | 1
239 |
240 |
241 | res\values
242 | 1
243 |
244 |
245 |
246 |
247 | res\drawable
248 | 1
249 |
250 |
251 | res\drawable
252 | 1
253 |
254 |
255 |
256 |
257 | res\drawable-xxhdpi
258 | 1
259 |
260 |
261 | res\drawable-xxhdpi
262 | 1
263 |
264 |
265 |
266 |
267 | res\drawable-ldpi
268 | 1
269 |
270 |
271 | res\drawable-ldpi
272 | 1
273 |
274 |
275 |
276 |
277 | res\drawable-mdpi
278 | 1
279 |
280 |
281 | res\drawable-mdpi
282 | 1
283 |
284 |
285 |
286 |
287 | res\drawable-hdpi
288 | 1
289 |
290 |
291 | res\drawable-hdpi
292 | 1
293 |
294 |
295 |
296 |
297 | res\drawable-xhdpi
298 | 1
299 |
300 |
301 | res\drawable-xhdpi
302 | 1
303 |
304 |
305 |
306 |
307 | res\drawable-mdpi
308 | 1
309 |
310 |
311 | res\drawable-mdpi
312 | 1
313 |
314 |
315 |
316 |
317 | res\drawable-hdpi
318 | 1
319 |
320 |
321 | res\drawable-hdpi
322 | 1
323 |
324 |
325 |
326 |
327 | res\drawable-xhdpi
328 | 1
329 |
330 |
331 | res\drawable-xhdpi
332 | 1
333 |
334 |
335 |
336 |
337 | res\drawable-xxhdpi
338 | 1
339 |
340 |
341 | res\drawable-xxhdpi
342 | 1
343 |
344 |
345 |
346 |
347 | res\drawable-xxxhdpi
348 | 1
349 |
350 |
351 | res\drawable-xxxhdpi
352 | 1
353 |
354 |
355 |
356 |
357 | res\drawable-small
358 | 1
359 |
360 |
361 | res\drawable-small
362 | 1
363 |
364 |
365 |
366 |
367 | res\drawable-normal
368 | 1
369 |
370 |
371 | res\drawable-normal
372 | 1
373 |
374 |
375 |
376 |
377 | res\drawable-large
378 | 1
379 |
380 |
381 | res\drawable-large
382 | 1
383 |
384 |
385 |
386 |
387 | res\drawable-xlarge
388 | 1
389 |
390 |
391 | res\drawable-xlarge
392 | 1
393 |
394 |
395 |
396 |
397 | res\values
398 | 1
399 |
400 |
401 | res\values
402 | 1
403 |
404 |
405 |
406 |
407 | 1
408 |
409 |
410 | Contents\MacOS
411 | 1
412 |
413 |
414 | 0
415 |
416 |
417 |
418 |
419 | Contents\MacOS
420 | 1
421 | .framework
422 |
423 |
424 | Contents\MacOS
425 | 1
426 | .framework
427 |
428 |
429 | 0
430 |
431 |
432 |
433 |
434 | 1
435 | .dylib
436 |
437 |
438 | 1
439 | .dylib
440 |
441 |
442 | 1
443 | .dylib
444 |
445 |
446 | Contents\MacOS
447 | 1
448 | .dylib
449 |
450 |
451 | Contents\MacOS
452 | 1
453 | .dylib
454 |
455 |
456 | 0
457 | .dll;.bpl
458 |
459 |
460 |
461 |
462 | 1
463 | .dylib
464 |
465 |
466 | 1
467 | .dylib
468 |
469 |
470 | 1
471 | .dylib
472 |
473 |
474 | Contents\MacOS
475 | 1
476 | .dylib
477 |
478 |
479 | Contents\MacOS
480 | 1
481 | .dylib
482 |
483 |
484 | 0
485 | .bpl
486 |
487 |
488 |
489 |
490 | 0
491 |
492 |
493 | 0
494 |
495 |
496 | 0
497 |
498 |
499 | 0
500 |
501 |
502 | 0
503 |
504 |
505 | Contents\Resources\StartUp\
506 | 0
507 |
508 |
509 | Contents\Resources\StartUp\
510 | 0
511 |
512 |
513 | 0
514 |
515 |
516 |
517 |
518 | 1
519 |
520 |
521 | 1
522 |
523 |
524 | 1
525 |
526 |
527 |
528 |
529 | 1
530 |
531 |
532 | 1
533 |
534 |
535 | 1
536 |
537 |
538 |
539 |
540 | 1
541 |
542 |
543 | 1
544 |
545 |
546 | 1
547 |
548 |
549 |
550 |
551 | 1
552 |
553 |
554 | 1
555 |
556 |
557 | 1
558 |
559 |
560 |
561 |
562 | 1
563 |
564 |
565 | 1
566 |
567 |
568 | 1
569 |
570 |
571 |
572 |
573 | 1
574 |
575 |
576 | 1
577 |
578 |
579 | 1
580 |
581 |
582 |
583 |
584 | 1
585 |
586 |
587 | 1
588 |
589 |
590 | 1
591 |
592 |
593 |
594 |
595 | 1
596 |
597 |
598 | 1
599 |
600 |
601 | 1
602 |
603 |
604 |
605 |
606 | 1
607 |
608 |
609 | 1
610 |
611 |
612 | 1
613 |
614 |
615 |
616 |
617 | 1
618 |
619 |
620 | 1
621 |
622 |
623 | 1
624 |
625 |
626 |
627 |
628 | 1
629 |
630 |
631 | 1
632 |
633 |
634 | 1
635 |
636 |
637 |
638 |
639 | 1
640 |
641 |
642 | 1
643 |
644 |
645 | 1
646 |
647 |
648 |
649 |
650 | 1
651 |
652 |
653 | 1
654 |
655 |
656 | 1
657 |
658 |
659 |
660 |
661 | 1
662 |
663 |
664 | 1
665 |
666 |
667 | 1
668 |
669 |
670 |
671 |
672 | 1
673 |
674 |
675 | 1
676 |
677 |
678 | 1
679 |
680 |
681 |
682 |
683 | 1
684 |
685 |
686 | 1
687 |
688 |
689 | 1
690 |
691 |
692 |
693 |
694 | 1
695 |
696 |
697 | 1
698 |
699 |
700 | 1
701 |
702 |
703 |
704 |
705 | 1
706 |
707 |
708 | 1
709 |
710 |
711 | 1
712 |
713 |
714 |
715 |
716 | 1
717 |
718 |
719 | 1
720 |
721 |
722 | 1
723 |
724 |
725 |
726 |
727 | 1
728 |
729 |
730 | 1
731 |
732 |
733 | 1
734 |
735 |
736 |
737 |
738 | 1
739 |
740 |
741 | 1
742 |
743 |
744 | 1
745 |
746 |
747 |
748 |
749 | 1
750 |
751 |
752 | 1
753 |
754 |
755 | 1
756 |
757 |
758 |
759 |
760 | 1
761 |
762 |
763 | 1
764 |
765 |
766 | 1
767 |
768 |
769 |
770 |
771 | 1
772 |
773 |
774 | 1
775 |
776 |
777 | 1
778 |
779 |
780 |
781 |
782 | 1
783 |
784 |
785 | 1
786 |
787 |
788 | 1
789 |
790 |
791 |
792 |
793 | 1
794 |
795 |
796 | 1
797 |
798 |
799 | 1
800 |
801 |
802 |
803 |
804 | 1
805 |
806 |
807 | 1
808 |
809 |
810 | 1
811 |
812 |
813 |
814 |
815 | 1
816 |
817 |
818 | 1
819 |
820 |
821 | 1
822 |
823 |
824 |
825 |
826 | 1
827 |
828 |
829 | 1
830 |
831 |
832 |
833 |
834 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
835 | 1
836 |
837 |
838 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
839 | 1
840 |
841 |
842 |
843 |
844 | 1
845 |
846 |
847 | 1
848 |
849 |
850 |
851 |
852 | ..\
853 | 1
854 |
855 |
856 | ..\
857 | 1
858 |
859 |
860 |
861 |
862 | 1
863 |
864 |
865 | 1
866 |
867 |
868 | 1
869 |
870 |
871 |
872 |
873 | 1
874 |
875 |
876 | 1
877 |
878 |
879 | 1
880 |
881 |
882 |
883 |
884 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
885 | 1
886 |
887 |
888 |
889 |
890 | ..\
891 | 1
892 |
893 |
894 | ..\
895 | 1
896 |
897 |
898 |
899 |
900 | Contents
901 | 1
902 |
903 |
904 | Contents
905 | 1
906 |
907 |
908 |
909 |
910 | Contents\Resources
911 | 1
912 |
913 |
914 | Contents\Resources
915 | 1
916 |
917 |
918 |
919 |
920 | library\lib\armeabi-v7a
921 | 1
922 |
923 |
924 | library\lib\arm64-v8a
925 | 1
926 |
927 |
928 | 1
929 |
930 |
931 | 1
932 |
933 |
934 | 1
935 |
936 |
937 | 1
938 |
939 |
940 | Contents\MacOS
941 | 1
942 |
943 |
944 | Contents\MacOS
945 | 1
946 |
947 |
948 | 0
949 |
950 |
951 |
952 |
953 | library\lib\armeabi-v7a
954 | 1
955 |
956 |
957 |
958 |
959 | 1
960 |
961 |
962 | 1
963 |
964 |
965 |
966 |
967 | Assets
968 | 1
969 |
970 |
971 | Assets
972 | 1
973 |
974 |
975 |
976 |
977 | Assets
978 | 1
979 |
980 |
981 | Assets
982 | 1
983 |
984 |
985 |
986 |
987 |
988 |
989 |
990 |
991 |
992 |
993 |
994 |
995 |
996 |
997 | True
998 |
999 |
1000 | 12
1001 |
1002 |
1003 |
1004 |
1005 |
1006 |
--------------------------------------------------------------------------------
/Demo/App2/App2.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {1A312AE7-DC95-46A3-AF79-60F84C25241E}
4 | 18.8
5 | VCL
6 | App2.dpr
7 | True
8 | Debug
9 | Win32
10 | 1
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Cfg_1
29 | true
30 | true
31 |
32 |
33 | true
34 | Base
35 | true
36 |
37 |
38 | true
39 | Cfg_2
40 | true
41 | true
42 |
43 |
44 | .\$(Platform)\$(Config)
45 | .\$(Platform)\$(Config)
46 | false
47 | false
48 | false
49 | false
50 | false
51 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
52 | $(BDS)\bin\delphi_PROJECTICON.ico
53 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
54 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
55 | App2
56 |
57 |
58 | DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;svnui;dsnapcon;FireDACADSDriver;DzDirSeek;FireDACMSAccDriver;fmxFireDAC;vclimg;TeeDB;FireDAC;vcltouch;vcldb;bindcompfmx;svn;FireDACSqliteDriver;FireDACPgDriver;inetdb;DzMiniTable;FMXTee;soaprtl;DbxCommonDriver;FmxTeeUI;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;Tee;fmxobj;vclwinx;rtl;DzTalkApp;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;DzSocket;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;SynEdit_R;RESTBackendComponents;TeeUI;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;DzListHeader;vclie;DzHTMLText;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;DzNotepad;FireDACCommonODBC;FireDACCommonDriver;DamPackage;inet;fmxase;$(DCC_UsePackage)
59 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
60 | Debug
61 | true
62 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
63 | 1033
64 | $(BDS)\bin\default_app.manifest
65 |
66 |
67 | DEBUG;$(DCC_Define)
68 | true
69 | false
70 | true
71 | true
72 | true
73 |
74 |
75 | false
76 | true
77 | PerMonitorV2
78 |
79 |
80 | false
81 | RELEASE;$(DCC_Define)
82 | 0
83 | 0
84 |
85 |
86 | true
87 | PerMonitorV2
88 |
89 |
90 |
91 | MainSource
92 |
93 |
94 |
95 | dfm
96 |
97 |
98 |
99 | dfm
100 |
101 |
102 | Cfg_2
103 | Base
104 |
105 |
106 | Base
107 |
108 |
109 | Cfg_1
110 | Base
111 |
112 |
113 |
114 | Delphi.Personality.12
115 | Application
116 |
117 |
118 |
119 | App2.dpr
120 |
121 |
122 |
123 |
124 |
125 | App2.exe
126 | true
127 |
128 |
129 |
130 |
131 | 1
132 |
133 |
134 | Contents\MacOS
135 | 1
136 |
137 |
138 | 0
139 |
140 |
141 |
142 |
143 | classes
144 | 1
145 |
146 |
147 | classes
148 | 1
149 |
150 |
151 |
152 |
153 | res\xml
154 | 1
155 |
156 |
157 | res\xml
158 | 1
159 |
160 |
161 |
162 |
163 | library\lib\armeabi-v7a
164 | 1
165 |
166 |
167 |
168 |
169 | library\lib\armeabi
170 | 1
171 |
172 |
173 | library\lib\armeabi
174 | 1
175 |
176 |
177 |
178 |
179 | library\lib\armeabi-v7a
180 | 1
181 |
182 |
183 |
184 |
185 | library\lib\mips
186 | 1
187 |
188 |
189 | library\lib\mips
190 | 1
191 |
192 |
193 |
194 |
195 | library\lib\armeabi-v7a
196 | 1
197 |
198 |
199 | library\lib\arm64-v8a
200 | 1
201 |
202 |
203 |
204 |
205 | library\lib\armeabi-v7a
206 | 1
207 |
208 |
209 |
210 |
211 | res\drawable
212 | 1
213 |
214 |
215 | res\drawable
216 | 1
217 |
218 |
219 |
220 |
221 | res\values
222 | 1
223 |
224 |
225 | res\values
226 | 1
227 |
228 |
229 |
230 |
231 | res\values-v21
232 | 1
233 |
234 |
235 | res\values-v21
236 | 1
237 |
238 |
239 |
240 |
241 | res\values
242 | 1
243 |
244 |
245 | res\values
246 | 1
247 |
248 |
249 |
250 |
251 | res\drawable
252 | 1
253 |
254 |
255 | res\drawable
256 | 1
257 |
258 |
259 |
260 |
261 | res\drawable-xxhdpi
262 | 1
263 |
264 |
265 | res\drawable-xxhdpi
266 | 1
267 |
268 |
269 |
270 |
271 | res\drawable-ldpi
272 | 1
273 |
274 |
275 | res\drawable-ldpi
276 | 1
277 |
278 |
279 |
280 |
281 | res\drawable-mdpi
282 | 1
283 |
284 |
285 | res\drawable-mdpi
286 | 1
287 |
288 |
289 |
290 |
291 | res\drawable-hdpi
292 | 1
293 |
294 |
295 | res\drawable-hdpi
296 | 1
297 |
298 |
299 |
300 |
301 | res\drawable-xhdpi
302 | 1
303 |
304 |
305 | res\drawable-xhdpi
306 | 1
307 |
308 |
309 |
310 |
311 | res\drawable-mdpi
312 | 1
313 |
314 |
315 | res\drawable-mdpi
316 | 1
317 |
318 |
319 |
320 |
321 | res\drawable-hdpi
322 | 1
323 |
324 |
325 | res\drawable-hdpi
326 | 1
327 |
328 |
329 |
330 |
331 | res\drawable-xhdpi
332 | 1
333 |
334 |
335 | res\drawable-xhdpi
336 | 1
337 |
338 |
339 |
340 |
341 | res\drawable-xxhdpi
342 | 1
343 |
344 |
345 | res\drawable-xxhdpi
346 | 1
347 |
348 |
349 |
350 |
351 | res\drawable-xxxhdpi
352 | 1
353 |
354 |
355 | res\drawable-xxxhdpi
356 | 1
357 |
358 |
359 |
360 |
361 | res\drawable-small
362 | 1
363 |
364 |
365 | res\drawable-small
366 | 1
367 |
368 |
369 |
370 |
371 | res\drawable-normal
372 | 1
373 |
374 |
375 | res\drawable-normal
376 | 1
377 |
378 |
379 |
380 |
381 | res\drawable-large
382 | 1
383 |
384 |
385 | res\drawable-large
386 | 1
387 |
388 |
389 |
390 |
391 | res\drawable-xlarge
392 | 1
393 |
394 |
395 | res\drawable-xlarge
396 | 1
397 |
398 |
399 |
400 |
401 | res\values
402 | 1
403 |
404 |
405 | res\values
406 | 1
407 |
408 |
409 |
410 |
411 | 1
412 |
413 |
414 | Contents\MacOS
415 | 1
416 |
417 |
418 | 0
419 |
420 |
421 |
422 |
423 | Contents\MacOS
424 | 1
425 | .framework
426 |
427 |
428 | Contents\MacOS
429 | 1
430 | .framework
431 |
432 |
433 | 0
434 |
435 |
436 |
437 |
438 | 1
439 | .dylib
440 |
441 |
442 | 1
443 | .dylib
444 |
445 |
446 | 1
447 | .dylib
448 |
449 |
450 | Contents\MacOS
451 | 1
452 | .dylib
453 |
454 |
455 | Contents\MacOS
456 | 1
457 | .dylib
458 |
459 |
460 | 0
461 | .dll;.bpl
462 |
463 |
464 |
465 |
466 | 1
467 | .dylib
468 |
469 |
470 | 1
471 | .dylib
472 |
473 |
474 | 1
475 | .dylib
476 |
477 |
478 | Contents\MacOS
479 | 1
480 | .dylib
481 |
482 |
483 | Contents\MacOS
484 | 1
485 | .dylib
486 |
487 |
488 | 0
489 | .bpl
490 |
491 |
492 |
493 |
494 | 0
495 |
496 |
497 | 0
498 |
499 |
500 | 0
501 |
502 |
503 | 0
504 |
505 |
506 | 0
507 |
508 |
509 | Contents\Resources\StartUp\
510 | 0
511 |
512 |
513 | Contents\Resources\StartUp\
514 | 0
515 |
516 |
517 | 0
518 |
519 |
520 |
521 |
522 | 1
523 |
524 |
525 | 1
526 |
527 |
528 | 1
529 |
530 |
531 |
532 |
533 | 1
534 |
535 |
536 | 1
537 |
538 |
539 | 1
540 |
541 |
542 |
543 |
544 | 1
545 |
546 |
547 | 1
548 |
549 |
550 | 1
551 |
552 |
553 |
554 |
555 | 1
556 |
557 |
558 | 1
559 |
560 |
561 | 1
562 |
563 |
564 |
565 |
566 | 1
567 |
568 |
569 | 1
570 |
571 |
572 | 1
573 |
574 |
575 |
576 |
577 | 1
578 |
579 |
580 | 1
581 |
582 |
583 | 1
584 |
585 |
586 |
587 |
588 | 1
589 |
590 |
591 | 1
592 |
593 |
594 | 1
595 |
596 |
597 |
598 |
599 | 1
600 |
601 |
602 | 1
603 |
604 |
605 | 1
606 |
607 |
608 |
609 |
610 | 1
611 |
612 |
613 | 1
614 |
615 |
616 | 1
617 |
618 |
619 |
620 |
621 | 1
622 |
623 |
624 | 1
625 |
626 |
627 | 1
628 |
629 |
630 |
631 |
632 | 1
633 |
634 |
635 | 1
636 |
637 |
638 | 1
639 |
640 |
641 |
642 |
643 | 1
644 |
645 |
646 | 1
647 |
648 |
649 | 1
650 |
651 |
652 |
653 |
654 | 1
655 |
656 |
657 | 1
658 |
659 |
660 | 1
661 |
662 |
663 |
664 |
665 | 1
666 |
667 |
668 | 1
669 |
670 |
671 | 1
672 |
673 |
674 |
675 |
676 | 1
677 |
678 |
679 | 1
680 |
681 |
682 | 1
683 |
684 |
685 |
686 |
687 | 1
688 |
689 |
690 | 1
691 |
692 |
693 | 1
694 |
695 |
696 |
697 |
698 | 1
699 |
700 |
701 | 1
702 |
703 |
704 | 1
705 |
706 |
707 |
708 |
709 | 1
710 |
711 |
712 | 1
713 |
714 |
715 | 1
716 |
717 |
718 |
719 |
720 | 1
721 |
722 |
723 | 1
724 |
725 |
726 | 1
727 |
728 |
729 |
730 |
731 | 1
732 |
733 |
734 | 1
735 |
736 |
737 | 1
738 |
739 |
740 |
741 |
742 | 1
743 |
744 |
745 | 1
746 |
747 |
748 | 1
749 |
750 |
751 |
752 |
753 | 1
754 |
755 |
756 | 1
757 |
758 |
759 | 1
760 |
761 |
762 |
763 |
764 | 1
765 |
766 |
767 | 1
768 |
769 |
770 | 1
771 |
772 |
773 |
774 |
775 | 1
776 |
777 |
778 | 1
779 |
780 |
781 | 1
782 |
783 |
784 |
785 |
786 | 1
787 |
788 |
789 | 1
790 |
791 |
792 | 1
793 |
794 |
795 |
796 |
797 | 1
798 |
799 |
800 | 1
801 |
802 |
803 | 1
804 |
805 |
806 |
807 |
808 | 1
809 |
810 |
811 | 1
812 |
813 |
814 | 1
815 |
816 |
817 |
818 |
819 | 1
820 |
821 |
822 | 1
823 |
824 |
825 | 1
826 |
827 |
828 |
829 |
830 | 1
831 |
832 |
833 | 1
834 |
835 |
836 |
837 |
838 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
839 | 1
840 |
841 |
842 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
843 | 1
844 |
845 |
846 |
847 |
848 | 1
849 |
850 |
851 | 1
852 |
853 |
854 |
855 |
856 | ..\
857 | 1
858 |
859 |
860 | ..\
861 | 1
862 |
863 |
864 |
865 |
866 | 1
867 |
868 |
869 | 1
870 |
871 |
872 | 1
873 |
874 |
875 |
876 |
877 | 1
878 |
879 |
880 | 1
881 |
882 |
883 | 1
884 |
885 |
886 |
887 |
888 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
889 | 1
890 |
891 |
892 |
893 |
894 | ..\
895 | 1
896 |
897 |
898 | ..\
899 | 1
900 |
901 |
902 |
903 |
904 | Contents
905 | 1
906 |
907 |
908 | Contents
909 | 1
910 |
911 |
912 |
913 |
914 | Contents\Resources
915 | 1
916 |
917 |
918 | Contents\Resources
919 | 1
920 |
921 |
922 |
923 |
924 | library\lib\armeabi-v7a
925 | 1
926 |
927 |
928 | library\lib\arm64-v8a
929 | 1
930 |
931 |
932 | 1
933 |
934 |
935 | 1
936 |
937 |
938 | 1
939 |
940 |
941 | 1
942 |
943 |
944 | Contents\MacOS
945 | 1
946 |
947 |
948 | Contents\MacOS
949 | 1
950 |
951 |
952 | 0
953 |
954 |
955 |
956 |
957 | library\lib\armeabi-v7a
958 | 1
959 |
960 |
961 |
962 |
963 | 1
964 |
965 |
966 | 1
967 |
968 |
969 |
970 |
971 | Assets
972 | 1
973 |
974 |
975 | Assets
976 | 1
977 |
978 |
979 |
980 |
981 | Assets
982 | 1
983 |
984 |
985 | Assets
986 | 1
987 |
988 |
989 |
990 |
991 |
992 |
993 |
994 |
995 |
996 |
997 |
998 |
999 |
1000 |
1001 | True
1002 |
1003 |
1004 | 12
1005 |
1006 |
1007 |
1008 |
1009 |
1010 |
--------------------------------------------------------------------------------