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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0307
begriffアクティブになるのを止られないか…5解決


begriff

リンク

2008/3/7(Fri) 00:50:20|NO.13998

以下のスクリプトでアクティブになるのを止め方を模索しているのですが正直さっぱりです。なにか良い技があったら解決のヒントをお願い致します。

#uselib "user32.dll" #func SetParent "SetParent" int,int #define WM_ACTIVATE $6 oncmd gosub *l,WM_ACTIVATE SetParent hwnd,0 stop *l mes "アクティブになろうとしているよ!" mes strf("%08X",wparam)+"←┘" return



この記事に返信する


As

リンク

2008/3/7(Fri) 01:04:16|NO.13999

アクティブになっても、また前のウィンドウにフォーカスを移すか、
もしくは親ウィンドウの変更を目的のウィンドウを非表示状態で作成したところで変更すれば
いいと思います。



begriff

リンク

2008/3/7(Fri) 01:19:51|NO.14001

ありがとうございます。
考え方的には アクティブになるのをブロックする 又は 一瞬たりともアクティブにさせない なので
後者の方でやらせてもらいます
こんな感じですか?(できてませんが)

#uselib "user32.dll" #func SetParent "SetParent" int,int #func ShowWindow "ShowWindow" int,int #define WM_ACTIVATE $6 gsel 0,-1 hwnd_=hwnd screen 3,,,2 oncmd gosub *l,WM_ACTIVATE SetParent hwnd,hwnd_ ShowWindow hwnd,8 wait gsel 0,1 stop *l if wparam=1{ mes "マウスクリック以外の方法でアクティブになろうとしているよ!" mes strf("%08X",wparam)+"←┘" } return



pizza

リンク

2008/3/7(Fri) 21:29:55|NO.14013

SetParentの前にWS_CHILDをつけておくのはダメですか?



begriff

リンク

2008/3/7(Fri) 22:12:40|NO.14016

おぉ!できました。ありがとうございます。

#uselib "user32.dll" #func SetParent "SetParent" int,int #func ShowWindow "ShowWindow" int,int #module #func SetWindowLong "SetWindowLongA" int,int,int #cfunc GetWindowLong "GetWindowLongA" int, int #deffunc AddWindowLong int hwnd_,int mode,int add,int sub SetWindowLong hwnd_,mode,add|(GetWindowLong (hwnd_, mode)^( GetWindowLong (hwnd_, mode)&sub)) return #global #define WS_POPUP $80000000 #define WS_CHILD $40000000 #define WM_ACTIVATE $6 gsel 0,1 hwnd_=hwnd screen 3,,,2 oncmd gosub *l,WM_ACTIVATE AddWindowLong hwnd,-16,WS_CHILD,WS_POPUP SetParent hwnd,hwnd_ ShowWindow hwnd,8 wait gsel 0,1 stop *l if wparam=1{ mes "マウスクリック以外の方法でアクティブになろうとしているよ!" mes strf("%08X",wparam)+"←┘" } return
ご指摘の通りでした。
As様 pizza様ありがとうございました。今後ともよろしくお願いいたします。



begriff

リンク

2008/3/8(Sat) 20:15:24|NO.14029

チェック忘れ



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