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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0814
ゆうやん㋿スクリーンセーバーを作ってみたのですが・・・2解決


ゆうやん㋿

リンク

2019/8/14(Wed) 22:22:44|NO.88046

HSPでスクリーンセーバーを作ってみたのですが、マウスを動かしたとき 終了しないのですが、どうすればいいのでしょうか?

;HSP スクリーンセーバー テンプレート用 #uselib "user32.dll" #cfunc FindWindow "FindWindowA" sptr,sptr #cfunc GetWindowLong "GetWindowLongA" int , int #func SetWindowLong "SetWindowLongA" int , int , int #func MessageBox "MessageBoxA" int,str,str,int #packopt type 2 #packopt hide 1 #define GWL_EXSTYLE -20 #define WS_EX_TOOLWINDOW 0x0080 para=dir_cmdline if instr(para,,"/p")=0|instr(para,,"/P")=0|instr(para,,"-p")=0|instr(para,,"-P")=0:goto *preview;プレビュー if instr(para,,"/s")=0|instr(para,,"/S")=0|instr(para,,"-s")=0|instr(para,,"-S")=0:goto *saverrun;実行 if instr(para,,"/c")=0|instr(para,,"/C")=0|instr(para,,"-c")=0|instr(para,,"-C")=0{;設定 MessageBox FindWindow("#32770",0),"オプションなし\nこのスクリーン セーバーには、設定できるオプションはありません。","",64 end stop } ;goto *saverrun;デバッグ MessageBox 0,"コマンドラインの引数が無効です。\n"+dir_cmdline,"エラー",16 end stop *preview mes "プレビュー\nテスト" ;goto *main stop *saverrun ;実行 bgscr 0,ginfo(20),ginfo(21),2,0,0 SetWindowLong hwnd,GWL_EXSTYLE,GetWindowLong(hwnd,GWL_EXSTYLE)|WS_EX_TOOLWINDOW gsel 0,1 onclick *exit *main mes "スクリーンセーバーテスト" stop *exit end



この記事に返信する


ham

リンク

2019/8/15(Thu) 07:32:17|NO.88048

#define WM_MOUSEMOVE 0x200
oncmd gosub *exit,WM_MOUSEMOVE

WM_MOUSEMOVEで検知すればいい・・って思いましたが
起動した瞬間に何故か反応しちゃうのと
stopで待機させるとマウスが動いてなくても常に反応するという、ひっどい状況。(バグかな?)

なのでループで普通にマウスの座標が変わったかどうか確認が無難かなと

repeat
mx=ginfo_mx : my=ginfo_my await 32 if mx!ginfo_mx|my!ginfo_my: gosub*exit ;マウスが動いたら実行 loop



ゆうやん㋿

リンク

2019/8/15(Thu) 09:23:28|NO.88049

 

*main mes "スクリーンセーバーテスト"
の後に

stop


repeat wait 1 loop
に変えたらうまくいきました。
Windowsの仕様なんでしょうか?
Windowsのスクリーンセーバーは、HSP側で何も処理しなくても終了するみたいなんですけど なぜでしょうね・・・



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