Results 1 to 5 of 5

Thread: Please help : problem with retrieving window handles

  1. #1
    jim mcnamara
    Guest
    The standard way to create a process, then wait for it is called shell and wait. Use CreateProcess and WaitForSingleObject.
    Not shell & EnumWindows.

    Here is the MSDN tutorial:

    http://support.microsoft.com/default...;EN-US;q129796

  2. #2
    Junior Member DWillems's Avatar
    Join Date
    Aug 2001
    Location
    Lunar Base 1 Favorite drink : olive oil Mental state : abstract
    Posts
    28
    Works fine if you know the executable on beforehand.

    How do I proceed if I only have a path and a filename ?

    (i.e. "c:\ExDir\something.doc")
    General Protection Fault : An error occured while executing Error #3051 : undocumented error. Please wait while your computer crashes.

  3. #3
    jim mcnamara
    Guest
    ShellExecuteEx returns a pid that you can use in WaitForSingleObject.


    Code:
    Const SEE_MASK_INVOKEIDLIST = &HC
    Const SEE_MASK_NOCLOSEPROCESS = &H40
    Const SEE_MASK_FLAG_NO_UI = &H400
    Private Type SHELLEXECUTEINFO
        cbSize As Long
        fMask As Long
        hwnd As Long
        lpVerb As String
        lpFile As String
        lpParameters As String
        lpDirectory As String
        nShow As Long
        hInstApp As Long
        lpIDList As Long
        lpClass As String
        hkeyClass As Long
        dwHotKey As Long
        hIcon As Long
        hProcess As Long
    End Type
    Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
    Sub ShowProps(FileName As String, OwnerhWnd As Long)
        Dim SEI As SHELLEXECUTEINFO
        Dim r As Long
        With SEI
            'Set the structure's size
            .cbSize = Len(SEI)
            'Seet the mask
            .fMask = SEE_MASK_NOCLOSEPROCESS Or _
             SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
            'Set the owner window
            .hwnd = OwnerhWnd
            'Show the properties
            .lpVerb = "properties"
            'Set the filename
            .lpFile = FileName
            .lpParameters = vbNullChar
            .lpDirectory = vbNullChar
            .nShow = 0
            .hInstApp = 0
            .lpIDList = 0
        End With
        r = ShellExecuteEX(SEI)
    End Sub
    Private Sub Form_Load()
        'KPD-Team 1999
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        ShowProps "c:\config.sys", Me.hwnd
    End Sub

  4. #4
    jim mcnamara
    Guest
    Duh.

    PS: that's not quite true - you CAN get the executable associated with any file, if an association exists.

    See:

    http://www.mvps.org/vbnet/code/syste...executable.htm

  5. #5
    Junior Member DWillems's Avatar
    Join Date
    Aug 2001
    Location
    Lunar Base 1 Favorite drink : olive oil Mental state : abstract
    Posts
    28
    Have to go through all the documentation but I'm sure I'll come up with something.

    Thanks a great deal !
    General Protection Fault : An error occured while executing Error #3051 : undocumented error. Please wait while your computer crashes.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width