How to Get a Handle to MS-DOS Application and Change Title

Last reviewed: June 21, 1995
Article ID: Q110701
The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for

  Windows, version 3.0

SUMMARY

This article shows by example how to get the handle to a MS-DOS application, and then use that handle to change the MS-DOS Window title or automatically unload the MS-DOS Window from Visual Basic.

MORE INFORMATION

Step-by-Step Example

  1. Start a new project in Visual Basic. Form1 is created by default.

  2. Add two command buttons (Command1 and Command2) to Form1.

  3. Enter the following code in the General Declarations of a form or module:

       ' Enter each of the following Declare statements on one, single line:
       Declare Function PostMessage Lib "User"
          (ByVal hWnd As Integer, ByVal wMsg As Integer,
          ByVal wParam As Integer, lParam As Any) As Integer
       Declare Sub SetWindowText Lib "User"
          (ByVal hWnd As Integer, ByVal lpString As String)
       Declare Function GetActiveWindow Lib "User" () As Integer
       Dim MhWnd as Integer
       Const WM_CLOSE = &H10
    
    

  4. Enter the following code in the Click Event of Command1:

       Sub Command1_Click()
          Dim X as Integer
          X = Shell("c:\windows\dosprmpt.pif", 1) ' Open an MS-DOS Window
          For X = 0 To 100
             DoEvents
             ' a bunch of DOEVENTS to wait for the MS-DOS Window to open.
          Next X
    
          ' Get the handle when the MS-DOS Window has the focus:
          Mhwnd = GetActiveWindow()
    
          ' Now pass the handle to the window with a new title:
          Call SetWindowText(Mhwnd, "My Application!")
       End Sub
    
    

  5. Place the following code in the Click Event of Command2:

       Sub Command2_Click()
          Dim X as Integer
          ' Note: In order for this to work on a MS-DOS Window, you have
          ' to have a PIF setup that will allow an MS-DOS Window to be closed.
          ' In the PIF editor, select "Advanced", then click "Close When
          ' Active". This allows MS-DOS applications to be closed
          ' programatically
          X = PostMessage(MhWnd, WM_CLOSE, 0, 0) ' Return greater than zero
                                                 ' if successful.
          If X = 0 Then
             MsgBox "Application did not close!"
          End If
       End Sub
    
    

  6. Start the program, or press the F5 key.

  7. Click the Command1 button to see the title change.


Additional reference words: 2.00 3.00
KBCategory: kbprg kbcode
KBSubcategory: PrgOther


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 21, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.