HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1213
黒胡椒別アプリケーションのカーソルを消す方法3解決


黒胡椒

リンク

2008/12/13(Sat) 06:34:27|NO.21524

とあるアプリケーションのマウスカーソルを消すプログラムを作っているのですがうまく行きません。
APIも駆使しましたがお手上げ状態です。
もし何か方法を知っていたら教えてください。

↓試作のプログラム

#include "user32.as" onexit goto *cc_exit screen 0,200,200 cls 0 Am=$FF : Xm=$00 CreateCursor hinstance,0,0,1,1,varptr(Am),varptr(Xm) SetClassLong ****, -12, stat ;←****の部分に別ウィンドウのハンドルを入力 stop *cc_exit DestroyCursor hinstance end



この記事に返信する


hspail

リンク

2008/12/13(Sat) 08:01:54|NO.21525

今時間がなくて試せませんが、
SetCursor NULLや、ShowCursorを使えばできると思います。



flory

リンク

2008/12/13(Sat) 17:31:41|NO.21532

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


……なんですが、ウィンドウハンドルを別アプリのものにした途端、「アクセスが拒否されました」と出てうまくいきませんな。少なくとも自分の環境では。
他プロセスをいじるのは拒否されて当然なのではありますが。


すいません、何の解決にもなっていませんね。。。



黒胡椒

リンク

2008/12/15(Mon) 00:36:18|NO.21575

返答ありがとうございます。
どうも方法は無いみたいですね。
残念ですが諦めることにします。



ONION software Copyright 1997-2023(c) All rights reserved.