
下に同様の質問をしたのですが、削除方法分からない為、再度質問させていただきまし。
VB5.0を利用しています。
VBで書いたexeを実行した際に、そのプロセスID(自分の)は、GetCurrentProcessIdを利用すれば取得できると分かりました。
が、プログラム内でExcelを下記の様にオブジェクトを作成した場合、そのプロセスIDをどうやって取得すればいいのでしょうか?
ご存知の方居ましたら、教えて下さい。
Set ExcelObj = CreateObject("Excel.Application")
ここで起動?されたExcelのプロセスIDを取得したいのですが。
No.1ベストアンサー
- 回答日時:
FindWindowなどのキャプションか、クラス名で対象オブジェクトハンドルを取得し、
GetCurrentProcessId関数で、プロセスIDとスレッドIDを取得する方法が一般的。
過去スレにいっぱいサンプルがあります。
スクリプトを使用するなら、以下の方法もあったりする。
でもどちらも複数EXCEL起動時は、考えなければいけない部分多し。
Sub Main()
Dim ExcelObj As Excel.Application
Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.Visible = True
Call DebugHandle
ExcelObj.Quit
Set ExcelObj = Nothing
End Sub
Public Function DebugHandle()
Dim strSQL As String
Dim objWk As Object
Dim objXlsProc As Object
strSQL = "SELECT Handle FROM Win32_Process WHERE Name = 'EXCEL.EXE'"
Set objWk = GetObject("winmgmts:").ExecQuery(strSQL)
For Each objXlsProc In objWk
Debug.Print objXlsProc.Handle
Next
End Function
この回答への補足
有難う御座います。
プログラムが起動したExcelのみのプロセスIDを取得するには、どのようにしたら良いのでしょうか。
ご存知でしたらご教授下さるとありがたいのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
VBAでこんなことできますか?
PowerPoint(パワーポイント)
-
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
-
4
ウィンドウのタイトルからプロセス取得
Visual Basic(VBA)
-
5
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
6
vbaから他のアプリを終了
Visual Basic(VBA)
-
7
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
8
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
9
VBで実行中のEXEファイルの情報を取得したい
Visual Basic(VBA)
-
10
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
11
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
-
12
別インスタンスのエクセルを制御したい
Excel(エクセル)
-
13
Excelのプロセスが消えません
Excel(エクセル)
-
14
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
15
CreateObjectで作成したExcelのプロセスを終了させたい。
Visual Basic(VBA)
-
16
外部プロセスを終了したい!!
Visual Basic(VBA)
-
17
ShellExecuteExでハンドルの取得
C言語・C++・C#
-
18
VBの画面サイズについて
Visual Basic(VBA)
-
19
VBSの処理中一旦処理を止めて再開させたい。
Visual Basic(VBA)
-
20
ExcelVBA:すでに開かれているブックの判定方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロセスIDの取得方法について
-
アプリケーションが終了するま...
-
vb.netでEXCEL起動がうまくでき...
-
AppActivate関数について
-
C++のプログラムをバックグラウ...
-
バックグラウンドのプロセスの...
-
IISがフリーズ
-
他のアプリケーションの起動と...
-
C言語 特定のプロセスの終了を...
-
OSPFでプロセスを分ける意義に...
-
Process.Startの戻り値を後で取得
-
別のプロセスの関数を呼び出す...
-
タスクマネージャーのプロセス...
-
Linuxのchdir(カレントディレク...
-
プロセスIDの再利用
-
windowsのプロセスIDやスレッド...
-
非表示になったエクセルは?
-
Linuxでのスレッド間メッセージ...
-
forkについて
-
Windowsのユーザログイン/ログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タスクマネージャーのプロセス...
-
バックグラウンドのプロセスの...
-
プロセスのアタッチ・デタッチ...
-
OSPFでプロセスを分ける意義に...
-
ADOでアクセスのレコードに...
-
非表示になったエクセルは?
-
Process.Startの戻り値を後で取得
-
vb.netでEXCEL起動がうまくでき...
-
C#でのbatファイル実行結果取得
-
プロセスIDの取得方法について
-
Linuxでのスレッド間メッセージ...
-
Visual C++からpingを実行して...
-
SendMessageが失敗するときがある
-
IISがフリーズ
-
スティーブ・ジョブズはプログ...
-
c言語でプロセスIDを調べたい
-
特定ユーザーのプロセス情報を...
-
怪しいプロセス教えてください。
-
セマフォとmutexの違いは?
-
Windowsでのfork方法
おすすめ情報