Jürgen Welz
jwelz at hotmail.com
Fri May 7 11:41:11 CDT 2004
I have not experienced this problem. Perhaps a call to Sleep API for 50 milliseconds? Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Perhaps a DoEvents before/after the call to Sleep? Ciao Jürgen Welz Edmonton, Alberta jwelz at hotmail.com >From: "Mitsules, Mark S. (Newport News)" <Mark.Mitsules at ngc.com> >Reply-To: Access Developers discussion and problem >solving<accessd at databaseadvisors.com> >To: "'Access Developers discussion and problem >solving'"<accessd at databaseadvisors.com> >Subject: RE: [AccessD] ShellExecute / Application.Quit >Date: Fri, 7 May 2004 09:05:12 -0400 MIME-Version: 1.0 >Received: from mc12-f22.hotmail.com ([65.54.167.158]) by >mc12-s17.hotmail.com with Microsoft SMTPSVC(5.0.2195.6824); Fri, 7 May 2004 >06:06:59 -0700 >Received: from databaseadvisors.com ([209.135.140.44]) by >mc12-f22.hotmail.com with Microsoft SMTPSVC(5.0.2195.6824); Fri, 7 May 2004 >06:06:04 -0700 >Received: from databaseadvisors.com (databaseadvisors.com >[209.135.140.44])by databaseadvisors.com (8.11.6/8.11.6) with ESMTP id >i47D5iQ04616;Fri, 7 May 2004 08:05:44 -0500 >Received: from xcgmd812.northgrum.com >(xcgmd812.northgrum.com[155.104.240.108])by databaseadvisors.com >(8.11.6/8.11.6) with ESMTP id i47D5fQ04569for ><accessd at databaseadvisors.com>; Fri, 7 May 2004 08:05:41 -0500 >Received: by xcgmd812 with Internet Mail Service (5.5.2656.59)id ><KLQMV9DB>; Fri, 7 May 2004 06:05:22 -0700 >Received: from xcgmd805.northgrum.com ([155.104.117.53]) >byxcgmd805.northgrum.com with SMTP (Microsoft Exchange InternetMail Service >Version 5.5.2653.13)id K31986ZD; Fri, 7 May 2004 06:04:44 -0700 >Received: from xcgva080 ([172.30.18.153]) by 155.104.117.53 with >InterScanMessaging Security Suite; Fri, 07 May 2004 06:04:43 -0700 >Received: from npeimc02.nns.com ([172.30.18.167]) by xcgva080 with >InterScanMessaging Security Suite; Fri, 07 May 2004 09:05:14 -0400 >Received: by npeimc02.nns.com with Internet Mail Service (5.5.2657.72)id ><KLPPA405>; Fri, 7 May 2004 09:05:13 -0400 >X-Message-Info: NDMZeIBu+soD+00CmSqloiEfVNPHZPEbvx0NF0JIN1E= >Message-ID: <D3E2A213B8F45B4DAC92EB5FD98ED1EF010EBBF0 at nnse14.nns.com> >X-Mailer: Internet Mail Service (5.5.2657.72) >X-BeenThere: accessd at databaseadvisors.com >X-Mailman-Version: 2.1.4 >Precedence: list >List-Id: Access Developers discussion and problem >solving<accessd.databaseadvisors.com> >List-Help: <mailto:accessd-request at databaseadvisors.com?subject=help> >List-Post: <mailto:accessd at databaseadvisors.com> >List-Subscribe: ><http://databaseadvisors.com/mailman/listinfo/accessd>,<mailto:accessd-request at databaseadvisors.com?subject=subscribe> >List-Archive: <http://databaseadvisors.com/pipermail/accessd> >List-Unsubscribe: ><http://databaseadvisors.com/mailman/listinfo/accessd>,<mailto:accessd-request at databaseadvisors.com?subject=unsubscribe> >Errors-To: accessd-bounces at databaseadvisors.com >Return-Path: accessd-bounces at databaseadvisors.com >X-OriginalArrivalTime: 07 May 2004 13:06:04.0932 (UTC) >FILETIME=[0DE5BC40:01C43434] > >Maybe the problem is I'm trying to use the wrong method for my purposes? >This is not a situation where I need to shell out, perform a task, and >return. My problem is that I'm using a .mdb as a launcher app. I want to >shell out to launch another .mdb and immediately close the launcher app. >All of my code works...except if I try to run it from an AutoExec macro. >My >current work-around is to utilize a splash screen with a single OK >button...this works, but adds a few unnecessary seconds that I was trying >to >avoid. Ironically, it was because of this work-around that I found, in >testing, that 2-3% of the users drive mappings are not configured to >departmental standards....well actually they are, it's just that they are >technically in another department and on-loan to us. > > > >Mark > > > >-----Original Message----- >From: Gustav Brock [mailto:gustav at cactus.dk] >Sent: Friday, May 07, 2004 8:24 AM >To: Access Developers discussion and problem solving >Subject: Re: [AccessD] ShellExecute / Application.Quit > > >Hi Mark > > > The different versions of ShellWait utilize the API call CreateProcessA > > instead of ShellExecuteA. I can't seem to get CreateProcessA to open > > anything...yet no errors are returned. Is CreateProcessA like >ShellExecuteA > > in that as long as I pass a valid path/filename with a registered >extension, > > it will automagically do its thing? ...because it isn't:( > >It's hard to tell why it fails without knowing more. >But here's another approach - I can't remember where I got it: > ><code> > >Option Compare Database >Option Explicit > >Private Const SYNCHRONIZE = &H100000 > >' Wait forever. >Private Const INFINITE = &HFFFF >' The state of the specified object is signaled. >Private Const WAIT_OBJECT_0 = 0 >' The time-out interval elapsed and the object?s state is nonsignaled. >Private Const WAIT_TIMEOUT = &H102 > >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 Declare Function CloseHandle Lib "kernel32" ( _ > ByVal hObject As Long) _ > As Long > >' The WaitForSingleObject function returns when one of the following >occurs: >' - The specified object is in the signaled state. >' - The time-out interval elapses. >' >' The dwMilliseconds parameter specifies the time-out interval, in >milliseconds. >' The function returns if the interval elapses, even if the object?s state >is >' nonsignaled. If dwMilliseconds is zero, the function tests the object?s >state >' and returns immediately. If dwMilliseconds is INFINITE, the function?s >time-out >' interval never elapses. >' >' This example waits an INFINITE amount of time for the process to end. As >a >' result this process will be frozen until the shelled process terminates. >The >' down side is that if the shelled process hangs, so will this one. >' >' A better approach is to wait a specific amount of time. Once the time-out >' interval expires, test the return value. If it is WAIT_TIMEOUT, the >process >' is still not signaled. Then you can either wait again or continue with >your >' processing. >' >' DOS Applications: >' Waiting for a DOS application is tricky because the DOS window never goes >' away when the application is done. To get around this, prefix the app >that >' you are shelling to with "command.com /c". >' >' For example: lngPid = Shell("command.com /c " & strCommand.Text, >vbNormalFocus) > >Function ShellWait( _ > ByVal strCommand As String) _ > As Boolean > > Dim lngPid As Long > Dim lngHnd As Long > Dim lngReturn As Long > Dim booSuccess As Boolean > > If Len(Trim$(strCommand)) > 0 Then > lngPid = Shell(strCommand, vbNormalFocus) > If lngPid <> 0 Then > ' Get a handle to the shelled process. > lngHnd = OpenProcess(SYNCHRONIZE, 0, lngPid) > ' If successful, wait for the application to end and close the >handle. > If lngHnd <> 0 Then > lngReturn = WaitForSingleObject(lngHnd, INFINITE) > CloseHandle (lngHnd) > booSuccess = True > End If > MsgBox "Just terminated.", vbInformation, "Shelled Application" > End If > End If > > ShellWait = booSuccess > >End Function > ></code> > >Beware of line breaks. > >/gustav > >-- >_______________________________________________ >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 _________________________________________________________________ http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines