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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0206
ケンタローアプリケーションの終了3解決


ケンタロー

リンク

2013/2/6(Wed) 15:12:25|NO.52205

exec"filename"
で起動したアプリケーションをhspから終了する方法を教えて下さい。



この記事に返信する


ぽんちゃま

リンク

2013/2/6(Wed) 16:04:36|NO.52206

自分が書いたソースではありませんが、APIを使えばいけるみたいです。

ぐぐったら出てきました。



; API の宣言 #uselib "kernel32.dll" #cfunc OpenProcess "OpenProcess" int, int, int #func CloseHandle "CloseHandle" int #cfunc TerminateProcess "TerminateProcess" int, int #uselib "psapi.dll" #func EnumProcesses "EnumProcesses" var, int, var #cfunc EnumProcessModules "EnumProcessModules" int, var, int, var #func GetModuleFileNameEx "GetModuleFileNameExA" int, int, var, int #func GetModuleBaseName "GetModuleBaseNameA" int, int, var, int ; 変数の宣言 dim proc, 1000000 dim ret button"プロセス終了",*tobu stop *tobu ; 起動中のプロセスリスト取得 EnumProcesses proc, length(proc), ret ; プロセスリストから指定のプロセスを取得 repeat ret / 4 ; プロセスハンドルを取得 hProc = OpenProcess(0x400 | 0x0010 | 0x0001, 0, proc(cnt)) ; プロセスハンドルが取得できたら if hProc { if(EnumProcessModules(hProc, list, 4, ret)) { sdim file, 256 sdim file_name, 256 ; モジュール名とモジュールのプルパス取得 GetModuleFileNameEx hProc, list, file, 256 GetModuleBaseName hProc, list, file_name, 256 ; 終了させたいモジュール名だったら(小文字限定) if(getpath(file, 8) = "filename.exe") { ←ここに終了したいプロセス名をいれる。 ; 強制終了させる if(TerminateProcess(hProc, 0) = 0) { dialog "終了できませんでした" } } } ; プロセスハンドルを閉じる CloseHandle hProc } loop stop



ぽんちゃま

リンク

2013/2/6(Wed) 16:08:58|NO.52207

if(getpath(file, 8) = "filename.exe") { ←ここに終了したいプロセス名をいれる。


←ここに終了したいプロセス名をいれる。

上の文章のままだと起動エラーにかかると思うのでその文章を消すか文章の手前に;これつけていただいたら動作すると思います。



ケンタロー

リンク

2013/2/7(Thu) 12:52:06|NO.52223

ぼんちゃまさんのを参考に調べていたら
ウインドウハンドルを取得してWM_CLOSEを送るという
方法を見つけました。
これで行こうと思います。

ありがとうございました。



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