@Dima_E

C++ как использовать функции winAPI?

Я тут книжку читал толи про ботов, толи про что то ещё. Там есть пример отслеживания откуда идут нажатия клавиатуры или мыши. Писали на AutoIT. Мне захотелось переписать на с++.
Сам с++ я плохо знаю разве что синтаксис. И возникла проблема как импортировать библиотеку которая позволить использовать API windows.
В AutoIT делают так '#include ' в Python тоже знаю. Но не могу понять как она называется или как это сделать в с++.
Скажем вызов функции GetModuleHandle. Как вызвать в С++ ?

Пример кода на AutoIT который хочу переписать на с++
#include <WinAPI.au3>

global const $kLogFile = "debug.log"
global $gHook

func LogWrite($data)
	FileWrite($kLogFile, $data & chr(10))
	endfunc

func _KeyHandler($nCode, $wParam, $lParam)
	if $nCode < 0 then
		return _WinAPI_CallNextHookEx($gHook, $nCode, $wParam, $lParam)
	endIf

	local $keyHooks = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)

	LogWrite("_KeyHandler() - keyccode = " & DllStructGetData($keyHooks, "vkCode"));

	local $flags = DllStructGetData($keyHooks, "flags")
	if $flags = $LLKHF_INJECTED then
		MsgBox(0, "Alert", "????????? ???-??????!")
	endif

	return _WinAPI_CallNextHookEx($gHook, $nCode, $wParam, $lParam)
endfunc

func InitKeyHooks($handler)
	local $keyHandler = DllCallbackRegister($handler, "long", "int;wparam;lparam")
	local $hMod = _WinAPI_GetModuleHandle(0)
	$gHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, _
		DllCallbackGetPtr($keyHandler), $hMod)
endfunc

InitKeyHooks("_KeyHandler")

while true
	Sleep(10)
wend
  • Вопрос задан
  • 236 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вот это GetModuleHandle, например: Вводите в гугле "GetModuleHandle win32". Получаете ссылку вот сюда.

Там прямо в заголовке написано libloaderapi.h
Значит, вам надо делать #include "libloaderapi.h"

Вот так по каждой интересующей вас функции надо найти документацию от microsoft. Там обычно написано, в какой библиотеке оно лежит и в каком заголовочном файле.

Этот заголовочный файл является частью windows sdk.

Как вызвать - смотрите в той же документации, какие параметры функция принимает. Или гуглите "GetModuleHandle example".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Погуглите "winapi hello world".
Пример Windows Hello World.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы