Tag: 键盘钩

使用低级键盘钩来更改键盘字符

我正在创建自定义键盘布局。 作为开始步骤,我想让用户按一个键,让我的键盘钩子拦截它,并输出我选择的另一个键。 我找到了这个键盘钩子代码,我试图为我的目的略微修改: http : //blogs.msdn.com/toub/archive/2006/05/03/589423.aspx 我已经将相关方法更改为: private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { KBDLLHOOKSTRUCT replacementKey = new KBDLLHOOKSTRUCT(); Marshal.PtrToStructure(lParam, replacementKey); replacementKey.vkCode = 90; // char ‘Z’ Marshal.StructureToPtr(replacementKey, lParam, true); } return CallNextHookEx(_hookID, nCode, wParam, lParam); } 我希望它声明一个新的KBD结构对象,将键盘钩子提供的KBD结构复制到其中,修改我的对象的vkCode以使用不同的字符,然后用我的修改版本覆盖提供的对象。 这应该有希望保持一切相同,除了它写一个不同的字符。 不幸的是,它没有用。 键入原始键盘字符。 Visual Studio输出窗格还会A […]

当我的应用程序在后台时,监视C#中的键盘活动

首先,我需要明确表示我对键盘记录没兴趣。 当我的应用程序在后台时,我需要一种方法来监控最基本级别的键盘活动。 我不需要知道哪些键,我不需要保存任何数据,我根本不需要或计划隐藏我的应用程序,我只需要知道何时按下键并调用方法。 我正在寻找最简单的方法来实现这一目标,我知道合理数量的C#,但没有太复杂,因为我的大部分知识都是自学成才。 我四处寻找一些合适的方法来做这件事,但我没有发现任何有用的东西。 我发现的是一群人在论坛和深度键盘记录器的源代码上说“不,这是非法的”。 如果你们中的任何人可以告诉我实现这一目标的方法,那么我将非常感激。

我可以更改用户的键盘输入吗?

我找到了这个键盘钩子代码,我试图为我的目的略微修改: http : //blogs.msdn.com/toub/archive/2006/05/03/589423.aspx 作为概述,我想让用户按一个键,说’E’,并让键盘返回一个不同的字符,’Z’,对任何焦点的应用程序。 我改变的相关方法现在看起来像: private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { //The truely typed character: int vkCode = Marshal.ReadInt32(lParam); Console.WriteLine((Keys)vkCode); KBDLLHOOKSTRUCT replacementKey = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT)); replacementKey.vkCode = 90; // char ‘Z’ Marshal.StructureToPtr(replacementKey, lParam, false); //Now changed to my set character vkCode […]

C# – 为什么全屏winform应用程序不会覆盖任务栏?

我使用的是Windows Vista和C#.net 3.5,但我让我的朋友在XP上运行程序并遇到同样的问题。 所以我有一个C#程序,我在后台运行,在SystemTray中有一个图标。 我有一个低级键盘钩,所以当我按下两个键(在这种情况下为Ctr +窗口)时,它将拉动应用程序的主窗体。 在组合键按下甚至处理程序中将表单设置为全屏: this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; 所以它基本上有效。 当我点击CTR + Windows时,它会显示表单,无论我关注哪个程序。 但有时候,任务栏仍然会出现在我不想要的表格上。 当我按下那个键组合时,我希望它始终是全屏的。 我认为这与应用程序最初关注的内容有关。 但即使我点击我的主表单,任务栏有时也会停留在那里。 所以我想知道焦点是否真的是问题。 看起来有时候任务栏很顽固,并且不想坐在我的程序后面。 任何人有任何想法如何解决这个问题? 编辑:更多详细信息 – 当您将其置于全屏模式或将powerpoint置于演示模式时,我正在尝试获得与Web浏览器相同的效果。 在窗体中,您可以将边框样式设置为无,并最大化窗口。 但有时窗口不会出于某种原因覆盖任务栏。 它会有一半的时间。 如果我将主窗口放在最顶层,那么当我点击它时其他窗口就会落在它后面,如果任务栏被隐藏,我不想要它。