プロが教える店舗&オフィスのセキュリティ対策術

下に同様の質問をしたのですが、削除方法分からない為、再度質問させていただきまし。

VB5.0を利用しています。
VBで書いたexeを実行した際に、そのプロセスID(自分の)は、GetCurrentProcessIdを利用すれば取得できると分かりました。
が、プログラム内でExcelを下記の様にオブジェクトを作成した場合、そのプロセスIDをどうやって取得すればいいのでしょうか?
ご存知の方居ましたら、教えて下さい。

Set ExcelObj = CreateObject("Excel.Application")
ここで起動?されたExcelのプロセスIDを取得したいのですが。

A 回答 (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を取得するには、どのようにしたら良いのでしょうか。
ご存知でしたらご教授下さるとありがたいのですが。

補足日時:2003/09/16 09:18
    • good
    • 0
この回答へのお礼

有難う御座います。
いろいろと試しながらやってみます。

お礼日時:2003/09/17 08:31

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A