タイトル : Re^5: SendInput関数が Vistaで動作しないのですが? 投稿日 : 2009/09/19(Sat) 20:08 投稿者 : 靖
みなさんに、いろいろ助言を受けいろいろ試してまいりましたが、 実は違うところに、原因がありました。 Vistaの新機能で(?)DPIをでデフォルトが96 DPIのところを120 DPIに設定していたようです。 これについては、導入直後にやったのだと思いますが、完全に忘れていました。 PCのデフォルトは96dpiですので、Pixel = Twips \ (1440/解像度) 1440/96=15 Pixel = Twips \ 15 y = y \ Screen.TwipsPerPixelX 'スクリーン座標に変換(通常=15) ところが、わたしのPCは120dpiになっていましたので 1440/120=12 y = y \ 12 でなければならなかったのです。 Screen.TwipsPerPixelX は120dpiに変更したVista上でも その値は15になってしまいますので、 これを y = y \ 12 に変更して、正常に動作するようになりました。 SendInputではなく、SetCursorPos(x, y)に問題があったわけです。 大変お騒がせし、申し訳ありませんでした。 またその後の調べで、Vistaでは EXEのプロパティの互換性に、 高 DPI 設定では画面のスケーリングを無効にする というのが追加されていて、 そこにチェックを入れておけば、上記のような面倒なことをしなくても、 よい事が確認できました。 なぜ SendInput にこだわったのかと言いますと、 flashで作られたサイトのボタンを、押す必要があったからです。 htmlだけのサイトであれば、別の方法を使用したのですが、フラッシュの場合、 POSTするとか、ハンドルを取ってメッセージを送るとかのやり方が全く解らず、 それじゃ、場所決めしてボタンを押そうかと、思ったからです。 うまいやり方をご存知の方は、ぜひ教えてください。 何とか目的は達成できました。 いろいろとありがとうございました。 |