导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2019/2/28 21:31:32
标题:
FMX 如何接管音量键,进行自己的操作?
浏览:2506
加入我的收藏
楼主:
比如通过按音量键实现上一页下一页什么的。怎么实现?
----------------------------------------------
-
作者:
2019/3/1 10:39:43
1楼:
procedure TMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin ... //音量键的Key是什么,只查到 vkHardwareBack 是底下的回退键。 end;
----------------------------------------------
-
作者:
2019/3/1 10:51:36
2楼:
说明你搜索能力差。
----------------------------------------------
(C)(P)Flying Wang
作者:
2019/3/1 10:52:14
2楼:
在System.UITypes单元 vkCamera = $88; { 136 } vkHardwareBack = $89; { 137 } vkNumLock = $90; { 144 } vkScroll = $91; { 145 } vkLShift = $A0; { 160 } vkRShift = $A1; { 161 } vkLControl = $A2; { 162 } vkRControl = $A3; { 163 } vkLMenu = $A4; { 164 } vkRMenu = $A5; { 165 } vkBrowserBack = $A6; { 166 } vkBrowserForward = $A7; { 167 } vkBrowserRefresh = $A8; { 168 } vkBrowserStop = $A9; { 169 } vkBrowserSearch = $AA; { 170 } vkBrowserFavorites = $AB; { 171 } vkBrowserHome = $AC; { 172 } vkVolumeMute = $AD; { 173 } vkVolumeDown = $AE; { 174 } vkVolumeUp = $AF; { 175 } vkMediaNextTrack = $B0; { 176 } vkMediaPrevTrack = $B1; { 177 } vkMediaStop = $B2; { 178 } vkMediaPlayPause = $B3; { 179 } vkLaunchMail = $B4; { 180 } vkLaunchMediaSelect= $B5; { 181 } vkLaunchApp1 = $B6; { 182 } vkLaunchApp2 = $B7; { 183 } ...
----------------------------------------------
▄︻┻┳═
作者:
2019/3/1 11:09:40
3楼:
vkVolumeDown = $AE; { 174 } vkVolumeUp = $AF; { 175 } 这个是啥?
----------------------------------------------
-
作者:
2019/3/1 12:26:51
4楼:
vkVolumeDown = $AE; { 174 }
这个是讲音量增大、减小的机器语言代码
----------------------------------------------
-
作者:
2019/3/1 14:30:19
5楼:
感谢两个2楼大侠,这种方式能实现上一页,下一页了,但系统的音量加减还同时起作用。怎么把系统的音量加减屏蔽了呢?
----------------------------------------------
-
作者:
2019/3/1 14:51:10
6楼:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; type TForm1 = class(TForm) procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; (* typedef struct tagKBDLLHOOKSTRUCT { DWORD vkCode; DWORD scanCode; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo; } KBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; *) tagKBDLLHOOKSTRUCT = record vkCode: DWORD; scanCode: DWORD; flags: DWORD; time: DWORD; dwExtraInfo: ULONG_PTR; end; KBDLLHOOKSTRUCT = ^tagKBDLLHOOKSTRUCT; function MTFNHookProc(code: Integer; wparam: wparam; lparam: lparam) : LRESULT stdcall; var Form1: TForm1; GHHOOK: HHOOK; g_hInstance: HINST; Key_Info: KBDLLHOOKSTRUCT; implementation {$R *.dfm} uses System.UITypes; function MTFNHookProc(code: Integer; wparam: wparam; lparam: lparam): LRESULT; begin if (code >= HC_ACTION) and (wparam = WM_KEYDOWN) then begin case KBDLLHOOKSTRUCT(lparam).vkCode of vkVolumeDown: begin Result := 1; exit; end; vkVolumeUp: begin Result := 1; exit; end; end; end; Result := CallNextHookEx(GHHOOK, code, wparam, lparam); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnhookWindowsHookEx(GHHOOK); end; procedure TForm1.FormCreate(Sender: TObject); begin // function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; stdcall; GHHOOK := SetWindowsHookEx(WH_KEYBOARD_LL, @MTFNHookProc, HInstance,0); showmessage(inttostr(GHHOOK)); end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of vkVolumeDown: begin showmessage('+'); end; vkVolumeUp: begin showmessage('-'); end; end; // Key := 0; end; end.
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2019/3/1 14:52:19
7楼:
建议 窗体离开的时候 卸载hook 免得体验太差
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2019/3/2 8:02:21
8楼:
在FireMonkey下可以使用Windows API?
----------------------------------------------
-
作者:
2019/3/2 11:23:45
9楼:
FireMonkey 不能运行在windows? lz没提平台啊。。 http://blog.chinaunix.net/uid-29287950-id-5126105.html https://blog.csdn.net/dwadekkk/article/details/76154396 https://segmentfault.com/q/1010000007183292 安卓下看上去都差不多?? 百度是个好东西啊。谷歌不在。
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
ww66 (wzs)
★☆☆☆☆
-
普通会员
2019/3/2 11:46:56
10楼:
好的,多谢
----------------------------------------------
http://www.inteLw.cn:8077
作者:
2019/3/2 20:49:21
11楼:
顶下
----------------------------------------------
-
作者:
2019/3/2 20:51:51
12楼:
感谢 keymark 的例子。 确实要在安卓下用,您给的链接看了,还是看不懂怎么下手。 没有FMX的 ,安卓能实现也行啊。
----------------------------------------------
-
作者:
2019/3/2 21:29:49
13楼:
9 楼正解 爱信不信。
----------------------------------------------
(C)(P)Flying Wang
作者:
2019/3/3 0:51:40
14楼:
FMX上面可以直接呼叫Windows API吗?去了安卓或苹果会怎样?
----------------------------------------------
-
作者:
2019/3/3 6:53:17
15楼:
@ wang_80919 信啊,但不知道安卓怎么弄。。
----------------------------------------------
-
作者:
2019/3/3 11:07:10
16楼:
个人觉得 Android Studio 开发安卓很好了可视化什么的。 除了要学习SDK API 之外没什么麻烦了? 所以有英文基础的人起步快。 非常可惜我只有 https://fanyi.baidu.com/ https://translate.google.cn/
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2019/3/3 15:06:32
17楼:
反正我就爱用 DELPHI, AS 这种东西再好,我也不用。 反正我用 DELPHI 也能做到,干嘛要强迫自己去用不喜欢的 AS 呢?
----------------------------------------------
(C)(P)Flying Wang
作者:
2019/3/4 8:18:24
18楼:
Android Studio开发安卓当然是最好,毕竟是亲儿子,可是我脑洞没有那么大容量,可以一下切成安卓,一下切成苹果,一下切成微软,然后只为了同样一间事情。
----------------------------------------------
-
作者:
2019/3/4 9:02:29
19楼:
楼上的,如果你切换不了,用 DELPHI 你也写不出来。
----------------------------------------------
(C)(P)Flying Wang
作者:
2019/3/4 11:40:36
20楼:
哈哈 gcc 编译.o给delphi调用 除开安卓不会编译 32 64 linux 都可以调用 学AS 就是想搞jar调用。。。 基本都是百度解决问题 偶尔群里问下delphi问题。。 我是自学的新手。。虽然2c有个注册多年的账号没拿出来用。。。。。
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2019/3/6 7:57:09
21楼:
各位大佬,问题到底怎么解决:安卓下怎样用音量键上下页,请出手,谢谢~
----------------------------------------------
-