我正在编写一个生成模拟用户输入的程序,并创建了一个类来执行此操作。当我尝试用代码::块来构建它的时候,用了gcc,它抛出了一个错误,说“错误:'INPUT‘没有命名一个类型”。有人能解释一下为什么我会收到这个错误吗?下面是发生错误的头文件
#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
发布于 2013-02-15 14:52:07
我不能重现这个问题。当我包含windows.h (顺便说一句,您应该始终直接包含它,而不是winuser.h或wingdi.h)时,INPUT结构被正确地声明和定义。
您的Windows标头有问题。很明显,同样的事情也发生在另一个人身上。您可能都在使用Code::Blocks或提供自己的Windows头的重新实现的东西。它们要么省略了INPUT结构的定义,要么无意中隐藏了它。
我建议直接从微软下载并安装latest version of the Windows SDK或Windows 7 SDK。这应该可以解决您的问题,除非隐藏INPUT结构发生在您自己的项目中。确保您没有在命令行上(或通过IDE的选项执行相同的操作)定义具有相同名称的预处理器宏。
发布于 2013-02-15 14:40:18
为什么要重新发明轮子呢?使用Autoit自动执行用户输入。
您还可以使用他们的C++ COM库来帮助您轻松地模拟用户交互。
https://stackoverflow.com/questions/14850074
复制相似问题