SendInput関数が Vistaで動作しないのですが? - 靖 09/09/17-08:56 No.14039 が少し長くなったのでこちらに継続します。マウスを指定場所に移動しクリックする (138)http://hanatyan.sakura.ne.jp/vbhlp/mouse_event.htm上記のサンプルを使った場合はどうなのでしょうか?コントロールパネルのマウスのプロパティ関係やマウス関係のソフトの導入等も含め環境等を調べてみてはどうでしょうか?他の Vista 環境のPCが用意できるならそれらで試してどうなるか?サンプルのコード以外、余計なコードは付加しておられないでしょうね。今、使っておられるVista 環境のPCで作成した他のVB6.0のアプリは問題なく動作しているのでしょうか?どちらにしても私のVista 環境のPCでは問題なく動作しておりますので、コードやプロパティ等変更しておられないのなら、そのPCの環境が影響しているものと思われます。
> マウスを指定場所に移動しクリックする (138)> http://hanatyan.sakura.ne.jp/vbhlp/mouse_event.htm> > 上記のサンプルを使った場合はどうなのでしょうか?早朝よりありがとうございました。ちょっと外出してました。139と全く変わらぬ挙動をしました。 y = (Form1.Top + 200) \ Screen.TwipsPerPixelX x = (Form1.Left + 1100) \ Screen.TwipsPerPixelX上記に変更して、ダブルクリック、右クリック、フォームのドラッグは問題ありません。Command1ボタンをクリックは、動きません。> 今、使っておられるVista 環境のPCで作成した他のVB6.0のアプリは問題なく動作> しているのでしょうか?動作してますXp機の方がVB6の開発には便利なため、(ヘルプとか部品とか諸々揃ってる)主にこちらを使ってますが、Vista 環境のPCで作成したものもあります。今までは、それらの全てが問題ありませんでした。> どちらにしても私のVista 環境のPCでは問題なく動作しておりますので、コードや> プロパティ等変更しておられないのなら、そのPCの環境が影響しているものと> 思われます。試用のためですので、コード等の変更は一切してません。139を使うのが目的ではありませんので。このコードを参考に作った物が、Xp OK で、Vista×。それでは本家のもので試してみようということですので。わたしのPCの固有の問題だとは、感じています。時間をかけて調べてみます。大変親身になり、ご助言いただいたことに感謝しております追記気になった点が一つサンプルのもの' y = (Form1.Top + 100) \ Screen.TwipsPerPixelX' x = (Form1.Left + 3000) \ Screen.TwipsPerPixelXXp ○ Vista ×修正 y = (Form1.Top + 200) \ Screen.TwipsPerPixelX x = (Form1.Left + 1100) \ Screen.TwipsPerPixelXXp ○ Vista ○200 \ 15=13100 \ 15= 6その差 7 これが Vista では致命的。
驚きですy = y + 10 を追加で正常に動きました。何故かはわかりません。思いつきでやってみました。------------------------------------- '縦方向 y = Form1.Top + Command1.Top + (Command1.Height \ 2) 'タイトルバーの寸法を求める y = y + (Form1.Height - Form1.ScaleHeight) - waku y = y \ Screen.TwipsPerPixelX 'スクリーン座標に変換(通常=15)追加 y = y + 10
> 驚きです> y = y + 10 を追加で正常に動きました。> 何故かはわかりません。>Command1ボタンの◎の中心付近にあります。それでは、マウスポインターがCommand1 ボタンの真中になかった(Command1 ボタン外)と言う事になりますが。(現在はどの位置を指していますか)どのようなマウスポインターを使っておられるのでしょうか?(Windows 標準の矢印 ?)一度マウス関連を見直して見て下さい。
> それでは、マウスポインターがCommand1 ボタンの真中になかった(Command1 ボタン外)> と言う事になりますが。(現在はどの位置を指していますか)変更前はマウスポインターがCommand1 ボタンの真中変更後は◎とボタンの下枠の間ぐらい雑談用掲示板に:SendInput関数2で画像をアップしましたWindows 標準の矢印ELECOM マウスマネージャを使っています。
> ◎とボタンの下枠の間ぐらいそれでクリックができるなら、+10 する前は、Form をクリックしていた事になります。Form のクリックイベント内に MsgBox の表示のコードを書いて試して見て下さい。(+10 はせずに)それで、Form の方がクリックできていたら、マウスドライバー等を含めてマウスの動作がおかしいのかも知れませんね。
> それでクリックができるなら、+10 する前は、Form をクリックしていた事になります。> Form のクリックイベント内に MsgBox の表示のコードを書いて試して見て下さい。> (+10 はせずに)まさにその通りです。Form のクリックイベントが実行されます。> それで、Form の方がクリックできていたら、マウスドライバー等を含めて> マウスの動作がおかしいのかも知れませんね。そうですね。ただコードで指定した位置に、ポインタは動いてるわけですよね。でもその位置ではだめ、ずれた所をコードの方はクリックしている。なにか不思議です。長々とありがとうございました。疑問は残りスッキリしないところもありますが、一応それを考慮して作れば、ツールは動くということです。実際にどれぐらいずれるのか、正確な値が分かればもっとやりやすいのでが。