Как узнать родителя процесса

Как узнать родителя процесса:

Imports System.ComponentModel

Imports System.Runtime.InteropServices
    <DllImport("ntdll.dll", EntryPoint:="NtQueryInformationProcess")> _
    Public Function NtQueryInformationProcess(ByVal handle As IntPtr, _
                                              ByVal processinformationclass As UInteger, _
                                              ByRef ProcessInformation As Process_Basic_Information, _
                                              ByVal ProcessInformationLength As Integer, _
                                              ByRef ReturnLength As UInteger) As Integer
    End Function

    Public Structure Process_Basic_Information
        Public ExitStatus As IntPtr
        Public PepBaseAddress As IntPtr
        Public AffinityMask As IntPtr
        Public BasePriority As IntPtr
        Public UniqueProcessID As IntPtr
        Public InheritedFromUniqueProcessId As IntPtr
    End Structure

   'Получение родителя процесса
    Public Function ParentID(ByRef Proc As Process) As IntPtr
        Dim PBI = New Process_Basic_Information()
        Dim writed As Integer

        Try
            If NtQueryInformationProcess(Proc.Handle, 0, PBI, Marshal.SizeOf(PBI), writed) <> 0 Then
                Throw New Win32Exception(Marshal.GetLastWin32Error())
            End If
#If DEBUG Then
            MsgBox("Process Name: " & Proc.ProcessName & vbCrLf & _
                   "Parent ID: " & Convert.ToString(PBI.InheritedFromUniqueProcessId), _
                   MsgBoxStyle.OkOnly)
#End If
            Return PBI.InheritedFromUniqueProcessId
        Catch ex As Exception
#If DEBUG Then
            MsgBox("Error:" & vbCrLf & ex.Message, MsgBoxStyle.OkOnly, ex.Source)
#End If
            Return 0
        End Try
    End Function

    Public Function ParentID(ByVal ProcID As IntPtr) As IntPtr
        Dim PBI = New Process_Basic_Information()
        Dim writed As Integer
        Dim Proc As Process

        Try
            Proc = Process.GetProcessById(ProcID)
            Try
                If NtQueryInformationProcess(Proc.Handle, 0, PBI, Marshal.SizeOf(PBI), writed) <> 0 Then
                    Throw New Win32Exception(Marshal.GetLastWin32Error())
                End If
#If DEBUG Then
                MsgBox("Process Name: " & Proc.ProcessName & vbCrLf & _
                       "Parent ID: " & Convert.ToString(PBI.InheritedFromUniqueProcessId), _
                       MsgBoxStyle.OkOnly)
#End If
                Return PBI.InheritedFromUniqueProcessId
            Catch ex As Exception
#If DEBUG Then
                MsgBox("Error:" & vbCrLf & ex.Message, MsgBoxStyle.OkOnly, ex.Source)
#End If
                Return 0
            End Try
        Catch ex As Exception
#If DEBUG Then
            MsgBox("Error:" & vbCrLf & ex.Message, MsgBoxStyle.OkOnly, ex.Source)
#End If
            Return 0
        End Try
    End Function

Проверим наличие интернет соединения

Проверим наличие интернет соединения на VBA с помощью функции из библиотеки wininet.dll:

Private Declare Function InternetGetConnectedState _  
Lib "wininet.dll" (ByRef lpSFlags As Long, _  
ByVal dwReserved As Long) As Long  
  
Public Function InternetConnected() As Boolean  
  
  'Если у вас есть соединение, то функция вернет True, иначе - False  
  InternetConnected = InternetGetConnectedState(0&, 0&)  
  
End Function

Список надстроек в библиотеке и памяти

Просмотреть список надстроек, хранящихся в папке библиотеки (LIBRARY) и в памяти:

Sub AddIns_List()  
Dim iFor%, iRow%, WS As Worksheet  
  
  iRow = 1  
  Set WS = ThisWorkbook.Worksheets("AddIns")  
  
'Видит только папку LIBRARY  
  If Application.AddIns.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (AddIns):"  
  For iFor = 1 To Application.AddIns.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.AddIns.Item(iFor).FullName  
  Next iFor  
  End If  
  
' - Только для офиса 2010 и 2013  
#If VBA7 Then  
  If iRow > 1 Then iRow = iRow + 1  
'Видит только папку LIBRARY и то, что сейчас есть в памяти  
  If Application.AddIns2.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (AddIns2):"  
  For iFor = 1 To Application.AddIns2.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.AddIns2.Item(iFor).FullName  
  Next iFor  
  End If  
  
  If iRow > 1 Then iRow = iRow + 1  
'Description, Guid, ProgId - String; Connect - Boolean  
  If Application.COMAddIns.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (COMAddIns):"  
  For iFor = 1 To Application.COMAddIns.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.COMAddIns.Item(iFor).Description  
  Next iFor  
  End If  
#End If  
  
If Not WS Is Nothing Then Set WS = Nothing  
End Sub

Microsoft Visual Studio — линейка продуктов компании Майкрософт

Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Microsoft Silverlight.
Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

ms_vs