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

また、質問ですがよろしくお願いします。
いま、コマンドボタン1でテキストエディターを開くような物をつくっています。
そこでコマンドボタン2をおしたらテキストエディターを(保存しないで)終了したいのですが、サンプルコードを教えて貰えないでしょうか。

補足ですがテキストエディターが開いても保存フォルダを指定し保存するVBwindowが最前面処理で動いてます。windowをactiveにしてsendkeyで終わらすことはできないですよね?

よろしくお願いします。

環境VB6

A 回答 (3件)

>とりあえず、調べなおすと簡単にできました(汗)



しっかり調べられたようですね^^
(いつも)反感を買うのではと、ちょっとヒヤヒヤしながら発言をしております。

個人的に厳しい発言をするときは、何らかの意味を持って行うようにしているつもりです。


そして、たぶん
「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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/02 00:50

今見たら、、、


>VBA.GetObject("winmgmts:").ExecQuery(strSQL)
となっていた部分ですが、ExcelVBAで書いていたので、気づきませんでした。

そのままVBで走ればよいのですが、訂正をしておきます。
>VBA.GetObject("winmgmts:").ExecQuery(strSQL)
⇒GetObject("winmgmts:").ExecQuery(strSQL)
    • good
    • 0

あなたの質問のタイトル



>他のアプリの終了

で、ここの掲示板のVBカテゴリで履歴を検索したら、21件ヒットしました。
全てが全て、あなたの望む回答ではないとは思いますが、それらを参考にしてください。

目的に沿わない内容でも、目を通すだけで、予備知識を得るというスキルアップになりますよ。

参考にしたものの中で、わからない部分があったら
・参考にしたURL
・参考URLのどの部分がわからないか
を示すと、この書き込みを見ている人も、アドバイスがしやすいと思います。

またそのURLに、質問者さん独自の拡張機能が必要である場合も、その旨を示すとよいと思います。
    • good
    • 0
この回答へのお礼

すみません、少し甘えてました。
検索し、過去ログはみたのですがうまくいかなかったので楽しようと思ってしまいました。(反省)
とりあえず、調べなおすと簡単にできました(汗)

Dim hProcess As Long
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, True, retval)
'retvalはプロセスID
Call TerminateProcess(hProcess, 0&)
Call CloseHandle(hProcess)
モジュール省略

とりあえず、動いたのですがもし問題ある書き方ならご意見おねがいします。

お礼日時:2005/12/01 21:27

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