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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1219
moz非アクティブ時に終了させたい3解決


moz

リンク

2014/12/19(Fri) 12:18:50|NO.66499

はじめまして、お世話になります。

今実行しているウィンドウの外をクリックし非アクティブになったと同時に
実行していたプログラムを終了させたいのですがうまくいきません。


#define WM_ACTIVATE 6

oncmd gosub *activate,WM_ACTIVATE
stop

*activate
if wparam==0:end
return


これで実行すると、ウィンドウ外をクリックしても終了せず
終了させたいウィンドウにマウスオーバーをした時に終了します。
非常に初歩的な質問だとは思いますが、どなたかお教えいただけないでしょうか?
よろしくお願いいたします。



この記事に返信する


ocome

リンク

2014/12/19(Fri) 14:31:58|NO.66501

標準命令の中に
ginfo という関数があります。調べると出るよ。

それを使うとウィンドウの情報が返されます。

仮に now_window = ginfo(2) とすると
非アクティブ時にその関数を通ると now_window のなかに-1が返されますので
その時にendとか入れれば終わらせれると思います。

それ以外を使った方法は自分は試したことが無いので黙ります。


あと、onclickとかでやったことがありますが
HSPの画面をクリックした場合にしか飛んでくれない
(HSP以外の画面をクリックした場合は飛んでくれない)みたいなのがありますので、
そこも気を付けてみてはいかがですか。

・・・なんか、日本語が変ですね・・・自分。



m

リンク

2014/12/19(Fri) 17:06:54|NO.66502

WM_NCACTIVATEでどうでしょうか?

#define WM_NCACTIVATE $00000086 oncmd gosub *ncactivate,WM_NCACTIVATE stop *ncactivate if (wparam == 0) : end return



moz

リンク

2014/12/20(Sat) 06:23:30|NO.66520

ocome様、m様 返信有難うございました。
お二方が教えてくださった方法を試したのですが、やはりマウスオーバーをするまで
ウィンドウが画面にのこったまま終了しない状態になりました。

ですが、自己解決することができましたのでここに書き記しておきます。


#uselib "user32.dll" #func global PostMessage "PostMessageA" int,int,int,int #define WM_ACTIVATE 6 #define WM_CLOSE 0x0010 oncmd gosub *activate,WM_ACTIVATE stop *activate if (wparam==0):PostMessage hwnd, WM_CLOSE, 0, 0 return

Postmessageを使って自分のハンドルを指定し
WM_CLOSEを送れば非アクティブになった途端にウィンドウが消え
プロセス一覧を確認してもhsp3.exeが消えることが確認できました。

本当にささいな事でお恥ずかしいのですが
返信してくださったお二方に重ねて感謝致します。ありがとうございました。
失礼致します。



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