'API声明:Private Type PROCESSENTRY32
dwSizeAs Long
cntUsageAs Long
th32ProcessIDAs Long
th32DefaultHeapIDAs Long
th32ModuleIDAs Long
cntThreadsAs Long
th32ParentProcessIDAs Long
pcPriClassBaseAs Long
dwFlagsAs Long
szExeFileAs String * 1024End TypeConst TH32CS_SNAPHEAPLIST = &H1Const TH32CS_SNAPPROCESS = &H2Const TH32CS_SNAPTHREAD = &H4Const TH32CS_SNAPMODULE = &H8Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)Const TH32CS_INHERIT = &H80000000Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As LongPrivate Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As LongPrivate Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long'运行exe的子程序Private Sub runexe(ByVal exename as String)Call Shell("rundll32.exe url.dll,FileProtocolHandler " & exename, vbMaximizedFocus)End Sub'结束进程的子程序Private Sub Terminate(ByVal procname As String)Dim strdata As StringDim my As PROCESSENTRY32Dim l As LongDim l1 As LongDim mName As StringDim i As Integer, pid As Longl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)If l Then
my.dwSize = 1060
If (Process32First(l, my)) Then
Do
i = InStr(1, my.szExeFile, Chr(0))
mName = LCase(Left(my.szExeFile, i - 1))
If mName = LCase(procname) Then
pid = my.th32ProcessID
Dim procID as Long
procID=OpenProcess(1,-1,pid)
TerminateProcess procID,0
exit sub
End If
Loop Until (Process32Next(l, my) < 1)
End If
l1 = CloseHandle(l)End Iffun_FindProcess = 0'窗体代码private sub cmd_start_Click()'点击了打开游戏按钮'假设游戏的.exe文件的绝对路径为Path(例如"C:\1.exe").runexe pathEnd subPrivate sub Form_Unload()'窗体卸载时关闭游戏Terminate XXX 'XXX为游戏进程的名字End sub |