2017-05-02 16 views
-2
#include <iostream> 
#include <Windows.h> 
#include <winable.h> 

int main() 
{ 
    INPUT input; 
    int a; 
    while (1) { 
     while (GetAsyncKeyState(0x5A)) { 
      input.type = INPUT_MOUSE; 
      input.ki.wScan = MapVirtualKey(0x01, MAPVK_VK_TO_VSC); 
      input.ki.time = 0; 
      input.ki.dwExtraInfo = 0; 
      input.ki.wVk = 0x01; 
      input.ki.dwFlags = 0; 

      SendInput(1, &input, sizeof(INPUT)); 
     } 
    } 
} 

エラー、それを把握することはできません。私は私のIDE(コードブロック)は、ドロップダウンメニューで任意のpedicationsをポップアップしたかどうかを確認するために、それを再入力私はSendInputを使用しようとしていますが、私は

MAPVK_VK_TO_VSC was not declared in this scope

をそれは何も表示されなかったので、私はそれが存在しないと仮定します。私はいくつかのサイトのサンプルプログラムでそれを見たので(それは本当に必要ではないが覚えていないが)、それが起こったと思った。

は、私はそのwScanラインに置くことになってんですか?ここで

+1

なぜINPUT_MOUSEに 'input.ki'を使用していますか?代わりに 'input.mi'を使用してください。 [ドキュメントを読む](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646270.aspx)マウス入力はスキャンコードを使用しないので、 'MOUSEINPUT'は' wScan'フィールドを持たず、キーボード入力だけが行います。 –

+0

あなたが何を求めているか全く分かりません。タイトルは 'SendInput'でいくつかの問題を示唆していますが、質問は' MapVirtualKey'を中心にしています。誰にでも役立つことはまずありません。投票を終了する。 – IInspectable

+0

'MapVirtualKey/Ex()'が定義されているのと同じ 'winuser.h'ヘッダファイルに' MAPVK_VK_TO_VSC'が定義されているので、 ''このスコープで宣言されていません。 'MapVirtualKey()'を呼び出す前にundef MAPVK_VK_TO_VSC'を実行してください。 –

答えて

-1

は、あなたが入力を送る使ってマウスクリックを送信する方法である:

enum sendInputs { MOUSE_DOWN, MOUSE_UP, NUM_INPUTS }; 
INPUT inputs[NUM_INPUTS]; 
//left down 
inputs[MOUSE_DOWN].type = INPUT_MOUSE; 
inputs[MOUSE_DOWN].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; 

//left up 
inputs[MOUSE_UP].type = INPUT_MOUSE; 
inputs[MOUSE_UP].mi.dwFlags = MOUSEEVENTF_LEFTUP; 
SendInput(NUM_INPUTS, &inputs, sizeof(inputs)); 

をそして、あなたは唯一の#include "Windows.h"ヘッダー、iostreamのほかに何もする必要があります。

+1

SendInputの最初のパラメータとして1を渡すのは間違いです。その理由を理解するために、ドキュメントを読んでください。 –

+0

これと任意の 'Sleep'呼び出しは、あなたが' SendInput'(または一般的な入力)を理解していないことを示す強力な指標です。 ** - 1 ** – IInspectable

+0

よろしくお願い申し上げます。私はそれを改善するために使用します。 –

関連する問題