You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++调用FindWindow/PostMessage出现unresolved链接错误,求解决方法

链接错误原因及解决方法(向记事本发送TAB键代码问题)

错误含义

LNK2028和LNK2019都是链接器错误:

  • 编译器已经通过#include <Windows.h>找到了PostMessageW、FindWindowW这些Windows API的声明,但链接器在链接阶段找不到这些函数的实现代码。
  • 这些API的实现都在user32.lib这个Windows系统库文件里,你的项目没有配置链接这个库,所以链接器报错。

解决方法

方法1:代码中直接指定链接库

在MyForm.h里,#include <Windows.h>之后添加一行代码:

#pragma comment(lib, "user32.lib")

这行代码会告诉编译器在链接时自动引入user32.lib。

方法2:通过项目属性配置链接库

  • 右键你的项目 -> 选择「属性」
  • 依次展开「链接器」->「输入」
  • 在「附加依赖项」中添加user32.lib,点击确定即可。

额外代码修正

你的代码里还有一个逻辑错误:FindWindow的第一个参数是窗口类名,不是文件名。记事本的窗口类名是Notepad,不是note.txt,同时建议补充按键抬起的消息,模拟完整的按键动作,修改后的代码如下:

private: System::Void Tab_Button_Click(System::Object^ sender, System::EventArgs^ e) {
    HWND h = FindWindow(TEXT("Notepad"), NULL);
    if (h != NULL) { // 先判断是否成功找到记事本窗口
        PostMessage(h, WM_KEYDOWN, VK_TAB, 0);
        PostMessage(h, WM_KEYUP, VK_TAB, 0);
    }
}

内容的提问来源于stack exchange,提问作者Sonic Slonik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:45:41