二级VBCreateProcess模块
来源:优易学  2011-10-10 9:49:48   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  retval = CreateProcess(vbNullString, CommandLine & vbNullChar, sa, sa, 1&, NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString, si, pi)
  WaitForSingleObject pi.hProcess, INFINITE
  Do While ReadFile(hRead, sBuffer(0), 64, lgSize, ByVal 0&)
  strResult = strResult & StrConv(sBuffer(), vbUnicode)
  Erase sBuffer()
  If lgSize <> 64 Then Exit Do
  Loop
  CloseHandle pi.hProcess
  CloseHandle pi.hThread
  CloseHandle hRead
  CloseHandle hWrite
  GetStrFromCommand = Replace(strResult, vbNullChar, "")
  End Function
  Public Function RunCommand()Function RunCommand(ByVal CommandLine As String, ByVal WaitForIt As Boolean, Optional ByVal ShowWindow As Boolean = False) As Long
  On Error Resume Next
  Dim si As STARTUPINFO ''used to send info the CreateProcess
  Dim pi As PROCESS_INFORMATION ''used to receive info about the created process
  Dim retval As Long ''return value
  ''Dim hRead As Long ''the handle to the read end of the pipe
  ''Dim hWrite As Long ''the handle to the write end of the pipe
  ''Dim lgSize As Long ''returned number of bytes read by readfile
  Dim sa As SECURITY_ATTRIBUTES
  ''Dim strResult As String ''returned results of the command line
  With sa
  .nLength = Len(sa)
  .bInheritHandle = 1& ''inherit, needed for this to work
  .lpSecurityDescriptor = 0&
  End With
  If ShowWindow Then
  With si
  .cb = Len(si)
  .dwFlags = STARTF_USESHOWWINDOW ''tell it to use (not ignore) the values below
  .wShowWindow = SW_NORMAL
  ''.hStdOutput = hWrite ''pass the write end of the pipe as the processes standard output
  End With
  Else
  With si
  .cb = Len(si)
  .dwFlags = STARTF_USESHOWWINDOW ''tell it to use (not ignore) the values below
  .wShowWindow = SW_HIDE
  ''.hStdOutput = hWrite ''pass the write end of the pipe as the processes standard output
  End With
  End If
  retval = CreateProcess(vbNullString, CommandLine & vbNullChar, sa, sa, 1&, NORMAL_PRIORITY_CLASS, ByVal 0&, vbNullString, si, pi)
  If WaitForIt Then
  WaitForSingleObject pi.hProcess, INFINITE
  End If
  RunCommand = pi.dwProcessId
  CloseHandle pi.hProcess
  CloseHandle pi.hThread
  End Function

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训