 |
C# хук клавиш - DotA Allstars - Читы и баги, статьи и описания из мира DotA Allstars в этом разделе. |
17.02.2022, 07:39
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 06.02.2016
 Сообщений: 6
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
C# хук клавиш
добречка всем дорогие программисты
с нуля начинаю и пишу хук клавиш именно для доты
Код:
using System;
using System.Text;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WinFormsApp3
{
class HotKey
{
//If the function is executed successfully, the return value is not 0.
//If the function fails, the return value is 0. To get extended error information, call GetLastError.
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,//The handle of the window to define the hotkey
int id,//Define the hot key ID (cannot be repeated with other IDs)
KeyModifiers fsModifiers,//Identify whether the hotkey will take effect when you press Alt, Ctrl, Shift, Windows, etc.
Keys vk//Define the content of the hotkey
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,//The handle of the window to cancel the hotkey
int id//To cancel the hot key ID
);
//The name of the auxiliary key is defined (the number is converted into a character for easy memory, or the enumeration can be removed and the value can be used directly)
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
}
public class GlobalKeyboardHook
{
[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int code, int wParam, ref keyBoardHookStruct lParam);
[DllImport("user32.dll")]
static extern IntPtr SetWindowsHookEx(int idHook, LLKeyboardHook callback, IntPtr hInstance, uint theardID);
[DllImport("user32.dll")]
static extern bool UnhookWindowsHookEx(IntPtr hInstance);
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string lpFileName);
public delegate int LLKeyboardHook(int Code, int wParam, ref keyBoardHookStruct lParam);
public struct keyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
const int WH_KEYBOARD_LL = 13;
const int WM_KEYDOWN = 0x0100;
const int WM_KEYUP = 0x0101;
const int WM_SYSKEYDOWN = 0x0104;
const int WM_SYSKEYUP = 0x0105;
LLKeyboardHook llkh;
public List<Keys> HookedKeys = new List<Keys>();
IntPtr Hook = IntPtr.Zero;
public event KeyEventHandler KeyDown;
public event KeyEventHandler KeyUp;
public GlobalKeyboardHook()
{
llkh = new LLKeyboardHook(HookProc);
}
~GlobalKeyboardHook()
{ unhook(); }
public void hook()
{
IntPtr hInstance = LoadLibrary("User32");
Hook = SetWindowsHookEx(WH_KEYBOARD_LL, llkh, hInstance, 0);
}
public void unhook()
{
UnhookWindowsHookEx(Hook);
}
public int HookProc(int Code, int wParam, ref keyBoardHookStruct lParam)
{
if (Code >= 0)
{
Keys key = (Keys)lParam.vkCode;
if (HookedKeys.Contains(key))
{
KeyEventArgs kArg = new KeyEventArgs(key);
if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null))
KeyDown(this, kArg);
else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null))
KeyUp(this, kArg);
if (kArg.Handled)
return 1;
}
}
return CallNextHookEx(Hook, Code, wParam, ref lParam);
}
}
}
сама форма
Код:
GlobalKeyboardHook gHook;
private void Form1_Load(object sender, EventArgs e) //
{
gHook = new GlobalKeyboardHook(); // Создаём новый GlobalKeyBoardHook
gHook.KeyDown += new KeyEventHandler(gHook_KeyDown); // Объявляем новый ивент
foreach (Keys key in Enum.GetValues(typeof(Keys)))
gHook.HookedKeys.Add(key);
}
public void gHook_KeyDown(object sender, KeyEventArgs e)
{
textBox1.Text += ((char)e.KeyValue).ToString();
}
private void button1_Click_1(object sender, EventArgs e)
{
gHook.hook();
}
private void button2_Click(object sender, EventArgs e)
{
gHook.unhook();
}
помогите как соединить к варкрафту?? кто ни будь сталкивался?
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Статья] Бинд клавиш в СSS
|
-HoBu4eK- |
Статьи и описания по Counter-Strike |
6 |
10.12.2014 20:15 |
С++ эмуляция клавиш
|
set01q |
Общение разработчиков |
1 |
12.03.2014 23:43 |
Бинды клавиш.
|
oscar1209 |
Общение и обсуждение, архив Lineage 2 |
0 |
06.09.2011 21:24 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 19:56.
|
 |