以下是使用 c++ hook 写出获取文件字节和文件名的函数的示例代码:

#include <iostream>
#include <Windows.h>

// 定义一个钩子函数,用于获取文件字节和文件名
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION) {
        // 获取当前活动的窗口句柄
        HWND hwnd = GetForegroundWindow();

        // 获取当前窗口中的文件路径名
        char szFilePath[MAX_PATH];
        GetWindowTextA(hwnd, szFilePath, MAX_PATH);

        // 打开文件并获取字节数
        HANDLE hFile = CreateFileA(szFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if (hFile != INVALID_HANDLE_VALUE) {
            DWORD dwFileSize = GetFileSize(hFile, NULL);
            CloseHandle(hFile);

            // 输出文件名和字节数
            std::cout << "File name: " << szFilePath << std::endl;
            std::cout << "File size: " << dwFileSize << " bytes" << std::endl;
        }
    }

    // 继续传递消息给下一个钩子或目标窗口
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    // 安装钩子
    HHOOK hHook = SetWindowsHookExA(WH_CALLWNDPROC, HookProc, NULL, GetCurrentThreadId());

    // 消息循环
    MSG msg;
    while (GetMessageA(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }

    // 卸载钩子
    UnhookWindowsHookEx(hHook);

    return 0;
}

在上面的示例代码中,我们使用 WH_CALLWNDPROC 钩子来监视窗口消息,并在窗口句柄发生变化时获取文件路径名并打开文件获取字节数。注意,这个示例只能获取一些特定类型的文件的字节数,对于其他类型的文件可能会失败或者获取到错误的字节数。

c++ hook 写出函数获取学出文件的字节和文件名

原文地址: https://www.cveoy.top/t/topic/JQJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录