アプリ版:「スタンプのみでお礼する」機能のリリースについて

Shell関数を使って起動した他アプリケーションを
今度はその、他アプリケーションからではなく、V
Bで作成したメイン画面の終了と同時に終了させた
いのですが方法、又は適切な文法が分かりません。

よろしくお願いします。

A 回答 (3件)

TerminateProcess()を使用すると、メモリリークが発生するのでお勧めできません。



ウィンドウを持つアプリであれば、WM_CLOSEをPostMessage()で投げてあげるのが一番安全です。
ただし、終了確認のメッセージ等が出てくるものではだめですが。
    • good
    • 0

あまり知らずに、回答してすみません。



調べてみると、これといって、正式なプログラムというのは、なかなか無いですね。

http://www.bcap.co.jp/hanafusa/VBHLP/handle.htm
こちらは、クラス名か、フォームのキャプション名で終了するサンプルですが、
特定のアプリケーションを終了するのなら、使えると思います。

これも、クラス名を先に調べておかないと、いけないようだし、
フォームのキャプション名は変化してしまうのもあるし、・・・
プログラムから、実行した任意のアプリケーションを終了するという訳にはいかなそうです。

起動した、アプリケーションのウィンドウハンドルが取得できればいいと思うのですが、
起動時に、APIのGetActiveWindowでウィンドウハンドルを取得するのは、確実な情報が、取得できるのか未確認です。

一度書いてしまったので、なんとか調べたいと思ったのですが、役に立てずすみません。
    • good
    • 0

過去ログの他プロセスの終了と同じだと思います。



Dim ProcessID As Long
Dim ProcessHandle As Long
ProcessID = Shell("calc.exe", vbNormalFocus)
ProcessHandle = OpenProcess(SYNCHRONIZE, True, ProcessID)

MsgBox "[電卓] を終了させます"

TerminateProcess ProcessHandle, 0&
CloseHandle ProcessHandle

参考URL:http://www.microsoft.com/JAPAN/support/kb/articl …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!