Узнать чем запущена программа - VB
Формулировка задачи:
Доброго всем времени суток.
Имеется программа на VB6 её запускает другая программа, как из нашей VB6 программы узнать кто её запустил?
Например тыкнули в проводнике нашу прогу, она написала "explorer.exe", вызвали её через командную строку, она выдаст "cmd.exe" ну и аналогично с другими прогами...
Заранее спасибо!
Решение задачи: «Узнать чем запущена программа»
textual
Листинг программы
Option Explicit
Private Sub Command1_Click()
Dim Obj As Object, ParentProcID$, Args$, ParentProcName$, ParentProcPath$, pos&
For Each Obj In GetObject("winmgmts:\\.\root\cimv2").ExecQuery _
("SELECT * FROM Win32_Process WHERE Caption='" & App.EXEName & ".exe'")
ParentProcID = Obj.ParentProcessID
Args = Obj.CommandLine
Next
For Each Obj In GetObject("winmgmts:\\.\root\cimv2").ExecQuery _
("SELECT * FROM Win32_Process WHERE Handle='" & ParentProcID & "'")
ParentProcName = Obj.Caption
ParentProcPath = Obj.ExecutablePath
Next
'CommandLineArgs Parse
pos = InStr(Args, """")
If pos Then
Args = Mid(Args, InStr(pos + 1, Args, """") + 2)
Else
Args = Mid(Args, InStr(Args, " ") + 2)
End If
MsgBox "Текущий процесс: " & vbLf & _
"имя: " & App.EXEName & ".exe" & vbLf & _
"аргументы: " & Args & String(2, vbLf) & _
"Родительский процесс" & vbLf & _
"имя: " & ParentProcName & vbLf & _
"PID: " & ParentProcID & vbLf & _
"путь запуска: " & ParentProcPath
End Sub