我看了注册热键相关的内容,比如RegisterHotKey。但是它只能注册键。能不能注册鼠标按钮呢?比如用户按下alt和鼠标左键,我就采取相应的动作。怎么检测用户按下了alt和鼠标呢?
解决方案 »
- 如何把一个类的名字做一个参数传递啊?
- 请教各位高手,怎样在程序中从现有数据表中动态得知某一列的数据类型,多谢了。非常紧急,一直在线等
- 为什么相同的分辨率下!win2k系统编译的程序到win98运行后界面变大呢??
- 求一个 两表关系更新的 SQL 语句 !!!!!!!!!!!!!!!!!!!急!!!!!!!!!
- 为什么我在Client端修改不了 DBGird中的字段内容?
- intraweb的初级问题,散分~~!
- 关于画ER图的问题,高手请进!
- 请问在2000下怎么屏蔽系统键
- 菜鸟的困惑-急、急、急:怎样让windows知道用某个程序打开一个自定义格式的文件?
- Delphi下的串口通信如何提高速度?
- 如何让windows自动扩展桌面?程序实现。
- 各位老大救我, 怎样才能让Delphi2006生成的程序在其它电脑上也能运行?
//注册热键
HotKeyID := GlobalAddAtom(pchar(HotKeyID));
RegisterHotKey(handle,hotkeyid2,mod_Alt or MOUSEEVENTF_LEFTDOWN,0);
//判断是否为alt +鼠标左键
if msg.WParam = HotKeyID3 then
begin
msg.Result := 1;//正常返回
application.BringToFront;//将窗体显示在最前边
SwitchToThisWindow(handle,True);
ShowMessage('调用alt+鼠标左键快捷键成功');
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; procedure SwitchToThisWindow(hWnd:Thandle;fAltTab:boolean);stdcall;external 'User32.dll';
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
HotKeyID3 :integer; //记录热键标识
//处理wm_hotkey消息
procedure WMhotkeyhandle(var msg:Tmessage);
message wm_hotkey;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
//通过原子表获得一个关于hotkey的唯一标识
HotKeyID3 := GlobalAddAtom(pchar(HotKeyID3));
RegisterHotKey(handle,hotkeyid2,MOD_CONTROL or MOUSEEVENTF_LEFTDOWN,0);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unregisterhotkey(handle,HotKeyID3);
DeleteAtom(HotKeyID3);
end;procedure TForm1.WMhotkeyhandle(var msg: Tmessage);
begin
if msg.WParam = HotKeyID3 then
begin
msg.Result := 1;//正常返回
application.BringToFront;//将窗体显示在最前边
SwitchToThisWindow(handle,True);
ShowMessage('调用ctrl+鼠标左键快捷键成功');
end;
end;end.
不能实现鼠标的监测更不能实现 按下ctrl 同时按下鼠标的监测是不是我哪里做的不对? 我照你的代码原样复制的。我要的是:
比如,按下ctrl,同时按下鼠标左键拖拉,就可以拉出一个框来。而不按住ctrl,则不处理鼠标的移动。
不行,不能监视这样的组合键啊仅仅按下Ctrl键都触发了事件我也希望高手实现Ctrl+鼠标键的组合消息啊
是否要改成 MOD_CONTROL and MOUSEEVENTF_LEFTDOWN 啊?