- 題名: マウスカーソルを変更後、SendMessageTimeoutの反映
- 日時: 2014/02/11 22:45:52
- ID: 32149
- この記事の返信元:
- (なし)
- この記事への返信:
- [32150] Re[1]: マウスカーソルを変更後、SendMessageTimeoutの反映2014/02/12 10:58:32
- [32153] Re[1]: マウスカーソルを変更後、SendMessageTimeoutの反映2014/02/12 15:05:57
- [32154] Re[1]: マウスカーソルを変更後、SendMessageTimeoutの反映2014/02/12 17:25:00 [解決]
- ツリーを表示
分類:[.NET]
【解決したい問題】
マウスカーソルを変更するプログラムを作成しているのですが、カーソルを規定のフォルダにコピーし、レジストリを変更する箇所まではできたのですが、その変更を即時反映させようと、SendMessageTimeout、またはSendMessageを呼び出して、反映させようとしたのですが、うまく反映されません。解決方法をご存知、またはわかる方がいらっしゃいましたら、ご教授下さい。
開発環境は、
Visual Studio 2010 Express + Win7 32bit
です。
以下、作成したプログラムです。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'マウスカーソルをコピー
System.IO.File.Copy("C:\test\a.ani", "C:\Windows\Cursors\a.ani", True)
'レジストリ書き込み
Dim editKey As String = String.Concat("%SystemRoot%\Cursors\", TextBox1.Text)
Dim KeyName As String = String.Concat(WindowsIdentity.GetCurrent().User.ToString(), "\Control Panel\Cursors")
Dim GetValueName As String = "Arrow"
Try
'キーを書き込みで開く
Dim Key As RegistryKey = Registry.Users.OpenSubKey(KeyName, True)
'値を設定
Key.SetValue(GetValueName, editKey, RegistryValueKind.ExpandString)
'キーを閉じる
Key.Close()
Catch ex As NullReferenceException
'エラー処理
End Try
'マウス情報取得
'SystemParametersInfo(SPI_GETMOUSE)で取得
Dim test1() As Integer = testGet()
'マウス情報設定
'SystemParametersInfo(SPI_SETMOUSE)で設定
testSet(test1)
'最初にやってみたもの
testRt = SendMessageTimeout(&HFFFF, &H1A, 0, "Environment", &H2, 5000, 0)
'SendMessageTimeoutでうまくいかなかったため、次にこちらでやってみました。
'testRt = SendMessage(&HFFFF&, &H1A&, 0, 0)
MsgBox("終わり")
End Sub
Declare Auto Function SendMessageTimeout Lib "User32" ( _
ByVal hWnd As Integer, _
ByVal Msg As UInt32, _
ByVal wParam As Integer, _
ByVal lParam As String, _
ByVal fuFlags As UInt32, _
ByVal uTimeout As UInt32, _
ByRef lpdwResult As IntPtr _
) As Long
Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" ( _
ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
【追加事項】
取り合えずexeにしてみて、当方テーマが、クラシックテーマにしているので、7デフォルトのテーマに戻して、実行してみましたが、うまくいきませんでした。また、Vistaの環境がありますので、Vistaでやってみましたが、うまくいきませんでした。
Vistaの環境は、Home Premium 32bit
.netFramework 4.0です。