質問: ### 発生している問題・エラーメッセージ VC++で簡易連打ツールを作ってC言語とWIN32APIを勉強しています。 エンターキーを押したときにマウスカーソルの下をクリックするようにしたのですが、自分が思っているのと違う動きになってしまいます。 GetCursorPosで現在位置を取得して構造体に格納して、その構造体を引数にしてSendInputを呼んでいるので、例えばx=300,y=400が最初に入れば10回その場所をクリックするように思うのですが、実行してみるとマウスカーソルの動きに合わせてクリックする位置が移動してしまいます。 最初に電卓の1の位置にあってもループ中に2や3に移動するとそれらが押されてしまうのはなぜでしょうか。 以下ウィンドウプロシージャの中の問題の一部です。 ### 該当のソースコード case WM_CHAR: if(wParam==13) { INPUT input={}; GetCursorPos(&Point); input.type=INPUT_MOUSE; input.mi.dx=Point.x; input.mi.dy=Point.y; input.mi.dwFlags=MOUSEEVENTF_ABSOLUTE| MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP; for(i=0;i<10;i++) { SendInput(1,&input,sizeof(input)); } } break;
回答: そういう仕様です。クリックしたい位置にカーソルを移動させてください。