2 Commits f303f788cb ... 453e6d7895

Auteur SHA1 Bericht Datum
  СазоноваАА 453e6d7895 GHHH 11 maanden geleden
  СазоноваАА e81cd8d827 35YQ3YQ35 11 maanden geleden
4 gewijzigde bestanden met toevoegingen van 56 en 22 verwijderingen
  1. 54 0
      hOOOKID/hOOOKID.c
  2. 0 20
      hOOOKID/hOOOKID.cpp
  3. 1 1
      hOOOKID/hOOOKID.vcxproj
  4. 1 1
      hOOOKID/hOOOKID.vcxproj.filters

+ 54 - 0
hOOOKID/hOOOKID.c

@@ -0,0 +1,54 @@
+//7.Получение кода клавиши в формате ASCII и использованием Windows HOOK.Название клавиши выводить в MessageBox
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+
+#define BUFFER_SIZE 256
+
+LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
+{
+    if (nCode == HC_ACTION) {
+        KBDLLHOOKSTRUCT* pKeyboardStruct = (KBDLLHOOKSTRUCT*)lParam;
+
+        // Получение кода клавиши
+        DWORD keyCode = pKeyboardStruct->vkCode;
+
+        // Получение названия клавиши
+        char keyName[256];
+        UINT scanCode = MapVirtualKey(keyCode, MAPVK_VK_TO_VSC);
+        GetKeyNameTextA(scanCode << 16, keyName, sizeof(keyName));
+
+        // Вывод названия клавиши в MessageBox
+        MessageBoxA(NULL, keyName, "Нажата клавиша", MB_OK);
+    }
+
+    // Передача управления следующему обработчику
+    return CallNextHookEx(NULL, nCode, wParam, lParam);
+}
+
+int main()
+{
+    system("chcp 1251");
+    // Установка HOOK на клавиатуру
+    HHOOK hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
+
+    if (hKeyboardHook == NULL) {
+        printf("Ошибка при установке HOOK на клавиатуру\n");
+        return 1;
+    }
+
+    // Цикл сообщений
+    MSG msg;
+    while (GetMessage(&msg, NULL, 0, 0) > 0) {
+        TranslateMessage(&msg);
+        DispatchMessage(&msg);
+    }
+
+    // Удаление HOOK
+    UnhookWindowsHookEx(hKeyboardHook);
+
+    return 0;
+}
+//В этом исправленном коде мы используем функцию MapVirtualKey для преобразования кода клавиши в скан - код.Затем мы передаем полученный скан - код в функцию GetKeyNameTextA для получения названия клавиши.
+//
+//После внесения этих изменений, код должен корректно считывать и выводить названия клавиш при их нажатии.

+ 0 - 20
hOOOKID/hOOOKID.cpp

@@ -1,20 +0,0 @@
-// hOOOKID.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
-//
-
-#include <iostream>
-
-int main()
-{
-    std::cout << "Hello World!\n";
-}
-
-// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
-// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
-
-// Советы по началу работы 
-//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
-//   2. В окне Team Explorer можно подключиться к системе управления версиями.
-//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
-//   4. В окне "Список ошибок" можно просматривать ошибки.
-//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
-//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.

+ 1 - 1
hOOOKID/hOOOKID.vcxproj

@@ -127,7 +127,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="hOOOKID.cpp" />
+    <ClCompile Include="hOOOKID.c" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">

+ 1 - 1
hOOOKID/hOOOKID.vcxproj.filters

@@ -15,7 +15,7 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="hOOOKID.cpp">
+    <ClCompile Include="hOOOKID.c">
       <Filter>Исходные файлы</Filter>
     </ClCompile>
   </ItemGroup>