一回も披露したことのない豆知識

VC++で他のアプリ画面をプログラムでマウス操作するのですが、
mouse_eventやSendInputを使ってみましたが、反応がありません。
ハードで実際に押すと反応します。
ハードと同等に機能するマウス操作関数を教えてください。

A 回答 (5件)

普通に行けそうな気がするけどね、


mouse_event のとこだけパット見て調べてみたけど、問題なさそう
以下ソースでちゃんと動く?
void mein() {
while(1){
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
Sleep(200);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
Sleep(200);
}
}

これでクリック動作せんのやったら関数変えるか言語変えたほうが早いかもね環境の問題かもしれんし
仮に、クリック動作だけしたいんだったらUWSCがいいと思う
もしかしたらパイソンでもできるかも?調べてないけど出来そうな雰囲気
    • good
    • 1
この回答へのお礼

ありがとうございます、参考にします。

お礼日時:2020/11/04 17:50

ソースのして

    • good
    • 0
この回答へのお礼

クリック動作を10回繰り返すコードです。

void mein() {
LoopSW = 10;

ZeroMemory(&msg, sizeof(msg));

while (LoopSW)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) {
TranslateMessage(&msg);//翻訳する
DispatchMessage(&msg);//急送する
}
else {
SetCursorPos(50, 100);//相手アプリにフォーカスの当たっている画面の位置
Sleep(200);
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
Sleep(200);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
Sleep(1000);

INPUT input = {};
input.type = INPUT_MOUSE;
input.mi.dx = 1;
input.mi.dy = 0;
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP;
SendInput(1, &input, sizeof(INPUT));

LoopSW--;
}
}

Beep(3000, 100);

return;
}

お礼日時:2020/11/04 13:47

ハード側というのは組み込みの話?


であればそんな無駄なことはしなくて良いと思います

デバッグはしましたか?
ちゃんとソースが指定箇所を通過していることを確認し、戻り値を見て

そのライブラリを使ったことはないのだけれども、
別ライブラリ、または別言語で調べるのはありかも
    • good
    • 0
この回答へのお礼

デバッグはできています、ドスクトップ画面にフォーカスがあるときは、右クリックが効いて動作して、ショートカットメニューが出ていますよ!!
セキュリティー設定のある相手のアプリでダメのようです。

お礼日時:2020/11/04 13:55

普通にいけると思うけども、反応がないってのか分からんね


エラー出てないんやろ?

コンパイル対象間違えとらん?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
エラーはでませんし、コンパイルのエラーもありません。
ボタンクリックを発生させてもフォーカスの当たっている相手側のアプリが反応しないのです。
マウスカーソルは移動できていますが、クリックが反応しません。
ハードレベルまで降りたプログラムが必要でしょうか?

お礼日時:2020/11/04 11:35

cpp縛りやないといかんの?


ちゃんと必要なライブラリインクルードした?
    • good
    • 0
この回答へのお礼

回答ありがとうございます、
ライブラリーは全て入っていると思います。
C#でもかまいません、ドライバーレベルのプログラムが必要でしょうか?

お礼日時:2020/11/04 08:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報