トップ回答者
マウスカーソルの変更方法について

質問
-
お世話になります。
現在、VB2005でマウスカーソルを変更するプログラムを作成しているのですが、変更したカーソルを元に戻すことができずに困っております。
サンプルソースを以下に記します。Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Integer
Declare Function SetSystemCursor Lib "user32.dll" (ByVal hCur As Integer, ByVal id As id) As Integer
Private Const IDC_ARROW = 32512 '標準の矢印
Private Const IDC_NORMAL = IDC_ARROWDim strCurFile0 As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1_Click.Click
'(1)現在のカーソルファイル(?)を取得
strCurFile0 = ???? ' ← 不完全'(2)ファイル名を使ってカーソルを変更
Dim strCurFile1 As String = "c:\tmp.cur"
SetSystemCursor((LoadCursorFromFile(strCurFile1)), IDC_NORMAL)
End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2_Click.Click
'(3)カーソルを元に戻す
SetSystemCursor((LoadCursorFromFile(strCurFile0)), IDC_NORMAL)
End Sub
上記の不完全なソースは、Button1をクリックすると、現在のカーソルファイル名を取得した後、カーソルを変更し、Button2をクリックすると、元のカーソルに戻るというモノです。上記のソースでは、変更前のカーソルをレジストリ
HKEY_CURRENT_USER\Control Panel\Cursors
から取得しようと考えているのですが、Windowsのデフォルトのカーソルの場合はファイル名がわかりませんし、できればレジストリからファイル名を取得するのは避けたいと考えております。
現在のカーソルを取得できるのであれば、ファイルという形式にはこだわっておりません。どなたか、解決方法をご存じの方がいらっしゃいましたらお教えいただけると助かります。
また、具体的な解決策ではなくとも、解決のヒントになるようなお知恵を拝借できるだけでも助かります。
よろしくお願いいたします。
回答
すべての返信
-
>自アプリケーションにだけでなく、別ウィンドウに対するマウスカーソルも書き換えたいのでしょうか?
その通りです。
自アプリ以外でもカーソルが変更されるようにしたいのです。
機能としては、「コントロールパネル」の「マウス」の「ポインタ」タブでカーソルを変更する機能と同等のものを考えています。
(ボタンを押せば自アプリ以外でもカーソルがかわるように…そして、デフォルトの状態にもどせるようにする機能)
Cursorクラスで、自アプリ以外のウィンドウで変更したカーソルを使用する方法探してみましたが、やはり上手く探すことができません。
ヒントをいただけると助かります。
よろしくお願いいたします。