| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5913 人关注过本帖
标题:怎么设置键盘按键
只看楼主 加入收藏
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
结帖率:100%
收藏
 问题点数:0 回复次数:6 
怎么设置键盘按键
现在在窗体中放置一个按钮,只要点击按钮就相当于用户按下键盘上的Win+L组合键
到底要如何实现啊??
if (e.KeyCode == Keys.V && e.Win == true)
{}
好像不行??KeyCode未定义啊
搜索更多相关主题的帖子: 键盘 KeyCode Win 定义 按钮 
2007-10-08 11:18
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
收藏
得分:0 
可不可以在按钮事件中实现按下Win+L键后要实现的功能?

------------------不为别的,就为你,我的理想!-----------------
2007-10-08 11:41
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
WIN+L是设定计算机的组合键
我想用软件的按钮来调用它,不知道怎么写代码
版主救命啊

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-10-08 11:47
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 

你是说调用系统热键?


2007-10-08 12:22
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
要用API如果是在FORM的内部就不必了,外部(全局的)肯定就要用下面的方式了,内容太多网上找了一个源码,你参考一下,还有啊,,那个BAIDU之类的东西很有用的哦,多用用。


利用windows api方式实现系统热键的功能!
主要类设计如下:
using System;
using System.Windows.Forms; // for Key namespace
using System.Runtime.InteropServices;

namespace 实现系统热键
{
/// <summary>
/// WIN32 Windows API辅助操作类.
/// </summary>
public class NativeWIN32
{
public NativeWIN32()
{}
/* ------- using WIN32 Windows API in a C# application ------- */

[DllImport("user32.dll", CharSet=CharSet.Auto)]
static public extern IntPtr GetForegroundWindow(); //

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct STRINGBUFFER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
public string szText;
}

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);

public const int WM_SYSCOMMAND = 0x0112;
public const int SC_CLOSE = 0xF060;

public delegate bool EnumThreadProc(IntPtr hwnd, IntPtr lParam);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern bool EnumThreadWindows(int threadId, EnumThreadProc pfnEnum, IntPtr lParam);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr next, string sClassName, IntPtr sWindowTitle);

/* ------- using HOTKEYs in a C# application -------

in form load :
bool success = RegisterHotKey(Handle, 100, KeyModifiers.Control | KeyModifiers.Shift, Keys.J);

in form closing :
UnregisterHotKey(Handle, 100);


protected override void WndProc( ref Message m )
{
const int WM_HOTKEY = 0x0312;

switch(m.Msg)
{
case WM_HOTKEY:
MessageBox.Show("Hotkey pressed");
break;
}
base.WndProc(ref m );
}

------- using HOTKEYs in a C# application ------- */

[DllImport("user32.dll", SetLastError=true)]
public static extern bool RegisterHotKey( IntPtr hWnd, // handle to window
int id, // hot key identifier
KeyModifiers fsModifiers, // key-modifier options
Keys vk // virtual-key code
);

[DllImport("user32.dll", SetLastError=true)]
public static extern bool UnregisterHotKey( IntPtr hWnd, // handle to window
int id // hot key identifier
);

[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
}
}


XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-10-08 12:23
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 

楼上的版主。我一点都看不懂,太杂了~!
能不能做一个程序放一下源码我来看看??


我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-10-08 12:27
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
不是吧?上面就只引入了几个API和写了几个函数啊。函数分段也很清楚哦。


protected override void WndProc( ref Message m )
{
const int WM_HOTKEY = 0x0312;

switch(m.Msg)
{
case WM_HOTKEY:
MessageBox.Show("Hotkey pressed");
break;
}
base.WndProc(ref m );
}

特别是这段,WIN回调函数,热键从这里实现。

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-10-08 12:43
快速回复:怎么设置键盘按键
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017758 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved