Results 1 to 5 of 5

Thread: How can I make my .dll execute a .bat file on the server?

  1. #1

    Thread Starter
    New Member
    Join Date
    Jun 2001
    Location
    Paris
    Posts
    2

    Question How can I make my .dll execute a .bat file on the server?

    Hello,
    I would like the ActiveX component (.dll) that I write to be able to execute a batch file on the server where the component resides.
    Can anybody tell me how to do this.
    Thanks a lot in advance!

    Mike
    Last edited by vbmegamike; Jun 1st, 2001 at 09:58 AM.

  2. #2
    Fanatic Member crispin's Avatar
    Join Date
    Aug 2000
    Location
    2 clicks west of a Quirkafleeg...Cornwall, England
    Posts
    754
    first question before this gets messy, do you want to return anything from the result of the batch file execution to the DLL(makes it a lot more complex) if not then its a one liner:
    Code:
    Dim dRet As Double
    dRet = Shell("c:\KillBill.Bat", vbMaximizedFocus)
    Last edited by crispin; Jun 1st, 2001 at 10:22 AM.
    Crispin
    VB6 ENT SP5
    VB.NET
    W2K ADV SVR SP3
    WWW.BLOCKSOFT.CO.UK

    [Microsoft Basic: 1976-2001, RIP]

  3. #3

    Thread Starter
    New Member
    Join Date
    Jun 2001
    Location
    Paris
    Posts
    2
    Thanx Crispin,
    I need my component to wait for the batch job to terminate, before it continues the program. There must be a more elegant solution to that than making the batch file produce a control file and have the DLL look for that one to appear :-)

  4. #4
    Fanatic Member crispin's Avatar
    Join Date
    Aug 2000
    Location
    2 clicks west of a Quirkafleeg...Cornwall, England
    Posts
    754
    I won't steal Karls code, I use it a lot though, and have different versions, so lemme know if this doesn't do quite what youre after,

    www.mvps.org/vb

    go to the samples page and look for shell32.zip
    Crispin
    VB6 ENT SP5
    VB.NET
    W2K ADV SVR SP3
    WWW.BLOCKSOFT.CO.UK

    [Microsoft Basic: 1976-2001, RIP]

  5. #5
    Registered User Nucleus's Avatar
    Join Date
    Apr 2001
    Location
    So that's what you are up to ;)
    Posts
    2,530
    This may help also:

    From MSDN:

    Code:
    Private 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
    
       Private Type PROCESS_INFORMATION
          hProcess As Long
          hThread As Long
          dwProcessID As Long
          dwThreadID As Long
       End Type
    
       Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
          hHandle As Long, ByVal dwMilliseconds As Long) As Long
    
       Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
          lpApplicationName As String, 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 String, _
          lpStartupInfo As STARTUPINFO, lpProcessInformation As _
          PROCESS_INFORMATION) As Long
    
       Private Declare Function CloseHandle Lib "kernel32" _
          (ByVal hObject As Long) As Long
    
       Private Declare Function GetExitCodeProcess Lib "kernel32" _
          (ByVal hProcess As Long, lpExitCode As Long) As Long
    
       Private Const NORMAL_PRIORITY_CLASS = &H20&
       Private Const INFINITE = -1&
    
       Public Function ExecCmd(cmdline$)
          Dim proc As PROCESS_INFORMATION
          Dim start As STARTUPINFO
    
          ' Initialize the STARTUPINFO structure:
          start.cb = Len(start)
    
          ' Start the shelled application:
          ret& = CreateProcessA(vbNullString, cmdline$, 0&, 0&, 1&, _
             NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)
    
          ' Wait For the shelled application To finish:
             ret& = WaitForSingleObject(proc.hProcess, INFINITE)
             Call GetExitCodeProcess(proc.hProcess, ret&)
             Call CloseHandle(proc.hThread)
             Call CloseHandle(proc.hProcess)
             ExecCmd = ret&
       End Function
    
       Sub Form_Click()
          Dim retval As Long
          retval = ExecCmd("notepad.exe")
          MsgBox "Process Finished, Exit Code " & retval
       End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width