VB3: HOWTO: Terminate Windows from a Visual Basic ApplicationID: Q76981
|
The Visual Basic SendKeys function cannot be used to close Program Manager
in order to terminate Windows. To correctly close Program Manager, you must
invoke the ExitWindows API function as shown below.
Many software setup or installation programs are designed to exit Windows,
and then restart Windows when the setup or installation is complete. You
can make a Visual Basic program automatically exit Windows and then restart
Windows by passing the EW_RESTARTWINDOWS value to the ExitWindows API
function. The value for the EW_RESTARTWINDOWS constant is &H42.
You may want to terminate the current Windows session by closing the
Program Manager from within a Visual Basic application. You may think that
you can activate the Program Manager control menu and send the appropriate
key sequences using the Visual Basic SendKeys function. However, this
method will not work because after the Close menu item is chosen, a system
modal dialog box is opened that prompts you to save changes to Program
Manager. A system modal dialog box locks out ALL other programs until it is
satisfied. Therefore, the keystroke you send by using the SendKeys function
will never arrive in the dialog box.
To correctly close Program Manager, you must use the ExitWindows API
function. You can declare this API function in the GLOBAL.BAS module. For
example:
Declare Function ExitWindows Lib "user" (ByVal wReturnCode as Long,
ByVal dwReserved as Integer) as Integer
RetVal% = ExitWindows(0,0)
AppActivate("Program Manager")
SendKeys "%{ }{DOWN 5}{ENTER 2}", 0 'ALT, SPACE, DOWN 5, ENTER 2
Additional query words: 2.00 3.00 restart start exit windows
Keywords : kbWndw
Version : 1.00 2.00 3.00
Platform : WINDOWS
Issue type :
Last Reviewed: May 27, 1999