Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.dotnet.general,microsoft.public.dotnet.framework,microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.dotnet.general,microsoft.public.dotnet.framework,microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#3
![]()
Posted to microsoft.public.dotnet.general,microsoft.public.dotnet.framework,microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#4
![]()
Posted to microsoft.public.dotnet.general,microsoft.public.dotnet.framework,microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. |
#6
![]()
Posted to microsoft.public.dotnet.general,microsoft.public.dotnet.framework,microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How to obtain my goal? | Excel Discussion (Misc queries) | |||
Need to obtain Col Letter - VBA | Excel Discussion (Misc queries) | |||
How To Obtain The Top 10% | Excel Discussion (Misc queries) | |||
how to obtain sheet name? | Excel Discussion (Misc queries) | |||
Need to know how to obtain this...please | Excel Programming |