0

我对 c++ 很陌生,想知道是否有任何人可以帮助我正在从事的项目。

目前在我的代码中,我从一个文件中收集信息,该文件包含程序信息,然后是当该信息的标准为真时发送的密钥。

给出一个想法,这是我的文件的样子:

0 0 1 0 235 10 0x21 PG_UP name1
1 0 1 0 260 10 0x22 PG_DN name2
2 0 1 1 235 55 0x23 END name3
3 1 1 1 10 10 0x51 Q name 4
4 1 1 1 35 10 0x57 W name 5

因为列表长度并不总是相同,所以我的代码使用它来将信息收集到内存中

string pkey, spell;
int entnum, state, movable, gcd, coordx, coordy, key;

while(WorkingFile >> entnum >> state >> movable >> gcd >> coordx >> coordy >> key >> pkey >> spell)
{
BIntVector.push_back(entnum);
BIntVector.push_back(state);
BIntVector.push_back(movable);
BIntVector.push_back(gcd);
BIntVector.push_back(coordx);
BIntVector.push_back(coordy);
BIntVector.push_back(key);

AIntVector.push_back(BIntVector);

BIntVector.clear();

BStringVector.push_back(pkey);
BStringVector.push_back(spell);

AStringVector.push_back(BStringVector);

BStringVector.clear();
}

用于收集密钥 Hex 以根据BIntVector.push_back(key);是否满足其他条件在代码中稍后输入到发送密钥语句中,这就是开头为 0 和 1 的原因。字符串值仅用于将内容打印到屏幕上。

现在我在网上发现这段代码可以做到SendInput(),当键值存储为 int 时,它似乎工作正常,但是当我尝试从文本文件中获取 Hex 值时,程序崩溃,因为它无法将其存储为诠释。但是,如果值不是 int,我的下面的代码将无法编译。我没有在下面为发送输入制作此代码,这就是为什么我不确定它为什么不工作或如何解决它的原因。也许这很简单,但我不知道 sendkey() 中发生了什么

int k = 0;

k = AIntVector[0][6];

int sendkey()
{
    INPUT ip;

    ip.type = INPUT_KEYBOARD;
    ip.ki.wScan = 0;
    ip.ki.time = 0;
    ip.ki.dwExtraInfo = 0;

    ip.ki.wVk = k;
    ip.ki.dwFlags = 0;
    SendInput(1, &ip, sizeof(INPUT));

    ip.ki.dwFlags = KEYEVENTF_KEYUP;
    SendInput(1, &ip, sizeof(INPUT));
}

任何帮助都会很棒,谢谢。

4

0 回答 0