- Код: Выделить всё
Модуль:
_______________________________
Option Explicit
Public Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Public Declare Function WaitForSingleObject Lib "kernel32" ( _
ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function InputIdle Lib "user32" Alias "WaitForInputIdle" ( _
ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CreateProcessA Lib "kernel32" ( _
ByVal lpApplicationName As Long, ByVal lpCommandLine As String, _
ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" ( _
ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long
Public Const NORMAL_PRIORITY_CLASS As Long = &H20&
Public Const INFINITE As Long = -1&
Public Const STATUS_WAIT_0 As Long = &H0
Public Const STATUS_ABANDONED_WAIT_0 As Long = &H80
Public Const STATUS_USER_APC As Long = &HC0
Public Const STATUS_TIMEOUT As Long = &H102
Public Const STATUS_PENDING As Long = &H103
Public Const WAIT_FAILED As Long = &HFFFFFFFF
Public Const WAIT_OBJECT_0 As Long = STATUS_WAIT_0
Public Const WAIT_TIMEOUT As Long = STATUS_TIMEOUT
Public Const WAIT_ABANDONED As Long = STATUS_ABANDONED_WAIT_0
Public Const WAIT_ABANDONED_0 As Long = STATUS_ABANDONED_WAIT_0
Public Const WAIT_IO_COMPLETION As Long = STATUS_USER_APC
Public Const STILL_ACTIVE As Long = STATUS_PENDING
Public Const PROCESS_QUERY_INFORMATION As Long = &H400
Public Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Public Function myShell(CommandLine As String, Optional Timeout As Long, _
Optional WaitForInputIdle As Boolean) As Boolean
Dim proc As PROCESS_INFORMATION
Dim Start As STARTUPINFO
Dim i As Integer
Dim ret As Long
Dim nMilliseconds As Long
nMilliseconds = INFINITE
Start.dwFlags = 4 'Если окно не надо показывать=1
'^^^^^^^^^^^^^^
'и вообще насчет вида запуска надо с ней играться
'например 6 дает окно минимального размера
CreateProcessA 0&, CommandLine, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, Start, proc
ret = WaitForSingleObject(proc.hProcess, nMilliseconds)
CloseHandle proc.hProcess
myShell = (ret = WAIT_OBJECT_0)
End Function
_____________________________________________________
на кнопке формы:
myShell("game.exe")
Надо что бы вариант из комбо бокса как в аттаче(прога) применялся в Myshell функции. Мой пример не работает:
Dim hs As String
If Cmb1.ListIndex = 0 Then
hs = "-heapsize 64000"
ElseIf Cmb1.ListIndex = 1 Then
hs = "-heapsize 128000"
ElseIf Cmb1.ListIndex = 2 Then
hs = "-heapsize 256000"
ElseIf Cmb1.ListIndex = 3 Then
hs = "-heapsize 512000"
ElseIf Cmb1.ListIndex = 4 Then
hs = "-heapsize 1024000"
Else
hs = "-heapsize 64000"
End If
myShell ("hl2.exe -steam -console +hs")