如何計算在c#應用程序中全屏按下的全鍵數量? 就像應用程序在後面運行一樣,我正在鍵入..然後我可以看到我按下了多少個鍵。謝謝。計算屏幕上按鍵的次數
-1
A
回答
24
上找到MSDN Blogs:
找到:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
_hookID = SetHook(_proc);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
UnhookWindowsHookEx(_hookID);
}
private const int WH_KEYBOARD_LL = 13;
private const int WM_KEYDOWN = 0x0100;
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static IntPtr SetHook(LowLevelKeyboardProc proc)
{
using (Process curProcess = Process.GetCurrentProcess())
using (ProcessModule curModule = curProcess.MainModule)
{
return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
GetModuleHandle(curModule.ModuleName), 0);
}
}
private delegate IntPtr LowLevelKeyboardProc(
int nCode, IntPtr wParam, IntPtr lParam);
private static IntPtr HookCallback(
int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine((Keys)vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook,
LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
IntPtr wParam, IntPtr lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetModuleHandle(string lpModuleName);
}
+1
你應該真的把源頭放在那裏。 – dualed 2012-08-16 19:10:46
1
我會解決你的應用程序運行背後的原因(移動代碼,後臺工作?)
如果你仍然想這樣做後的全球keypresscount,看看這個在C#中按鍵應用範圍內的按鍵項目的潛在項目。
http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
+0
問題是關於在-all-應用程序中監視按鍵。 – SDwarfs 2012-08-16 14:52:57
0
也許它給你一些想法:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
textBlock1.Text = "You Entered: " + textBox1.Text;
}
}
0
0
我使用下面的ProcessKeyEventArgs來捕獲我的C#Windows窗體中的按鍵Print Screen
。
我所做的修改它是添加一個計數器並增加它。
private long counter = 0;
protected override bool ProcessKeyEventArgs(ref Message msg) {
counter++;
return base.ProcessKeyEventArgs(ref msg);
}
相關問題
- 1. 刪除計算器屏幕上的數字按位數
- 2. 如何計算屏幕上的手指?
- 3. 如何計算快速觸摸屏幕的次數?
- 4. 「屏幕外」的ADBannerView會計算展示次數嗎?
- 5. 按屏幕上
- 6. 計算座標在屏幕上
- 7. 如何計算android中的活動在屏幕上顯示的總次數?
- 8. 計算按鍵
- 9. 計算android屏幕大小?
- 10. 如何計算android屏幕?
- 11. Android屏幕密度計算
- 12. 按鍵都擠屏幕
- 13. 在屏幕上的鍵盤
- 14. 按鈕,屏幕上
- 15. 製作屏幕上的數字鍵盤
- 16. 重置計算器屏幕上的所有數據
- 17. Tkinter計算在屏幕上適合的字符數
- 18. 關閉主屏幕按鍵上的軟鍵盤
- 19. Java計算器 - 在按下操作前讓數字保持在屏幕上
- 20. 鍵盤不在屏幕上
- 21. 計算按鍵在鍵盤上按下的時間長度
- 22. 如何在屏幕上的遠程計算機上啓動nc
- 23. 遠程計算機的屏幕截圖
- 24. 的OpenCL計算凍結屏幕
- 25. 影響屏幕計算的Body'width'屬性
- 26. Android計算繪製的屏幕尺寸
- 27. 計算單擊按鈕的次數
- 28. 在GLUT,C++的按鍵清除屏幕
- 29. 在屏幕上的鍵盤上打開
- 30. 屏幕上(觸摸屏)Web鍵盤
難道你不能只下載[WhatPulse](https://whatpulse.org/)?你有什麼嘗試? – CodeCaster 2012-08-03 11:19:25
你是否試圖製作一個鍵盤記錄器類型的應用程序,它在所有應用程序中記錄鍵盤輸入。或者你只想在你的C#應用程序中記錄鍵輸入? – 2012-08-16 03:45:44
當你只有1分給你的名字時,你是如何開150分的賞金? – jp2code 2012-08-16 19:22:44