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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0811
mizunaraCreateProcessで起動したプロセスを終了させたい5解決


mizunara

リンク

2011/8/11(Thu) 00:58:03|NO.40509

題名どおり、CreateProcessで起動したプロセスを終了させたいです。

TerminateProcessを使うのは好ましくないらしいので、
http://akky.cjb.net/mfc/appclose.html
↑のページに書いてあるようにやってみようとしたところ、
HSPはコールバック関数に対応していないらしく、
hscallbk.dllを使わなくてはいけなくなってしまいました。

dllファイルを付属させるのが嫌なので
他の方法を探りましたが見つかりません。

TerminateProcessを使わない、hscallbk.dllも使わない、
というのは無理なのでしょうか。



この記事に返信する


info

リンク

2011/8/11(Thu) 01:51:03|NO.40510

試してないですが、下のコードで大丈夫なはずです。
TerminateProcess とは違い、自分で作成したプロセスしか終了できないです。


#include "kernel32.as" dim exitcode GetExitCodeProcess hProcess , varptr(exitcode) ExitProcess exitcode



mizunara

リンク

2011/8/11(Thu) 18:15:37|NO.40518

出来ませんでした。
自分の作成しているコードの方がおかしいのかと思って、
「ちょくとのページ」さんの「Advanced HSP」の
「サンプルスクリプト main2.as」の
「#func WaitForSingleObject …」の下の行(4行目)に
#func GetExitCodeProcess  "GetExitCodeProcess"    sptr,sptr
#func ExitProcess "ExitProcess" sptr
を入れ、「if stat == 6 {」と「goto *lb_quit」の間(54行目)に
dim exitcode
GetExitCodeProcess hProcess , varptr(exitcode) ExitProcess exitcode
を入れて、終了時に同時にメモ帳も終了するようにしようとしましたが、
これも出来ませんでした。

使い方が間違っているのでしょうか



mizunara

リンク

2011/8/15(Mon) 18:07:27|NO.40602

色々と調べて↓のページを見つけたのですが、

http://www.activebasic.com/help_center/Pages/API/SystemService/ProcessAndThread/ExitProcess.htm

「呼び出し側のプロセスを終了させるものであり、
他のプロセスを終了させることはできません。」

と書かれていました。
自分で呼び出した他のプロセスを終了させたいとき、
(NO.40518でいうメモ帳を終了させたいとき)
ExitProcessは使えないということでしょうか。



Cookies

リンク

2011/8/15(Mon) 18:18:00|NO.40603

>ExitProcessは使えないということでしょうか。
という質問は全く無視ですが。

EnumWindowsのかわりにFindWindowExじゃだめですか?
すべて引数をNullにして、次々とウィンドウをリストアップしていって、
EnumWindowsProcと同じことをしてみてはどうですか?
面倒ですけど。



mizunara

リンク

2011/8/16(Tue) 15:49:06|NO.40623

FindWindowExで出来ました^^
ありがとうございます。



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