|
■No90432 (usushio さん) に返信 > アプリケーションからTeamViewerの起動と終了を行えるようなプログラムを作成しています。 自分の手元にある TeamViewer ライセンスは相当古いバージョンなので、 現行バージョンの TeamViewer における、正しい終了方法は分からないです。
> p.Kill() Kill は強制終了ですので、アプリケーションによっては、 一時ファイルのクリーンアップが行われなかったりだとか、 リソースの解放が正しい手順で行われないなどの問題を生じる可能性があります。
> マウスカーソルを重ねるとアイコンは消え、一つだけの表示に戻ります。 強制終了でお茶を濁しつつ、トレイに対してマウス通知を投げて消していく、という後ろ向きな方法とか。
■No90435 (usushio さん) に返信 > ウィンドウを終了しても、タスクアイコンにあるアイコンから終了を行わないと完全には終了しないアプリケーション 安全に終了させる方法は、『それぞれのアプリ側の実装』に依存する話なので、 あらゆるアプリに共通する手段はありません。
ですがまずは、CloseMainWindow で要件を満たせるかどうかを試してみる価値はあると思いますよ。 終了させられるかどうかは保証できないのですが、少なくとも Kill するよりは安全な方法と言えます。
> (例えば、skypeとか)も終了の手順は同様の方法で行っても問題はないのでしょうか。 Skype はストア版、デスクトップ版など新旧幾つかのバージョンがあり、終了のさせ方はそれぞれで異なります。 たとえば、メインウィンドウを × で閉じるのではなく、"Skepe の終了" メニューを選択する必要があるものなど。
Dim p = Process.Start("notepad.exe") MsgBox("メモ帳を編集した後、この MsgBoxを閉じてください", MsgBoxStyle.SystemModal) If p.HasExited Then MsgBox("既に閉じられていた", MsgBoxStyle.SystemModal) ElseIf p.CloseMainWindow() Then MsgBox("閉じられた", MsgBoxStyle.SystemModal) Else MsgBox("閉じなかった", MsgBoxStyle.SystemModal) End If
たとえば上記でメモ帳を開いて編集し、最初の MsgBox を閉じると、 編集中の内容をファイルに保存するかどうかを メモ帳がダイアログで問い合わせてきます。
ダイアログに「キャンセル」と答えた場合、メモ帳は閉じられません。 しかし CloseMainWindow ではその違いを判定できずに、VB 側では 「閉じられた」のメッセージが表示されたりします。
一方、p.CloseMainWindow を使わずに、p.Kill で終了させた場合は、 本来行われるべき、この確認ダイアログが表示されなくなります。
|