tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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するとか、ハンドルを取ってメッセージを送るとかのやり方が全く解らず、
それじゃ、場所決めしてボタンを押そうかと、思ったからです。

うまいやり方をご存知の方は、ぜひ教えてください。

何とか目的は達成できました。
いろいろとありがとうございました。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。