ページ 11

SendInputについて

Posted: 2014年7月28日(月) 06:27
by のり
SendInputについてです.
SendInputでカーソルを動かし, SendInputでクリックを行うプログラムを作成しました.

しかし, スクリーンキーボードで文字入力を行おうとした場合, クリックできません.

他のところはクリックできるのですが, スクリーンキーボード上だとSendInputによるクリックが効きません.

何か解決方法がありましたら, ご教授お願いいたします.

Re: SendInputについて

Posted: 2014年7月28日(月) 14:58
by のり
質問者です.

どなたかご存知の方いらっしゃいませんか?

Re: SendInputについて

Posted: 2014年7月28日(月) 20:34
by Bull
どのような環境で、どのようなプログラムを実行していますか。
また、キー入力を受け取るアプリケーションは何ですか?

簡単なプログラムを書いて実行したところ、うまくキーを拾えているようです。

当方の環境は
Windows7 Pro 32bit
Visual Studio 2010でコンソールアプリケーションを作成
OS標準のスクリーンキーボードからメモ帳に文字を入力

以上です

Re: SendInputについて

Posted: 2014年7月28日(月) 21:44
by みけCAT
のり さんが書きました:SendInputでカーソルを動かし, SendInputでクリックを行うプログラムを作成しました.

しかし, スクリーンキーボードで文字入力を行おうとした場合, クリックできません.

他のところはクリックできるのですが, スクリーンキーボード上だとSendInputによるクリックが効きません.
Bull さんが書きました:簡単なプログラムを書いて実行したところ、うまくキーを拾えているようです。
両者ともプログラムを貼っていただいて、比較するとなにかわかるかもしれません。

Re: SendInputについて

Posted: 2014年7月28日(月) 23:27
by Bull
ええ、そうなんですよね。ソースを提示できればいいのですが、ご免なさい今手元のありません。

これだけじゃなんなんで、概要だけでも...

コード:

	INPUT input[] = {
		{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, 0 },
		{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_RIGHTDOWN, 0, 0 },
		{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_RIGHTUP, 0, 0 },
	};
こんな構造体を用意して、マウスを移動する位置を決めます。
そして SendInput() を呼び出すだけです。

コード:

	input[0].mi.dx = x座標;
	input[0].mi.dy = y座標;
	SendInput(3, input, sizeof(INPUT));
やっつけなプログラムなんで、座標は決めうちです。
参考にはなるかもしれませんが、そのままでは動かないです。