首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将win32输入结构用作成员变量时出错

尝试将win32输入结构用作成员变量时出错
EN

Stack Overflow用户
提问于 2013-02-13 17:18:02
回答 2查看 489关注 0票数 1

我正在编写一个生成模拟用户输入的程序,并创建了一个类来执行此操作。当我尝试用代码::块来构建它的时候,用了gcc,它抛出了一个错误,说“错误:'INPUT‘没有命名一个类型”。有人能解释一下为什么我会收到这个错误吗?下面是发生错误的头文件

代码语言:javascript
复制
#ifndef INPUTSIMULATOR_H
#define INPUTSIMULATOR_H
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <Winuser.h>

enum type{KEYBOARD,MOUSE};
enum button{LEFT,RIGHT,MIDDLE};
class inputSimulator
{
public:
    inputSimulator(type _inputType);
    virtual ~inputSimulator();
    int generateKeyEvent (int vk);
    int generateMouseButtonDown(button eventType);
    int generateMouseButtonUp(button eventType);
    int generateMouseMovement(int dy, int dx);
protected:
private:
    INPUT input; //error occurs here
    type inputType;
};

#endif

编辑:我找到了同一问题的另一个实例,但没有解决方案。https://stackoverflow.com/questions/7222529/input-structure-in-simulating-actions-in-winapi

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 14:52:07

我不能重现这个问题。当我包含windows.h (顺便说一句,您应该始终直接包含它,而不是winuser.hwingdi.h)时,INPUT结构被正确地声明和定义。

您的Windows标头有问题。很明显,同样的事情也发生在另一个人身上。您可能都在使用Code::Blocks或提供自己的Windows头的重新实现的东西。它们要么省略了INPUT结构的定义,要么无意中隐藏了它。

我建议直接从微软下载并安装latest version of the Windows SDKWindows 7 SDK。这应该可以解决您的问题,除非隐藏INPUT结构发生在您自己的项目中。确保您没有在命令行上(或通过IDE的选项执行相同的操作)定义具有相同名称的预处理器宏。

票数 1
EN

Stack Overflow用户

发布于 2013-02-15 14:40:18

为什么要重新发明轮子呢?使用Autoit自动执行用户输入。

您还可以使用他们的C++ COM库来帮助您轻松地模拟用户交互。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14850074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档