• ベストアンサー

他のアプリの終了

また、質問ですがよろしくお願いします。 いま、コマンドボタン1でテキストエディターを開くような物をつくっています。 そこでコマンドボタン2をおしたらテキストエディターを(保存しないで)終了したいのですが、サンプルコードを教えて貰えないでしょうか。 補足ですがテキストエディターが開いても保存フォルダを指定し保存するVBwindowが最前面処理で動いてます。windowをactiveにしてsendkeyで終わらすことはできないですよね? よろしくお願いします。 環境VB6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>とりあえず、調べなおすと簡単にできました(汗) しっかり調べられたようですね^^ (いつも)反感を買うのではと、ちょっとヒヤヒヤしながら発言をしております。 個人的に厳しい発言をするときは、何らかの意味を持って行うようにしているつもりです。 そして、たぶん 「TerminateProcess」 を見つけて、APIの利用方法で再質問してくるかな? と思っておりました。 しかし、APIをしっかり使いこなしていらっしゃるようですね^^ そこで、余談です。 TerminateProcess = Terminate + Process OpenProcess = Open + Process [プロセス+どうする] という組み合わせから生まれている命令です。 そこで「Terminate」という言葉で、VBカテ内をもう一度検索をかけてみると [EXEファイルのタイトル取得] http://okwave.jp/kotaeru.php3?q=558701 がヒットします。 #5さんの発言に、それらしき物があることと、APIを利用していないということに気づくと思います。 スクリプトで、EXEのパスからオブジェクトを探し、強制終了するやり方をしております。 それをちょっとだけ改造し、Shell関数で起動したプロセスのシャットダウンをする方法を張っておきますね^^ Sub Test()   Dim lngPID As Long   lngPID = Shell("calc")      MsgBox "OKを押すと終了させます", vbSystemModal      Call MyTerminate(lngPID)    End Sub Private Sub MyTerminate(ByVal p_lngPID As Long)   Dim strSQL As String   Dim objProc As Object   Dim lngSts As Long   Dim strWk  As String      strSQL = "SELECT * FROM Win32_Process where handle = " & p_lngPID   For Each objProc In VBA.GetObject("winmgmts:").ExecQuery(strSQL)     lngSts = objProc.Terminate        Select Case lngSts       Case 0     '正常終了         Exit For       Case 2:   strWk = "アクセスが拒否されました"       Case 3:   strWk = "権限が不足しています"       Case 8:   strWk = "不明なエラーです"       Case 9:   strWk = "パスが見つかりません"       Case 21:  strWk = "パラメータが不正です"       Case Else: strWk = "予期せぬエラー:" & lngSts     End Select          MsgBox strWk   Next objProc End Sub

hike106
質問者

お礼

1050YENさん、今回はありがとうございました。 上記のコードも参考にしたいと思います。 また何か分からないことがあると質問すると思いますが、よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

今見たら、、、 >VBA.GetObject("winmgmts:").ExecQuery(strSQL) となっていた部分ですが、ExcelVBAで書いていたので、気づきませんでした。 そのままVBで走ればよいのですが、訂正をしておきます。 >VBA.GetObject("winmgmts:").ExecQuery(strSQL) ⇒GetObject("winmgmts:").ExecQuery(strSQL)

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

あなたの質問のタイトル >他のアプリの終了 で、ここの掲示板のVBカテゴリで履歴を検索したら、21件ヒットしました。 全てが全て、あなたの望む回答ではないとは思いますが、それらを参考にしてください。 目的に沿わない内容でも、目を通すだけで、予備知識を得るというスキルアップになりますよ。 参考にしたものの中で、わからない部分があったら ・参考にしたURL ・参考URLのどの部分がわからないか を示すと、この書き込みを見ている人も、アドバイスがしやすいと思います。 またそのURLに、質問者さん独自の拡張機能が必要である場合も、その旨を示すとよいと思います。

hike106
質問者

お礼

