- PR -

Windows2003Server上でMouseWheelが発生しない

1
投稿者投稿内容
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2007-03-07 18:42
開発機
XPProSP2 VB.NET2005 v2.0.50727

テスト機
Windows2003ServerR2 SP1 .NET2.0 v2.0.50727

Windows2003上でMouseWheelイベントが発生しません。自作アプリのフォームイベントです。開発機で実行した場合はイベント発生します。

テスト機でもIEでYahoo等を開いてホイールを動かせば問題なくスクロールしてくれます。デバイスマネージャではPS/2 互換Mouseとなっており、ホイールの設定は「ホイールをあると仮定する」「ホイールを検出する」等試しましたが駄目でした。
他のドライバ(MS PS2マウス、ロジテックのPS2マウスのドライバ)も試しましたが駄目でした。

何かここを確認しろとか設定しろとかありましたら教えてください。
他のXPの端末では問題ありませんので、w2003R2での問題なのかな?という気がします。

---------------- 以下コード ------------------------------
Private Sub frmMain_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
Debug.WriteLine(e.Delta.ToString)
End Sub
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-07 19:32
ホイールの有無を検出する関数があるので、それで検査してみて下さい
_________________
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2007-03-08 09:28
アドバイスありがとうございます。

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WM_MOUSEWHEEL As Integer = &H20A

If m.Msg = WM_MOUSEWHEEL Then
MessageBox.Show("kita-")
End If
MyBase.WndProc(m)
End Sub

こんな感じでメッセージ拾おうとしたんですが、w2003R2では検出できませんでした。
IEやExcelではホイール使えるのになぁ。
悔しい
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-10 22:39
My.Computer.Mouse.WheelExists プロパティ は、何を返しますか?
_________________
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-03-12 00:17
引用:

If m.Msg = WM_MOUSEWHEEL Then
MessageBox.Show("kita-")
End If



リストビュー上で項目の編集をおこなう機能を実装したのですが、
リストビューの上にフォーカスのあるテキストボックスがある状態で
ホイールによりリストビューだけがスクロールしてしまい
テキストボックスを同期スクロールさせるためにスクロールメッセージを処理しました。

そのときのホイール操作での結果です。

1.ELECOMマウス→ELECOMホイールユーティリティー常駐
  WM_HSCROLLとWM_VSCROLLが発生
2.Windows標準ドライバマウス
  WM_MOUSEWHEELが発生
3.1にて、ELECOMホイールユーティリティーを終了
  WM_MOUSEWHEELが発生

このことからELECOMホイールユーティリティーは
ターゲットコントロールのスクロールをエミュレートしていることがわかりました。

参考になれば。
1

スキルアップ/キャリアアップ(JOB@IT)