[AccessD] ShellExecute / Application.Quit

Mackin, Christopher CMackin at Quiznos.com
Fri May 7 12:02:27 CDT 2004


I built something similar once and utilized the Do Events within the Error
Handling and it fixed the issue.  I did not think to try a sleep API.

-Chris Mackin

-----Original Message-----
From: J|rgen Welz [mailto:jwelz at hotmail.com]
Sent: Friday, May 07, 2004 10:41 AM
To: accessd at databaseadvisors.com
Subject: RE: [AccessD] ShellExecute / Application.Quit


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
Jurgen 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-requ
est at databaseadvisors.com?subject=subscribe>
>List-Archive: <http://databaseadvisors.com/pipermail/accessd>
>List-Unsubscribe: 
><http://databaseadvisors.com/mailman/listinfo/accessd>,<mailto:accessd-requ
est 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=htt
p://hotmail.com/enca&HL=Market_MSNIS_Taglines

-- 
_______________________________________________
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