c++ hook 写出函数获取学出文件的字节和文件名
以下是使用 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 钩子来监视窗口消息,并在窗口句柄发生变化时获取文件路径名并打开文件获取字节数。注意,这个示例只能获取一些特定类型的文件的字节数,对于其他类型的文件可能会失败或者获取到错误的字节数。
原文地址: https://www.cveoy.top/t/topic/JQJ 著作权归作者所有。请勿转载和采集!