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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0423
プロセスの強制終了について6未解決


リンク

2017/4/23(Sun) 18:53:40|NO.79251

 こんにちは、お世話になります。

 すみません。もう1つ質問させてください。
 話題が変わるので、別スレッドにしましたが、引き続きプロセス関連の質問です。

 プロセスの強制終了をさせたいと思い、下記サイトの「質問者が選んだベストアンサー」に書いてあるサンプルを参考にしました。

https://okwave.jp/qa/q4237327.html

 そして、実際にメモ帳を起動して試してみたんですが、終了されないようです。
 そこで、dialog命令でfile変数内を確認してみたんですが、確かに、「c:\windows\system32\notepad.exe」は取得できてないんですよね。
 この原因が何なのか、そして、もし解決法があれば教えていただきたいと思い、投稿しました。
 よろしくお願いいたします。



この記事に返信する


inovia

リンク

2017/4/23(Sun) 19:52:36|NO.79254

陸さんのPCが64bitOSであるならば、上記で挙げられているスクリプトは失敗します。
さっきのレスでも書きましたが、32bit プロセスは 64bit プロセスを見つけられません。
http://hsp.tv/play/pforum.php?mode=all&num=79231
HSPの標準ランタイムは32bit版であり、64bitOS上のメモ帳は64bit版になります。

taskkillコマンドをexecとかpipeexecとかで投げたほうが楽かもしれないです。
http://pf-j.sakura.ne.jp/program/dos/doscmd/taskkill.htm


exec "taskkill /F /IM notepad.exe"



plugin

リンク

2017/4/23(Sun) 20:45:45|NO.79257

プロセスを強制終了するモジュールを作りました。


#module __ForcedTermination__ // ForcedTermination str p1 // p1 で指定したファイルを強制的に終了します #deffunc ForcedTermination str name exec dir_sys + "\\taskkill.exe /F /T /IM "+name, 2 return #global         //サンプル //メモ帳を起動して下さい //メモ帳を終了します ForcedTermination "notepad.exe"



リンク

2017/4/23(Sun) 20:53:26|NO.79258

 こんにちは、お世話になります。

 ありがとうございます。
 なんだかすごい勘違いをしていたらしく、お恥ずかしい限りです。

 それで、仮にtaskkillを実行させるのはいいんですが、古いOSには、そのファイルが存在しないという記述を過去ログで見たもので、ちょっと躊躇しています。
 ☆ すみません、URLをうまいこと見つけられなかったので、腫れませんでした。

 まぁでも、とりあえず、今のところはこの方法しかなさそうなので、taskkillを実行させたいと思います。

 それでは。



リンク

2017/4/23(Sun) 21:02:19|NO.79259

 こんにちは、連投すみません。

 さっきもう1回調べなおしたら見つけました。

http://hsp.tv/play/pforum.php?mode=pastwch&num=23465

 にしても、なんでさっき見つからなかったんだろう…。
 そして、投稿を書いてる間に、もう1件レスがついて多っぽい…。
 ありがとうございます。

 それでは。



MillkeySoftw

リンク

2017/4/24(Mon) 23:32:17|NO.79282

プロセスID からプロセス名を取得するサンプル
プロセスID のプロセス名で特定する用にしか使えないと思うけど。

#module PIDTONAME #uselib "kernel32.dll" #cfunc OpenProcess "OpenProcess" int,int,int #func CloseHandle "CloseHandle" int #uselib "psapi.dll" #func GetModuleFileNameEx "GetModuleFileNameExA" int,int,var,int #define SYNCHRONIZE 0x00100000 #define STANDARD_RIGHTS_REQUIRED 0x000F0000 #define PROCESS_ALL_ACCESS (SYNCHRONIZE | STANDARD_RIGHTS_REQUIRED | 0xFFFF) #deffunc GetProcessName int ProcessID,var OutProcessName,int OutMemoryLength hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID) if hProcess != 0{ GetModuleFileNameEx hProcess,0,OutProcessName,OutMemoryLength CloseHandle hProcess } return #global sdim ProcessName,260 ProcessID = 9896 //←取得したいプロセスID に変えてね //GetProcessName プロセスID,取得した文字を入れる変数,変数の最大サイズ GetProcessName ProcessID,ProcessName,260 mes ""+ProcessName



リンク

2017/4/25(Tue) 17:43:05|NO.79295

 こんにちは、お世話になります。

 友人に調べてもらったんですが、XPのHomeエディションには、taskkill.exeがないみたいですね。
 さて、どうしたらいいですかね。
 という愚痴でした、擦れ汚し失礼しました。



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