@@ -10,7 +10,7 @@ interface
10
10
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
11
11
ExtCtrls, uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants,
12
12
unConfig, uCEFTypes, Dialogs, StdCtrls, uCEFProcessMessage, uCEFv8Context,
13
- StrUtils, spSkinShellCtrls, spMessages;
13
+ StrUtils, spSkinShellCtrls, spMessages, AppEvnts ;
14
14
15
15
type
16
16
TframeChrome = class (TFrame)
@@ -20,6 +20,7 @@ TframeChrome = class(TFrame)
20
20
DevTools: TCEFWindowParent;
21
21
Timer1: TTimer;
22
22
OpenDialog1: TOpenDialog;
23
+ ApplicationEvents1: TApplicationEvents;
23
24
procedure Chromium1AfterCreated (Sender: TObject;
24
25
const browser: ICefBrowser);
25
26
procedure Chromium1BeforeContextMenu (Sender: TObject;
@@ -55,8 +56,12 @@ TframeChrome = class(TFrame)
55
56
mode: TCefFileDialogMode; const title, defaultFilePath: ustring;
56
57
const acceptFilters: TStrings; selectedAcceptFilter: Integer;
57
58
const callback: ICefFileDialogCallback; out Result: Boolean);
59
+ procedure Chromium1PreKeyEvent (Sender: TObject; const browser: ICefBrowser;
60
+ const event: PCefKeyEvent; osEvent: PMsg; out isKeyboardShortcut,
61
+ Result: Boolean);
58
62
procedure Chromium1KeyEvent (Sender: TObject; const browser: ICefBrowser;
59
63
const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean);
64
+ procedure ApplicationEvents1Message (var Msg: tagMSG; var Handled: Boolean);
60
65
private
61
66
{ Private declarations }
62
67
FCaption: string;
@@ -92,6 +97,8 @@ TframeChrome = class(TFrame)
92
97
procedure ShowDevTools (aPoint: TPoint); overload;
93
98
procedure ShowDevTools ; overload;
94
99
procedure HideDevTools ;
100
+ procedure HandleKeyUp (const aMsg : TMsg; var aHandled : boolean);
101
+ procedure HandleKeyDown (const aMsg : TMsg; var aHandled : boolean);
95
102
public
96
103
{ Public declarations }
97
104
FClosing: Boolean; // Set to True in the CloseQuery event.
@@ -109,6 +116,18 @@ implementation
109
116
uses
110
117
ufrmModal, unChromeMessage, unCmdCli;
111
118
119
+ procedure TframeChrome.ApplicationEvents1Message (var Msg: tagMSG;
120
+ var Handled: Boolean);
121
+ begin
122
+ if unConfig.FStartup_Max = 0 then
123
+ Exit;
124
+
125
+ case Msg.message of
126
+ WM_KEYUP : HandleKeyUp(Msg, Handled);
127
+ WM_KEYDOWN : HandleKeyDown(Msg, Handled);
128
+ end ;
129
+ end ;
130
+
112
131
procedure TframeChrome.BrowserCreatedMsg (var aMessage: TMessage);
113
132
begin
114
133
Chromium1.LoadUrl(Self.FUrl);
@@ -304,20 +323,48 @@ procedure TframeChrome.Chromium1Jsdialog(Sender: TObject;
304
323
procedure TframeChrome.Chromium1KeyEvent (Sender: TObject;
305
324
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
306
325
out Result: Boolean);
326
+ var
327
+ TempMsg : TMsg;
307
328
begin
308
- //
309
- if unConfig.FDebug = 0 then
329
+ Result := False;
330
+
331
+ if unConfig.FStartup_Max = 0 then
310
332
Exit;
311
333
312
- if (event.kind = KEYEVENT_KEYUP) and (osEvent.wParam = 123 ) then
313
- begin
314
- if DevTools.Visible then
315
- PostMessage(Handle, YS_BROWSER_APP_HIDEDEVTOOLS, 0 , 0 )
316
- else
317
- PostMessage(Handle, YS_BROWSER_APP_SHOWDEVTOOLS, 0 , 0 );
334
+ if not (Chromium1.IsSameBrowser(browser)) then exit;
318
335
319
- Result := True;
320
- end ;
336
+ if (event <> nil ) and (osEvent <> nil ) then
337
+ case osEvent.Message of
338
+ WM_KEYUP :
339
+ begin
340
+ TempMsg := osEvent^;
341
+
342
+ HandleKeyUp(TempMsg, Result);
343
+ end ;
344
+
345
+ WM_KEYDOWN :
346
+ begin
347
+ TempMsg := osEvent^;
348
+
349
+ HandleKeyDown(TempMsg, Result);
350
+ end ;
351
+ end ;
352
+ end ;
353
+
354
+ procedure TframeChrome.Chromium1PreKeyEvent (Sender: TObject;
355
+ const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
356
+ out isKeyboardShortcut, Result: Boolean);
357
+ begin
358
+ Result := False;
359
+
360
+ if unConfig.FStartup_Max = 0 then
361
+ Exit;
362
+
363
+ if Chromium1.IsSameBrowser(browser) and
364
+ (event <> nil ) and
365
+ (event.kind in [KEYEVENT_KEYDOWN, KEYEVENT_KEYUP]) and
366
+ (event.windows_key_code = VK_F12) then
367
+ isKeyboardShortcut := True;
321
368
end ;
322
369
323
370
procedure TframeChrome.Chromium1ProcessMessageReceived (Sender: TObject;
@@ -363,13 +410,46 @@ procedure TframeChrome.Cont(selectedAcceptFilter: Integer;
363
410
364
411
end ;
365
412
413
+ procedure TframeChrome.HandleKeyDown (const aMsg: TMsg; var aHandled: boolean);
414
+ var
415
+ TempMessage : TMessage;
416
+ TempKeyMsg : TWMKey;
417
+ begin
418
+ TempMessage.Msg := aMsg.message;
419
+ TempMessage.wParam := aMsg.wParam;
420
+ TempMessage.lParam := aMsg.lParam;
421
+ TempKeyMsg := TWMKey(TempMessage);
422
+
423
+ if (TempKeyMsg.CharCode = VK_F12) then aHandled := True;
424
+ end ;
425
+
426
+ procedure TframeChrome.HandleKeyUp (const aMsg: TMsg; var aHandled: boolean);
427
+ var
428
+ TempMessage : TMessage;
429
+ TempKeyMsg : TWMKey;
430
+ begin
431
+ TempMessage.Msg := aMsg.message;
432
+ TempMessage.wParam := aMsg.wParam;
433
+ TempMessage.lParam := aMsg.lParam;
434
+ TempKeyMsg := TWMKey(TempMessage);
435
+
436
+ if (TempKeyMsg.CharCode = VK_F12) then
437
+ begin
438
+ aHandled := True;
439
+
440
+ if DevTools.Visible then
441
+ PostMessage(Handle, YS_BROWSER_APP_HIDEDEVTOOLS, 0 , 0 )
442
+ else
443
+ PostMessage(Handle, YS_BROWSER_APP_SHOWDEVTOOLS, 0 , 0 );
444
+ end ;
445
+ end ;
446
+
366
447
procedure TframeChrome.HideDevTools ;
367
448
begin
368
449
Chromium1.CloseDevTools(DevTools);
369
450
Splitter1.Visible := false;
370
451
DevTools.Visible := false;
371
452
DevTools.width := 0 ;
372
-
373
453
end ;
374
454
375
455
procedure TframeChrome.HideDevToolsMsg (var aMessage: TMessage);
@@ -411,7 +491,6 @@ procedure TframeChrome.ShowDevTools;
411
491
TempPoint.x := low(Integer);
412
492
TempPoint.y := low(Integer);
413
493
ShowDevTools(TempPoint);
414
-
415
494
end ;
416
495
417
496
procedure TframeChrome.ShowDevTools (aPoint: TPoint);
@@ -420,7 +499,6 @@ procedure TframeChrome.ShowDevTools(aPoint: TPoint);
420
499
DevTools.Visible := True;
421
500
DevTools.width := width div 4 ;
422
501
Chromium1.ShowDevTools(aPoint, DevTools);
423
-
424
502
end ;
425
503
426
504
procedure TframeChrome.ShowDevToolsMsg (var aMessage: TMessage);
0 commit comments