Four Different Methods to Display the Find Files Dialog

This article from Ovidiu Crisan shows four different methods of displaying the 'Find Files' dialog from within a Visual Basic Program.

screen-shot

If you want to use 'Find Files' standard dialog, in your programs you can choose between the following four methods.

  • Using DDE: it's needed an label control, even invisible.
  • Private Sub Command1_Click()
        With Label1
        .LinkTopic = "Folders|AppProperties"
        .LinkMode = vbLinkManual
        .LinkExecute "[OpenFindFile(,)]"
      End With
    End Sub
    
    Private Sub Form_Load()
      Label1.Visible = False
      Command1.Caption = "Find File (1)..."
      Me.Caption = "Find File (1)"
    End Sub
    
  • Using keybd_event API function to simulate Win + 'F':
  • Private Declare Sub keybd_event Lib "user32" _
        (ByVal bVk As Byte, _
        ByVal bScan As Byte, _
        ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)
    '
    Private Const VK_LWIN = &H5B
    Private Const KEYEVENTF_KEYUP = &H2
    Private Const VK_APPS = &H5D
    '
    Private Sub Command1_Click()
        Call keybd_event(VK_LWIN, 0, 0, 0)
        Call keybd_event(&H46, 0, 0, 0)       'F
        Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
    End Sub
    '
    Private Sub Form_Load()
      Command1.Caption = "Find File (2)..."
      Me.Caption = "Find File (2)"
    End Sub
    
  • Using MS Q183903 (http://support.microsoft.com/support/kb/articles/q183/9/03.asp)
  • Private Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" _
        (ByVal hwnd As Long, _ 
         ByVal lpOperation As String, _
         ByVal lpFile As String, _
         ByVal lpParameters As String, _
         ByVal lpDirectory As String, _
         ByVal nShowCmd As Long) As Long
    
    Private Const SW_SHOWNORMAL = 1
    Private Const SW_SHOWMINIMIZED = 2
    Private Const SW_SHOWMAXIMIZED = 3
    Private Const SW_SHOW = 5
    Private Const SW_MINIMIZE = 6
    Private Const SW_SHOWMINNOACTIVE = 7
    Private Const SW_SHOWNA = 8
    Private Const SW_RESTORE = 9
    Private Const SW_SHOWDEFAULT = 10
    
    Private Sub Command1_Click()
       Call ShellExecute(Me.hwnd, _
          "find", _
          Dir1.Path, _
          vbNullString, _
          vbNullString, _
          SW_SHOWNORMAL)
    End Sub
    
    Private Sub Drive1_Change()
       Dir1.Path = Drive1.Drive
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Find File (3)..."
    End Sub
    
  • Using undocumented function SHFindFiles and SHSimpleIDListFromPath from Shell32.dll:
  • Private Declare Function SHFindFiles Lib "Shell32" _
        Alias "#90" _
        (pidlRoot As Long, pidlSavedSearch As Long) As Long
    Private Declare Function SHSimpleIDListFromPath Lib _
        "Shell32" Alias "#162" _
        (ByVal lpszPath As String) As Long
    '
    Private Sub Command1_Click()
      Dim l As Long
      l = SHSimpleIDListFromPath(Dir1.Path)
      SHFindFiles ByVal l, ByVal 0
    End Sub
    
    Private Sub Drive1_Change()
      Dir1.Path = Drive1.Drive
    End Sub
    
    Private Sub Form_Load()
      Command1.Caption = "Find File (4)..."
      Me.Caption = "Find File (4)"
    End Sub
    

For the last two methods you need to add a DriveListBox and a DirListBox
control. With this methods you can give the start path for searching.

Download Zipped Project File (12k)



Comments

  • ok

    Posted by Legacy on 10/17/2001 12:00am

    Originally posted by: sabirmajor

    good for other like goog for yourselves
    thanks

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • 10 Rules that Make or Break Enterprise App Development Projects In today's app-driven world, application development is a top priority. Even so, 68% of enterprise application delivery projects fail. Designing and building applications that pay for themselves and adapt to future needs is incredibly difficult. Executing one successful project is lucky, but making it a repeatable process and strategic advantage? That's where the money is. With help from our most experienced project leads and software engineers, …

  • The first phase of API management was about realizing the business value of APIs. This next wave of API management enables the hyper-connected enterprise to drive and scale their businesses as API models become more complex and sophisticated. Today, real world product launches begin with an API program and strategy in mind. This API-first approach to development will only continue to increase, driven by an increasingly interconnected web of devices, organizations, and people. To support this rapid growth, …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds