DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 33227
今日帖子: 16
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 807046799 (南山有雪) ▲▲▲△△ -
普通会员
2019/2/28 21:31:32
标题:
FMX 如何接管音量键,进行自己的操作? 浏览:2506
加入我的收藏
楼主:
  比如通过按音量键实现上一页下一页什么的。怎么实现?
----------------------------------------------
-
作者:
男 807046799 (南山有雪) ▲▲▲△△ -
普通会员
2019/3/1 10:39:43
1楼: procedure TMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
...
//音量键的Key是什么,只查到 vkHardwareBack 是底下的回退键。
end;
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/3/1 10:51:36
2楼: 说明你搜索能力差。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 lyp8899 (lyp8899) ★☆☆☆☆ -
盒子活跃会员
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 }
...
----------------------------------------------
▄︻┻┳═
作者:
男 nickemma (N.E Zhou) ★☆☆☆☆ -
普通会员
2019/3/1 11:09:40
3楼: vkVolumeDown       = $AE;  { 174 }
 vkVolumeUp         = $AF;  { 175 }

这个是啥?
----------------------------------------------
-
作者:
男 yvxiang (yvxiang) ★☆☆☆☆ -
盒子活跃会员
2019/3/1 12:26:51
4楼:
vkVolumeDown       = $AE;  { 174 }


这个是讲音量增大、减小的机器语言代码
----------------------------------------------
-
作者:
男 807046799 (南山有雪) ▲▲▲△△ -
普通会员
2019/3/1 14:30:19
5楼:

   感谢两个2楼大侠,这种方式能实现上一页,下一页了,但系统的音量加减还同时起作用。怎么把系统的音量加减屏蔽了呢?
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
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/
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
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/
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2019/3/2 8:02:21
8楼: 在FireMonkey下可以使用Windows API?
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
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
作者:
男 zhao314 (老赵) ★☆☆☆☆ -
盒子活跃会员
2019/3/2 20:49:21
11楼: 顶下
----------------------------------------------
-
作者:
男 807046799 (南山有雪) ▲▲▲△△ -
普通会员
2019/3/2 20:51:51
12楼:
 感谢 keymark 的例子。

确实要在安卓下用,您给的链接看了,还是看不懂怎么下手。

没有FMX的 ,安卓能实现也行啊。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/3/2 21:29:49
13楼: 9 楼正解 爱信不信。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2019/3/3 0:51:40
14楼: FMX上面可以直接呼叫Windows API吗?去了安卓或苹果会怎样?
----------------------------------------------
-
作者:
男 zhao314 (老赵) ★☆☆☆☆ -
盒子活跃会员
2019/3/3 6:53:17
15楼:
@ wang_80919 信啊,但不知道安卓怎么弄。。
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
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/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/3/3 15:06:32
17楼: 反正我就爱用 DELPHI, AS 这种东西再好,我也不用。
反正我用 DELPHI 也能做到,干嘛要强迫自己去用不喜欢的 AS 呢?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2019/3/4 8:18:24
18楼: Android Studio开发安卓当然是最好,毕竟是亲儿子,可是我脑洞没有那么大容量,可以一下切成安卓,一下切成苹果,一下切成微软,然后只为了同样一间事情。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/3/4 9:02:29
19楼: 楼上的,如果你切换不了,用 DELPHI 你也写不出来。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
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/
作者:
男 807046799 (南山有雪) ▲▲▲△△ -
普通会员
2019/3/6 7:57:09
21楼:
 各位大佬,问题到底怎么解决:安卓下怎样用音量键上下页,请出手,谢谢~
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行789.0625毫秒 RSS