Запрет запуска приложений после текущего (перевести с VB 6.0) - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Прошу помощи в переводе кода с vb6. Или может предложить более простой вариант запрета запуска приложений после текущего.

Решение задачи: «Запрет запуска приложений после текущего (перевести с VB 6.0)»

textual
Листинг программы
Imports System.Runtime.InteropServices
 
Public Class Form1
 
    Public Structure PROCESSENTRY32
        Public dwSize As UInt32
        Public cntUsage As UInt32
        Public th32ProcessID As UInt32
        Public th32DefaultHeapID As IntPtr
        Public th32ModuleID As UInt32
        Public cntThreads As UInt32
        Public th32ParentProcessID As UInt32
        Public pcPriClassBase As UInt32
        Public dwFlags As Int32
        <VBFixedString(260), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
        Public szExeFile As String
    End Structure
 
    Public Enum SnapshotFlags As Integer
        HeapList = &H1
        Process = &H2
        Thread = &H4
        [Module] = &H8
        Module32 = &H10
        Inherit = &H80000000
        All = &HF
        NoHeaps = &H40000000
    End Enum
 
    Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
        (ByVal dwFlags As SnapshotFlags, ByVal th32ProcessID As UInteger) As IntPtr
    Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As IntPtr, _
                                                ByRef lppe As PROCESSENTRY32) As Boolean
    Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As IntPtr, _
                                                ByRef lppe As PROCESSENTRY32) As Boolean
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hHandle As IntPtr) As Boolean
 
    Dim LastProc As String, mas_id(200) As Int64
    Dim k, n
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim proc As New PROCESSENTRY32(), snap
        If CheckBox1.Checked Then
 
            snap = CreateToolhelp32Snapshot(15, 0)
            proc.dwSize = Marshal.SizeOf(proc)
            k = Process32First(snap, proc)
            Dim flag As Boolean
            Do While k
                flag = True
                If proc.th32ProcessID > 99 Then
                    For i = 0 To n
                        If proc.th32ProcessID = mas_id(i) Then flag = False
                    Next
                    If flag Then
                        Process.GetProcessById(proc.th32ProcessID).Kill()
                        'ListBox1.Items.Add("убит " & proc.th32ProcessID & " " & Process.GetProcessById(proc.th32ProcessID).ProcessName)
                    End If
                End If
                k = Process32Next(snap, proc)
            Loop
            CloseHandle(snap)
        Else
            Timer1.Stop()
        End If
    End Sub
 
    Private Sub CheckBox1_Click(sender As Object, e As EventArgs) Handles CheckBox1.Click
        Dim proc As New PROCESSENTRY32(), snap
        If CheckBox1.Checked Then
            snap = CreateToolhelp32Snapshot(15, 0)
            proc.dwSize = Marshal.SizeOf(proc)
            k = Process32First(snap, proc)
            Dim i = 0
            Do While k
                LastProc = proc.szExeFile
                k = Process32Next(snap, proc)
                'ListBox1.Items.Add(LastProc)
                mas_id(i) = proc.th32ProcessID
                i += 1
            Loop
            n = i - 1
            CloseHandle(snap)
            Me.Text = LastProc
            Timer1.Interval = 10
            Timer1.Start()
        Else
            Timer1.Stop()
        End If
    End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы