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