[AccessD] Shelling to a batch file

Max Wanadoo max.wanadoo at gmail.com
Fri Mar 5 16:31:40 CST 2010


What does windowstyle do?

Max
 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Stuart McLachlan
Sent: Friday, March 05, 2010 10:24 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Shelling to a batch file

Both your version and the one I have just posted have the advantage of being
"drop in" 
replacements for Shell.  Jim's version requires a bit more work every time
it is used.

Your version  is not a complete replacement for Shell because it doesn't
allow the option WindowStyle parameter.

I think I'll stick with mine :-)

--
Stuart

On 5 Mar 2010 at 22:02, Max Wanadoo wrote:

> Hmm, I have a similar one Jim, code below.
> 
> Is there any value in one over the other do you think?
> 
> Max
> 
> Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As 
> Long) As Long Private Declare Function OpenProcess Lib "kernel32" 
> (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal 
> dwProcessId As Long) As Long Private Declare Function 
> WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal 
> dwMilliseconds As Long) As Long Private Const SYNCHRONIZE = &H100000 
> Private Const INFINITE = -1&
> 
> Public Sub pfRunUntilFinished(ByVal strApplication As String) ' EG: 
> Call
> pfRunUntilFinished("C:\AbyssWebServer\htdocs\MasterIndexCopy.bat")
>     Dim lProcID As Long
>     Dim hProc As Long
>     ' Start the App
>     lProcID = Shell("CMD /C " & strApplication, vbHide)
>     DoEvents
>     ' Wait for the App
>     hProc = OpenProcess(SYNCHRONIZE, 0, lProcID)
>     If hProc <> 0 Then
>         WaitForSingleObject hProc, INFINITE
>         CloseHandle hProc
>     End If
> exithere:
>     Exit Sub
> errhandler:
>     MsgBox "pfRunUntilFinished - Errors for " & Err.Number &
Err.Description
>     Resume exithere
> End Sub
>  
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Dettman
> Sent: Friday, March 05, 2010 9:50 PM
> To: 'Access Developers discussion and problem solving'
> Subject: Re: [AccessD] Shelling to a batch file
> 
> 
>  and for those folks that want to pause until the Shelled process has
> finished:
> 
> Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal 
> hProcess As Long, lpExitCode As Long) As LongPrivate Declare Function 
> OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal 
> bInheritHandle As Long, ByVal dwProcessId As Long) As Long
> 
> ' Used for wait check.
> Const STILL_ACTIVE = &H103
> Const PROCESS_QUERY_INFORMATION = &H400
> 
> Public Sub WaitWhileRunning(lngHWnd As Long)
>         
>         Dim lngExitCode As Long
>         Dim lnghProcess As Long
> 
> 10      lngExitCode = STILL_ACTIVE
> 20      lnghProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False,
lngHWnd)
> 
> 30      If lnghProcess > 0 Then
> 40        Do While lngExitCode = STILL_ACTIVE
> 50          Call GetExitCodeProcess(lnghProcess, lngExitCode)
> 60          DoEvents
> 70        Loop
> 80      End If
> 
> End Sub
> 
> Call it like this:
> 
>           ' Execute
> 170       lngHWnd = Shell(strFTPScriptFile, vbHide)
> 180       WaitWhileRunning (lngHWnd)
> 
> Jim.
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Brad Marks
> Sent: Friday, March 05, 2010 4:28 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Shelling to a batch file
> 
> Max,
> 
> I use the SHELL command quite a bit to fire-up .bat and .exe files 
> from Access.
> 
> Below is a snippet of VBA code which you may find useful.
> 
> I am not sure if this will help you or not, but I thought that I would 
> share what I have.
> 
> Please let me know if you have any questions.
> 
> Thanks,
> Brad Marks
> 
> '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ~~
> ~~~~~~~~~~
> 
> Const Four_Quotes As String = """"
> 
> Dim Var_String_For_Shell_Command
> 
> Dim Var_Program_To_Be_Initiated
> 
> Dim Var_Parm_Passed_To_Initiated_Program
> 
> 
> Var_Program_To_Be_Initiated = "C:\Documents and Settings\ABC\My 
> Documents\InitXcel.bat"
> 
> Var_Parm_Passed_To_Initiated_Program = "TEST-ABC"
> 
> 
> Var_String_For_Shell_Command = _
> Four_Quotes _
> & Var_Program_To_Be_Initiated _
> & Four_Quotes _
> & " " _
> & Four_Quotes _
> & Var_Parm_Passed_To_Initiated_Program _ & Four_Quotes
> 
> MsgBox "Var_String_For_Shell_Command = " & vbLf & vbLf & 
> Var_String_For_Shell_Command
> 
> Shell Var_String_For_Shell_Command
> 
> '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ~~
> ~~~~~~~~~~~~~~
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo
> Sent: Thursday, March 04, 2010 3:36 PM
> To: 'Access Developers discussion and problem solving'
> Subject: [AccessD] Shelling to a batch file
> 
> Hi All,
> 
> I am struggling to get the SHELL command to run a batch file from Access.
> 
> Any clues  or tips?
> 
> The batch file in turn will run and executable in the same folder as 
> the currentproject.path BUT this exe file is NOT installed so it is 
> necessary to ensure that I first move to that folder and then run the
batch.bat file.
> 
> Eg:
> g\_MyTest is my currentproject.path within Access In there I have 
> blat.exe which is not installed and which I do not want to install - 
> so nothing in the Registry.
> I also have blat.bat which I have created from Access.
> I want to run the batch file which in turn will invoke the blat.exe 
> and pass it parameters.
> 
> The batch file runs fine if manually invoked.  This is the last bit of 
> running Blat from within Access.
> I will then post the lot to the List.
> 
> Thanks
> 
> Max
> 
> This is where I am at:
> 
> Private Sub sShell(sFile)
> 	' sfile will be "blat.bat"
> 	const conQuote as string = """"
>     Dim sPath As String
>     ' move into the current folder because we havn't installed Blat.exe
>     sPath = conQuote & " CD /D " & CurrentProject.Path & conQuote
>     Debug.Print sPath
>     ShellExecute Application.hWndAccessApp, "Open", sPath, "", "", 
> vbNormalFocus
> 
>     ' now run the batch file
>     'sFile = conQuote & sFile & conQuote
>     Debug.Print sFile
>     ShellExecute Application.hWndAccessApp, "Open", sFile, "", "", 
> vbNormalFocus End Sub
> 
> 
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> --
> This message has been scanned for viruses and dangerous content by 
> MailScanner, and is believed to be clean.
> 
> 
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com


-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list