Juniorboy 发表于 2022-8-30 17:11:48

参数类型匹配问题

#include <Windows.h>
#include <WinUser.h>
#include <stdio.h>
__declspec(dllexport) DWORD SaveDataToFile(LPSTR szFilePath,LPVOID lpData,DWORD dwDataSize); HHOOK _hook;
KBDLLHOOKSTRUCT kbdStruct;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {char key_value = { 0 };
        if (nCode >= 0)
        {
                // the action is valid: HC_ACTION.
                if (wParam == WM_KEYDOWN)
                {
                        kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
                        printf("KeyboardProc nCode = %c\n", kbdStruct.vkCode);
                        sprintf(key_value, "%c", kbdStruct.vkCode);
                        //保存文件show.txt到桌面
                        SaveDataToFile("C:\\Users\\qq670\\Desktop\\1.txt", key_value, lstrlen(key_value));
                        // a key (non-system) is pressed.
                        if (kbdStruct.vkCode == VK_F1)
                        {
                                // F1 is pressed!
                                printf("F1 is pressed\n");
                                //return 1;
                        }
                }
        }
        return CallNextHookEx(_hook, nCode, wParam, lParam);
}void SetHook()
{
        if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0)))
        {
                MessageBox(NULL, "Failed to install hook!", "Error", MB_ICONERROR);
        }
}void ReleaseHook()
{
        UnhookWindowsHookEx(_hook);
}/* ************************************
* SaveDataToFile
* 功能 将数据存储到文件末尾
* 参数 LPSTR szFilePath 文件路径
* LPVOID lpData 需存储的数据
* DWORD dwDataSize 数据大小(字节)
**************************************/
DWORD SaveDataToFile(
        LPSTR szFilePath,
        LPVOID lpData,
        DWORD dwDataSize)
{
        //文件句柄
        HANDLE hFileWrite;
        //成功写入的数据大小
        DWORD dwWritedDateSize; //打开已经存在的文件,读取内容。
        hFileWrite = CreateFile(szFilePath, // 要打开的文件名
                GENERIC_WRITE, // 以写方式打开
                0, // 可共享读
                NULL, // 默认安全设置
                OPEN_ALWAYS, // 打开已经存在的文件,没用则创建
                FILE_ATTRIBUTE_NORMAL, // 常规文件属性
                NULL); // 无模板

        //判断是否打开成功
        if (hFileWrite == INVALID_HANDLE_VALUE)
        {
                printf("打开文件失败:%d\n", GetLastError());
        } //设置文件指针到文件尾
        SetFilePointer(hFileWrite, 0, 0, FILE_END); //将数据写入文件
        if (!WriteFile(hFileWrite, lpData, dwDataSize, &dwWritedDateSize, NULL))
        {
                printf("写文件失败:%d\n", GetLastError());
        }
        else
        {
                printf("写文件成功,写入%d字节。\n", dwWritedDateSize);
        }
        CloseHandle(hFileWrite);
        return 0;
}int main(void)
{
        SetHook(); //这里只是为了不让程序退出,一直保持
        MSG msg;
        while (GetMessage(&msg, NULL, 0, 0))
        {
        }
        return 0;
}

Juniorboy 发表于 2022-8-30 17:13:47

错误信息和错误位置截图
页: [1]
查看完整版本: 参数类型匹配问题