http://bbs.csdn.net/topics/380201057
Delphi/Pascal code
Delphi/Pascal code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
用Delphi实现老板键功能(即通过快捷键显示隐藏窗口)2011-05-30 16:39//因为我们还要在程序退出的时候,消除这个热键, 所以需要声明一个全局变量: // //HotKeyId: Integer; // //第一步: // //在窗口的create事件中,加入以下代码 // //HotKeyId := GlobalAddAtom(‘MyHotKey’) - $C000; //注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值 //在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。 // //第二步: // //在上面的代码下面加入: // //RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8); // //热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows //键,即其键面上有Windows标志的那个键,其值为Mod_win。 // //上面 的代码注册了一个热键:ALT+F8。当然如果你希望象TAKEIT那样,只用F8, 就这么写: // //RegisterHotKey(Handle, hotkeyid, 0, VK_F8); // //注:handle是一个特殊的变量,它表示当前窗口的句柄。 // //这个函数你应该能句举一反三了吧。 // //原理: // //一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应 //用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消 //息的格式为: // //idHotKey = (int) wParam; // 该参数在设置系统级的热键有用,一般不予使用 //fuModifiers = (UINT) LOWORD(lParam); //热键的辅助按键 //uVirtKey = (UINT) HIWORD(lParam); //热键的键值 // //第三步: // //注册了热键,就该写下响应代码了。 // //首先,在程序头部分的private段中加入声明 (作用是声明这个过程,和声明变量类似。 //关于如何声明函数、过程,请请参考各自的帮助文件或其它资料): // //procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY; // //然后在程序中加入如下代码: // //procedure Tfmain.HotKeyDown(var Msg: Tmessage); //begin // if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假设热键为ALT+F8 // begin // end; //end; // //最后一步: // //在窗口的close事件中加入 // //UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源。 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////完整程序如下: unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private FHotKeyId: Integer; procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FHotKeyId := GlobalAddAtom('MyHotKey') - $C000; RegisterHotKey(Handle, FHotKeyId, MOD_ALT, VK_F8); end; procedure TForm1.HotKeyDown(var Msg: Tmessage); begin if (Msg.LparamLo = MOD_ALT) AND (Msg.LParamHi = VK_F8) then // 假设热键为ALT+F8 begin ShowWindow(Application.Handle, SW_SHOW); ShowWindow(Self.Handle, SW_SHOW); if IsIconic(Application.Handle) then ShowWindow(Application.Handle, SW_RESTORE) else SetForegroundWindow(Application.Handle); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Handle, FHotKeyId); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(Application.Handle, SW_HIDE); ShowWindow(Self.Handle, SW_HIDE); end; end. |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
用Delphi实现老板键功能(即通过快捷键显示隐藏窗口)2011-05-30 16:39//因为我们还要在程序退出的时候,消除这个热键, 所以需要声明一个全局变量: // //HotKeyId: Integer; // //第一步: // //在窗口的create事件中,加入以下代码 // //HotKeyId := GlobalAddAtom(‘MyHotKey’) - $C000; //注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值 //在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。 // //第二步: // //在上面的代码下面加入: // //RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8); // //热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows //键,即其键面上有Windows标志的那个键,其值为Mod_win。 // //上面 的代码注册了一个热键:ALT+F8。当然如果你希望象TAKEIT那样,只用F8, 就这么写: // //RegisterHotKey(Handle, hotkeyid, 0, VK_F8); // //注:handle是一个特殊的变量,它表示当前窗口的句柄。 // //这个函数你应该能句举一反三了吧。 // //原理: // //一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应 //用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消 //息的格式为: // //idHotKey = (int) wParam; // 该参数在设置系统级的热键有用,一般不予使用 //fuModifiers = (UINT) LOWORD(lParam); //热键的辅助按键 //uVirtKey = (UINT) HIWORD(lParam); //热键的键值 // //第三步: // //注册了热键,就该写下响应代码了。 // //首先,在程序头部分的private段中加入声明 (作用是声明这个过程,和声明变量类似。 //关于如何声明函数、过程,请请参考各自的帮助文件或其它资料): // //procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY; // //然后在程序中加入如下代码: // //procedure Tfmain.HotKeyDown(var Msg: Tmessage); //begin // if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假设热键为ALT+F8 // begin // end; //end; // //最后一步: // //在窗口的close事件中加入 // //UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源。 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////完整程序如下: unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private FHotKeyId: Integer; procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FHotKeyId := GlobalAddAtom('MyHotKey') - $C000; RegisterHotKey(Handle, FHotKeyId, MOD_ALT, VK_F8); end; procedure TForm1.HotKeyDown(var Msg: Tmessage); begin if (Msg.LparamLo = MOD_ALT) AND (Msg.LParamHi = VK_F8) then // 假设热键为ALT+F8 begin ShowWindow(Application.Handle, SW_SHOW); ShowWindow(Self.Handle, SW_SHOW); if IsIconic(Application.Handle) then ShowWindow(Application.Handle, SW_RESTORE) else SetForegroundWindow(Application.Handle); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Handle, FHotKeyId); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(Application.Handle, SW_HIDE); ShowWindow(Self.Handle, SW_HIDE); end; end. |
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发