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();
}

BIntVector.push_back(key);、他の基準が満たされているかどうかに応じて、コードの後半で send key ステートメントに入力するキー Hex を収集するために使用されます。これが、開始時の 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