すみません、少し甘えてました。 検索し、過去ログはみたのですがうまくいかなかったので楽しようと思ってしまいました。(反省) とりあえず、調べなおすと簡単にできました(汗) Dim hProcess As Long hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, True, retval) 'retvalはプロセスID Call TerminateProcess(hProcess, 0&) Call CloseHandle(hProcess) モジュール省略 とりあえず、動いたのですがもし問題ある書き方ならご意見おねがいします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBでテキストエディタの上書き保存

    vbで入力中のテキストエディター(市販エディタ秀丸等)の上書き保存がしたいと思ってます。 特定のフォルダ内にあるテキストファイルを開いている途中に、コマンドボタンをおすと上書き保存するようにしたいのですが可能でしょうか? よろしくお願いします

  • VB標準のエディタの色分けを他のアプリでも有効にしたい

    VBやVBAのエディタは、例えば「If」や「End If」を青色に、「'」より右側を緑色に自動的に変換してくれますよね。 これを他のアプリ(実はNotes)でも実現したいのです。 具体的には、情報共有の一環として、部署内でのソースの共有を考えています。VBのエディタで作成したソースをNotes(別にNotesではなくても例えばWord等に)コピー&ペーストしても、VBのエディタで作成したソースというのはリッチテキストではない(と思う)ので色までコピーされません。 しかし、EmEditor等のテキストエディタでできているので、実現する方法はあると思います(もちろんEmEditorもリッチテキストではありませんが)。 短いソースなら、一つ一つ色を指定して変えてもいいのですが、長いソースだと色を変えるのが億劫になります。何かよい方法をご存知の方お教えください。 よろしくお願いいたします。

  • Vimチュートリアルの使い他

     Linax系のエディターを使えるように、なりたいのですが。  ダウロードして起動できた、 gVim エディターのチュートリアル、コマンドの使い方を、  おしえてください。  どこで、コマンドを入力モードに切り替えるのかわからず、 チュートリアルが使えないでいます。  また、 Xyzzy エディターは、起動時、スクラッチモードになっていますが、  いちど、サンプルコードを実行させると、もうスクラッチ状態に戻りません。  このような、モードを切り替える、コマンドを教えてください。  よろしくお願いします。

  • jQueryを使ってtextareaのリッチエディタを作りたいです。

    jQueryを使ってtextareaのリッチエディタを作りたいです。 testareaに対してリッチエディタを作りたいのですが、サンプルコードを教えてください。 基本的にはテキストエリアでボタン(例えばボールドのボタン)を押して始点と終点が同じであればウインドウが開いて文字を入れそれを始点に挿入し、始点と終点が違えば従来のリッチテキストエディタのように実行するというものです。 説明不足かとは思いますが、サンプルコードの載ったURLだけでもかまいませんので宜しくお願いいたします。

  • エクセル2003マクロ

    特定のフォルダに同じサンプルNoのファイルがA~Dまで4種類ずつあり、これらから必要なデータを抽出し、同一Noに対して一つの集計ファイルを作成するマクロを作りたいと思っています。 ユーザーフォームで1台ずつサンプルNoを入力すれば、抽出→集計まで処理できるコードはできたのですが、サンプルNoを指定せずにコマンドボタン1発でフォルダ内のサンプル全てを同様に処理できる方法が分かりません。色々なサイトを覘きましたが、妥当な例がなく困っています。 ファイル名はそれぞれ、 A-1.xls、B-1.xls、C-1.xls、D-1.xls、A-2.xls、B-2.xls・・・という規則でついていて、全て同じフォルダに保存されています。 どなたか良い知恵をお貸し下さい。

  • ファイル保存ダイアログ

    こんにちわ。VB6の質問をさせてください。 Text1.Textに入っている文字列をtxtファイルとして保存したいのですが、分からなくて困ってます。 単純にダイアログを出して保存先とファイル名の指定が出来るようにしたいと思ってます。 サンプルコードのページを見たのですが、長すぎて理解できなかったので簡単な説明やHPなどあれば紹介してくれると助かります。 よろしくお願いします。

  • フローチャート

    VB6で簡単なプログラムを作って、それをフローチャートにすることになったのですが少し質問させてください。 機能としては 1.フォルダ指定のボタンでフォルダのパスをテキスト1に表示 2.閲覧ボタンでテキスト1のフォルダの中身のファイル名をすべてリスト1に表示。 (フォルダの中身はすべて文字列のtxtファイルです) 3.連結ボタンでリスト1のファイルの中身を上から順に連結して、テキスト2に表示。 4.最後に保存ボタンでテキスト2の内容をファイルオとして保存。 これが流れなんですがフローチャートは初めてでよく分からないんですが、1からの順に書けば良いのでしょうか? あと4の場合保存をキャンセルした場合は判断の処理で4の前に戻った方がいいのでしょうか。 分かりづらいとは思いますがよろしくお願いします。

  • VB6 コマンドボタン クリックイベントについて

    教えてください。 フォームに貼り付けているコマンドボタンのクリックイベントについてですが、クリックイベント内の処理で処理に時間がかかります。コマンドボタンを1度クリックすると、この処理を実行します。この状態であれば、問題ないのです。ところが、コマンドボタンを押して、処理している間にコマンドボタンを連打すると、ずーっと同じ処理を繰り返してしまいます。 クリックイベントが待ち行列にたまっているように思えるのですが、 これを回避する方法などがあれば教えてください。 ・待ち行列をクリアするとか ・待ち行列にイベントがたまっていても、1度しか実行しない。 などなど、具体的な方法とサンプルコードなどを教えていただけないでしょうか。お願いします。 環境VB6 WIN2K です。

  • VBで内部処理のみ行って終了するプログラムを作るには?

    VB6.0でコマンドラインからの引数をテキストファイルに出力して終了させるプログラムを作りたいのですが、フォームなど特に画面に表示することなく内部で処理をしたら勝手に終了させるにはどうしたらよいのでしょうか? 初心者の間の抜けた質問で申し訳ありませんが、どなたかアドバイスをお願いします。

  • VB2008で指定したURL先のテキストデータを取込

    Visual Basic2008にて、とあるコマンド処理を実行した際、別テキストボックスに表示されている指定したURL先のHTMLのテキストデータを取り込み、別テキストボックスに表示をさせたいのですが、VB2008の参考書等が見当たらない為、自力で調査ができません。 指定したURLからテキストファイルの取り込み処理をする関数、またはコーディングサンプル等をご教授いただけますでしょうか。 よろしくお願いいたします。