社区
.NET Framework
帖子详情
翻天伏地求助WPF 全局热键实现呀。。。
Athenaeum
2008-12-08 07:01:11
winform中实现了,
拿到WPF中却不行了,
怀疑有个地方用windows.form 获得键盘消息来实现的,
可能是这的问题,有谁做过呀??
...全文
483
12
打赏
收藏
翻天伏地求助WPF 全局热键实现呀。。。
winform中实现了, 拿到WPF中却不行了, 怀疑有个地方用windows.form 获得键盘消息来实现的, 可能是这的问题,有谁做过呀??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kala_yue
2011-08-03
打赏
举报
回复
WPF 注册热键 http://www.cnblogs.com/alvinyue/archive/2011/08/03/2126022.html
龙宜坡
2009-07-15
打赏
举报
回复
"
翻天伏地
"
超维电脑科技
2009-07-15
打赏
举报
回复
[Quote=引用 5 楼 lorenliu 的回复:]
需要调用API
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook, HookHandlerDelegate callbackPtr, IntPtr hInstance, uint dwThreadId);
[DllImport("user32.dll", SetLastError = true)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref KBHookStruct lParam);
可以参考http://www.codeproject.com/KB/WPF/ShapeShow.aspx
[/Quote]
UP
li45214521
2009-07-11
打赏
举报
回复
LZ 可以试试这个ComponentDispatcher静态类
kissyou886
2009-07-10
打赏
举报
回复
首先要知道Widndow类里没有 WndProc 函数了,想要截取 Windows 消息必须借助 HwndSource 添加 Hook。
给说下,我的简单实现方法,便于入门学习。
1.通过RegisterHotKey注册全局热键;
2.借助 HwndSource 添加 Hook,建议与RegisterHotKey一起在继承的OnSourceInitialized里实现;
3.再使用自己定义的WndProc来截取Windows 消息;
4.程序退出时使用UnRegisterHotKey注销热键。
下面代码是简单实现的一个Esc全局热键:
[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, System.Windows.Forms.Keys keys);
[DllImport("user32.dll")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
public static int WM_HOTKEY = 0x0312;
public Window1()
{
InitializeComponent();
this.Closed+=new EventHandler(Window1_Closed);
}
void Window1_Closed(object sender, EventArgs e)
{
IntPtr hWnd = new WindowInteropHelper(this).Handle;
UnregisterHotKey(hWnd, 123);
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
IntPtr hWnd = new WindowInteropHelper(this).Handle;
RegisterHotKey(hWnd, 123, 0, System.Windows.Forms.Keys.Escape);
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
source.AddHook(WndProc);
}
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_HOTKEY)
{
if (wParam.ToInt32() == 123)
{
MessageBox.Show("OK");
handled=true;
}
}
return IntPtr.Zero;
}
zanezeng_GC
2009-07-09
打赏
举报
回复
http://www.cnblogs.com/zengezenge/archive/2009/07/09/1519582.html
WizCas
2008-12-22
打赏
举报
回复
mark
LorenLiu
2008-12-09
打赏
举报
回复
需要调用API
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook, HookHandlerDelegate callbackPtr, IntPtr hInstance, uint dwThreadId);
[DllImport("user32.dll", SetLastError = true)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref KBHookStruct lParam);
可以参考http://www.codeproject.com/KB/WPF/ShapeShow.aspx
Foxer
2008-12-08
打赏
举报
回复
方法一:用Command实现,在主窗口上定义一个Command,并添加热键
方法二:用EventManager.RegisterRoutedEvent绑定按键事件
别的还没想到,暂时就这些 :)
Foxer
2008-12-08
打赏
举报
回复
点数太少 ^_^
Athenaeum
2008-12-08
打赏
举报
回复
自己顶
leo_bogard
2008-12-08
打赏
举报
回复
up
Source Code:
WPF
拖放功能
实现
Source Code:
WPF
拖放功能
实现
WPF
实现
超酷样式按钮
WPF
实现
超酷样式按钮
WPF
经典教程之Canvas、InkCanvas布局
在
WPF
中子元素的绝对定位的布局控件 其子元素使用Width、Height定义元素的宽度和高度 使用Convas.Left(Convas.Right)、Convas.Top(Convas.Bottom)定义与Convas容器的相对位置..... (更多资源:http://cleopard.download.csdn.net/) (福利:http://xuemeilaile.com/)
WPF
经典教程之
WPF
体系结构 http://download.csdn.net/detail/cleopard/7999393
WPF
经典教程之
WPF
应用程序管理 http://download.csdn.net/detail/cleopard/8002969
WPF
经典教程之
WPF
窗体 http://download.csdn.net/detail/cleopard/8002979
WPF
经典教程之StackPanel、WrapPanel、DockPanel布局 http://download.csdn.net/detail/cleopard/8002985
WPF
经典教程之Grid、UniformGrid布局 http://download.csdn.net/detail/cleopard/8002993
WPF
经典教程之
WPF
体系结构
WPF
的基础的体系结构 所引用的Assembly如下图所示: 关系图中的PresentationFramework PresentationCore 和 milcore是
WPF
的主要代码部分 在这些组件中 只有一个是非托管组件 – milcore milcore 是以非托管代码编写的 目的是
实现
与 DirectX 的紧密集成
WPF
系列教程敬请关注 更多资源:http: cleopard download csdn net ">
WPF
的基础的体系结构 所引用的Assembly如下图所示: 关系图中的PresentationFramework PresentationCore 和 milcore是
WPF
的主要代码部分 在这些组件中 只有一个是非托管组件 – milcore milcore 是以非托管代码编写的 目的是
实现
与 Direct [更多]
WPF
全系列事例代码
WPF
基础教程所有相关的源代码,博客文章请查阅:http://blog.csdn.net/fwj380891124 之
WPF
板块类容。非常详细的介绍了
WPF
,适合初学者入门学习。
.NET Framework
17,740
社区成员
24,334
社区内容
发帖
与我相关
我的任务
.NET Framework
.NET技术 .NET Framework
复制链接
扫一扫
分享
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章