ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Obtain a Process ID (https://www.excelbanter.com/excel-programming/295929-obtain-process-id.html)

Frank DeLuccia

Obtain a Process ID
 
Hello All,

Hope eveyone is having a better morning than me today. Anyway, I know
the .NET framework has classes to obtain process ID's of processes running
in the task manager. My question is; Does .NET have anything in it's bag of
tricks to give me the process ID of an instance I create through code?

Example:

Dim objExcel as Excel.Application

objExcel = New Excel.Application <----- I want to know the process ID
right after I create this instance.

Is there anyway I can get that info? Any guidance would be greatly
appreciated.

-Thanks,
Frank



Bob Phillips[_6_]

Obtain a Process ID
 
Hi Frank,

Don't know about .NET, but this function gets a process id. Perhaps you can
build into .NET

Function ProcID() As Long
Dim hwnd As Long
Dim idProc As Long
hwnd = FindWindow(vbNullString, "Microsoft Excel")
Call GetWindowThreadProcessId(hwnd, idProc)
ProcID = idProc

End Function


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Frank DeLuccia" wrote in
message ...
Hello All,

Hope eveyone is having a better morning than me today. Anyway, I know
the .NET framework has classes to obtain process ID's of processes running
in the task manager. My question is; Does .NET have anything in it's bag

of
tricks to give me the process ID of an instance I create through code?

Example:

Dim objExcel as Excel.Application

objExcel = New Excel.Application <----- I want to know the process ID
right after I create this instance.

Is there anyway I can get that info? Any guidance would be greatly
appreciated.

-Thanks,
Frank





Frank DeLuccia

Obtain a Process ID
 
Bob,

Thanks for the hint but the Excel visible property is set to false b/c
this is an automated process without interaction, there could be multiple
instances of excel running, and I need the process ID of the instance being
created at runtime. The thought is if there is an error in that instance
running, I can kill that process using the ID while leaving the other
instances alone.

Thanks for your time,
Frank

"Bob Phillips" wrote in message
...
Hi Frank,

Don't know about .NET, but this function gets a process id. Perhaps you

can
build into .NET

Function ProcID() As Long
Dim hwnd As Long
Dim idProc As Long
hwnd = FindWindow(vbNullString, "Microsoft Excel")
Call GetWindowThreadProcessId(hwnd, idProc)
ProcID = idProc

End Function


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Frank DeLuccia" wrote in
message ...
Hello All,

Hope eveyone is having a better morning than me today. Anyway, I

know
the .NET framework has classes to obtain process ID's of processes

running
in the task manager. My question is; Does .NET have anything in it's

bag
of
tricks to give me the process ID of an instance I create through code?

Example:

Dim objExcel as Excel.Application

objExcel = New Excel.Application <----- I want to know the process ID
right after I create this instance.

Is there anyway I can get that info? Any guidance would be greatly
appreciated.

-Thanks,
Frank







Jake Marx[_3_]

Obtain a Process ID
 
Hi Frank,

I think you could still use Bob's suggestion. When you create the instance
of Excel, just check the value of the application's Hwnd property. Then
pass that value to the GetWindowThreadProcessId function to get the PID.

In your case:

Public Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, lpdwProcessId As Long) As Long

Sub Test()
Dim objExcel As Excel.Application
Dim lPID As Long

Set objExcel = New Excel.Application
GetWindowThreadProcessId objExcel.hwnd, lPID
Debug.Print "PID: " & CStr(lPID)
objExcel.Quit
Set objExcel = Nothing
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Frank DeLuccia wrote:
Bob,

Thanks for the hint but the Excel visible property is set to
false b/c this is an automated process without interaction, there
could be multiple instances of excel running, and I need the process
ID of the instance being created at runtime. The thought is if there
is an error in that instance running, I can kill that process using
the ID while leaving the other instances alone.

Thanks for your time,
Frank

"Bob Phillips" wrote in message
...
Hi Frank,

Don't know about .NET, but this function gets a process id. Perhaps
you can build into .NET

Function ProcID() As Long
Dim hwnd As Long
Dim idProc As Long
hwnd = FindWindow(vbNullString, "Microsoft Excel")
Call GetWindowThreadProcessId(hwnd, idProc)
ProcID = idProc

End Function


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Frank DeLuccia" wrote
in message ...
Hello All,

Hope eveyone is having a better morning than me today. Anyway,
I know the .NET framework has classes to obtain process ID's of
processes running in the task manager. My question is; Does .NET
have anything in it's bag of tricks to give me the process ID of an
instance I create through code?

Example:

Dim objExcel as Excel.Application

objExcel = New Excel.Application <----- I want to know the
process ID right after I create this instance.

Is there anyway I can get that info? Any guidance would be greatly
appreciated.

-Thanks,
Frank



AA2e72E[_2_]

Obtain a Process ID
 
Excel 2000 and below do not have the hwnd property so it is necessaryto find the Window handle by other means

You can't use "Microsoft Excel" with FindWindow (the caption is volatile). Instead use the Excel class, XLMAIN. This applies to ALL versions of Excel

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Lon

The class name is lpClassName, the caption is lpWindowName. Usually, just one or the other is specified.

Frank DeLuccia

Obtain a Process ID
 
Thanks, Guys, for all your help!!!

"Jake Marx" wrote in message
...
Hi Frank,

I think you could still use Bob's suggestion. When you create the

instance
of Excel, just check the value of the application's Hwnd property. Then
pass that value to the GetWindowThreadProcessId function to get the PID.

In your case:

Public Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, lpdwProcessId As Long) As Long

Sub Test()
Dim objExcel As Excel.Application
Dim lPID As Long

Set objExcel = New Excel.Application
GetWindowThreadProcessId objExcel.hwnd, lPID
Debug.Print "PID: " & CStr(lPID)
objExcel.Quit
Set objExcel = Nothing
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Frank DeLuccia wrote:
Bob,

Thanks for the hint but the Excel visible property is set to
false b/c this is an automated process without interaction, there
could be multiple instances of excel running, and I need the process
ID of the instance being created at runtime. The thought is if there
is an error in that instance running, I can kill that process using
the ID while leaving the other instances alone.

Thanks for your time,
Frank

"Bob Phillips" wrote in message
...
Hi Frank,

Don't know about .NET, but this function gets a process id. Perhaps
you can build into .NET

Function ProcID() As Long
Dim hwnd As Long
Dim idProc As Long
hwnd = FindWindow(vbNullString, "Microsoft Excel")
Call GetWindowThreadProcessId(hwnd, idProc)
ProcID = idProc

End Function


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Frank DeLuccia" wrote
in message ...
Hello All,

Hope eveyone is having a better morning than me today. Anyway,
I know the .NET framework has classes to obtain process ID's of
processes running in the task manager. My question is; Does .NET
have anything in it's bag of tricks to give me the process ID of an
instance I create through code?

Example:

Dim objExcel as Excel.Application

objExcel = New Excel.Application <----- I want to know the
process ID right after I create this instance.

Is there anyway I can get that info? Any guidance would be greatly
appreciated.

-Thanks,
Frank






All times are GMT +1. The time now is 09:21 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com