hspailさんの言う
>SetCursor NULLや、ShowCursor
では、別アプリのマウスカーソル非表示はできそうにないですね。
どちらも自アプリのウィンドウでしか効果がないようです。
以下検証用サンプル。
SetCursor検証
#include "user32.as"
mes "3秒後に非表示にしてみる"
wait 300
SetCursor 0
mes "非表示"
mes "ただしカーソルを動かすと再表示する"
ShowCursor検証
#include "user32.as"
mes "3秒後に非表示にしてみる"
wait 300
do
ShowCursor 0
until stat < 0
mes "非表示"
というわけで、黒胡椒さんのサンプルのように、ウィンドウに関連付けられたカーソルを変更する必要がありそうです。
つまり、理論上はこれで良いハズ。
#include "user32.as"
#include "kernel32.as"
onexit goto *cc_exit
sdim string,512
Am=$FF : Xm=$00
screen 0,200,200
hTargetWnd=hwnd ;←ここに標的ウィンドウのハンドルを入力
GetClassLong hTargetWnd, -6
hTargetIns=stat ;標的ウィンドウを持つアプリのインスタンスを得る
CreateCursor hTargetIns,0,0,1,1,varptr(Am),varptr(Xm)
hCursor=stat ;非表示用カーソルを作成
SetClassLong hTargetWnd, -12, hCursor ;カーソル変更
hLastCur=stat ;標的ウィンドウの以前のカーソルハンドルを保持しておく
if hLastCur = 0 {
GetLastError ;エラーコード取得
FormatMessage $1000,0,stat,0,varptr(string),512,0
dialog string ;エラー表示
}
stop
*cc_exit
SetClassLong hTargetWnd, -12, hLastCur ;カーソルを元に戻す
DestroyCursor hCursor ;非表示用カーソル破棄
end
……なんですが、ウィンドウハンドルを別アプリのものにした途端、「アクセスが拒否されました」と出てうまくいきませんな。少なくとも自分の環境では。
他プロセスをいじるのは拒否されて当然なのではありますが。
すいません、何の解決にもなっていませんね。。。