![]() |
|
| |||||||
|
| | Seçenekler |
|
#1
| ||||||
| ||||||
Dosya ve Klasör AramaDosya ve Klasör Arama Belirlediginiz nitelikteki dosya ve klasörleri listeler Kod: Option Explicit Dim m_wCurOptIdx As Integer Private Sub Form_Load() Dim wIdx As Integer, nFolder As Long Dim sPath As String * MAX_PATH ' 260 Dim IDL As ITEMIDLIST Move (Screen.Width - Width) * 0.5, (Screen.Height - Height) * 0.5 pic16Icon.AutoRedraw = True ' this is a demo... pic32Icon.AutoRedraw = True ' Loads the labels with the respective ' system folder's path (if found) For wIdx = 1 To 17 nFolder = GetFolderValue(wIdx) ' Fill the item id list with the pointer of each folder item, rtns 0 on success If SHGetSpecialFolder********(Me.hWnd, nFolder, IDL) = NOERROR Then ' Get the path from the item id list pointer, rtns True on success If SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath) Then ' Display the path in the respective label labFolderPath(wIdx) = Left$(sPath, InStr(sPath, vbNullChar) - 1) End If Else ' The folder item doesn't exist, disable it's checkbox optFolder(wIdx).Enabled = False End If Next End Sub Private Function GetFolderValue(wIdx As Integer) As Long ' Returns the value of the system folder constant specified by wIdx ' See BrowsDlg.bas for the system folder nFolder values ' The Desktop If wIdx < 2 Then GetFolderValue = 0 ' Programs Folder --> Start Menu Folder ElseIf wIdx < 12 Then GetFolderValue = wIdx ' Desktop Folder --> ShellNew Folder Else ' wIdx >= 12 GetFolderValue = wIdx + 4 End If End Function Private Sub optFolder_Click(Index As Integer) ' Save the current option button index m_wCurOptIdx = Index End Sub Private Function GetReturnType() As Long Dim dwRtn As Long If chkRtnType(0) Then dwRtn = dwRtn Or BIF_RETURNONLYFSDIRS If chkRtnType(1) Then dwRtn = dwRtn Or BIF_DONTGOBELOWDOMAIN ' If chkRtnType(2) Then dwRtn = dwRtn Or BIF_STATUSTEXT ' callback only If chkRtnType(3) Then dwRtn = dwRtn Or BIF_RETURNFSANCESTORS If chkRtnType(4) Then dwRtn = dwRtn Or BIF_BROWSEFORCOMPUTER If chkRtnType(5) Then dwRtn = dwRtn Or BIF_BROWSEFORPRINTER GetReturnType = dwRtn End Function Private Sub cmdBrowse_Click() Dim BI As BROWSEINFO Dim nFolder As Long Dim IDL As ITEMIDLIST Dim pIdl As Long Dim sPath As String Dim SHFI As SHFILEINFO With BI ' The dialog's owner window... .hOwner = Me.hWnd ' Set the Browse dialog root folder nFolder = GetFolderValue(m_wCurOptIdx) ' Fill the item id list with the pointer of the selected folder item, rtns 0 on success ' ================================================== ' If this function fails because the selected folder doesn't exist, ' .pidlRoot will be uninitialized & will equal 0 (CSIDL_DESKTOP) ' and the root will be the Desktop. ' DO NOT specify the CSIDL_ constants for .pidlRoot !!!! ' The SHBrowseForFolder() call below will generate a fatal exception ' (GPF) if the folder indicated by the CSIDL_ constant does not exist!! ' ================================================== If SHGetSpecialFolder********(ByVal Me.hWnd, ByVal nFolder, IDL) = NOERROR Then .pidlRoot = IDL.mkid.cb End If ' Initialize the buffer that rtns the display name of the selected folder .pszDisplayName = String$(MAX_PATH, 0) ' Set the dialog's banner text .lpszTitle = "Browsing is limited to: " & optFolder(m_wCurOptIdx).Caption ' Set the type of folders to display & return ' -play with these option constants to see what can be returned .ulFlags = GetReturnType() End With ' Clear previous return vals before the ' dialog is shown (it might be cancelled) txtPath = "" txtDisplayName = "" pic16Icon.Picture = LoadPicture() ' clears prev icon pic32Icon.Picture = LoadPicture() ' Show the Browse dialog pIdl = SHBrowseForFolder(BI) ' If the dialog was cancelled... If pIdl = 0 Then Exit Sub ' Fill sPath w/ the selected path from the id list ' (will rtn False if the id list can't be converted) sPath = String$(MAX_PATH, 0) SHGetPathFromIDList ByVal pIdl, ByVal sPath ' Display the path and the name of the selected folder txtPath = Left(sPath, InStr(sPath, vbNullChar) - 1) txtDisplayName = Left$(BI.pszDisplayName, _ InStr(BI.pszDisplayName, vbNullChar) - 1) ' Get the 16x16 icon info from the id list using the pidl SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _ SHGFI_PIDL Or SHGFI_ICON Or SHGFI_SMALLICON ' The 16x16 icon handle rtnd in SHFI.hIcon is stretched to 32x32. ' DrawIconEx() will shrink (or stretch) the icon per it's cxWidth & cyWidth params DrawIconEx pic16Icon.hdc, 0, 0, SHFI.hIcon, 16, 16, 0, 0, DI_NORMAL pic16Icon.Refresh ' Get the 32x32 icon info from the id list SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _ SHGFI_PIDL Or SHGFI_ICON ' SHFI.hIcon is OK here so DrawIcon() can be used DrawIcon pic32Icon.hdc, 0, 0, SHFI.hIcon pic32Icon.Refresh ' Frees the memory SHBrowseForFolder() ' allocated for the pointer to the item id list CoTaskMemFree pIdl End Sub Private Sub cmdInfo_Click() MsgBox "If a root folder Option Button has no correspnoding folder ******** " & _ "displayed, then no Registry entry exists for it under:" & vbCrLf & vbCrLf & _ "HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Explorer\Shell Folders" & _ vbCrLf & vbCrLf & "As well, if a root folder Option Button is disabled, the folder " & _ "does not exist in your file system and cannot be dispalyed as the root in the Browse dialog." End Sub Private Sub cmdQuit_Click() Unload Me End Sub Private Sub Form_Unload(Cancel As Integer) Set Form1 = Nothing End End Sub __________________ |
![]() |
| Arama Etiketleri: arama, dosya, klasor |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| Klasör oluşturmak | Celebrian | Visual Basic & Action script | 2 | 23-06-2008 02:24 |
| www.dosyaara.net DosyaAra.net İnternette Dosya Arama Motoru, %100 Türk Arama Motoru | mukoonline | Diğer Web Siteleri | 2 | 27-05-2008 07:50 |
| cgi-perl Dosya işlemleri (Dosya erişim yetkileri, dosya açma, okuma, yazma ve kapatma | W-S | Perl-Cgi | 0 | 13-03-2008 12:54 |
| Visual Basic.Net - Dosya ve Klasör Fonksiyon Türleri | kadınca | Visual Basic & Action script | 0 | 18-12-2007 08:21 |
| Dosya ve Klasör Listeleme | egitimbilgisi | Asp kodları | 0 | 26-11-2007 05:15 |
![]() | ![]() |