Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Visual Basic 6.0 / VBA » Dialog () Dialogs () - Suchen eines Ordners

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.12.2003, 10:39 Uhr
ai-tee



Hallo all,

ist es möglich mittels Dialog oder anders einen bestimmten Ordner zu suchen? Bisher hab ich es nur geschafft nach Dateien zu suchen und diese zurückzugeben ... Ich brauche unbedingt einen Dialog der Verzeichnisse referenziert ...
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.12.2003, 14:55 Uhr
Pablo
Supertux
(Operator)


Ich hab das schon mal geschafft, das macht man mit den APIs Funktionen. Leider weiß ich nicht mehr mit welchen. Ich bin jetzt zur Zeit nicht zu Hause, deshalb kann ich das nicht gucken, ich erzähl dir heute abend, oder morgen, wenn ich das gefunden hab.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.12.2003, 16:59 Uhr
ai-tee



Ich habs schon programmiert mit viel Hilfe aus irgendwelchen Quellen aus irgenwelchen Foren ... ich kann bei interesse das Ergebniss mal präsentieren ... im Prinzip ist VBA gar nicht so schwer ... man muss nur so vieles beachten ...
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.12.2003, 19:51 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hau es nur rein hier
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.12.2003, 01:13 Uhr
Pablo
Supertux
(Operator)


So, das habe ich schon versprochen:

1. Schritt:

Erstelle ein neues BAS Module und kopiere folgenden Code ins Module

Visual Basic:
Option Explicit

Private Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type

'Browsing type.
Public Enum BrowseType
    BrowseForFolders = &H1
    BrowseForComputers = &H1000
    BrowseForPrinters = &H2000
    BrowseForEverything = &H4000
End Enum

'Folder Type
Public Enum FolderType
    CSIDL_BITBUCKET = 10
    CSIDL_CONTROLS = 3
    CSIDL_DESKTOP = 0
    CSIDL_DRIVES = 17
    CSIDL_FONTS = 20
    CSIDL_NETHOOD = 18
    CSIDL_NETWORK = 19
    CSIDL_PERSONAL = 5
    CSIDL_PRINTERS = 4
    CSIDL_PROGRAMS = 2
    CSIDL_RECENT = 8
    CSIDL_SENDTO = 9
    CSIDL_STARTMENU = 11
End Enum

Private Const MAX_PATH = 260
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hWndOwner As Long, ByVal nFolder As Long, ListId As Long) As Long

Public Function BrowseFolders(hWndOwner As Long, sMessage As String, Browse As BrowseType, ByVal RootFolder As FolderType) As String
    Dim Nullpos As Integer
    Dim lpIDList As Long
    Dim res As Long
    Dim sPath As String
    Dim BInfo As BrowseInfo
    Dim RootID As Long

    SHGetSpecialFolderLocation hWndOwner, RootFolder, RootID
    BInfo.hWndOwner = hWndOwner
    BInfo.lpszTitle = lstrcat(sMessage, "")
    BInfo.ulFlags = Browse
    If RootID <> 0 Then BInfo.pIDLRoot = RootID
    lpIDList = SHBrowseForFolder(BInfo)
    If lpIDList <> 0 Then
        sPath = String(MAX_PATH, 0)
        res = SHGetPathFromIDList(lpIDList, sPath)
        Call CoTaskMemFree(lpIDList)
        Nullpos = InStr(sPath, vbNullChar)
        If Nullpos <> 0 Then
            sPath = Left(sPath, Nullpos - 1)
        End If
    End If
    BrowseFolders = sPath
End Function



BrowseFolders zeigt ein Fenster, das alle Ordner deines Rechners anzeigt, beim Auswählen wird den Pfad zurückgegeben.

bsp:

Visual Basic:
Option Explicit

Private Sub Form_Load()
    MsgBox BrowseFolders(hWnd, "Select a Folder", BrowseForFolders, CSIDL_DESKTOP)
    Unload Me
End Sub


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.12.2003, 01:20 Uhr
0xdeadbeef
Gott
(Operator)


CSIDL_BITBUCKET? Wow...Ich erinnere mich daran, mal eine Spezi eines WOM (Write only memory) gesehen zu haben, der unter anderem als bit bucket einzusetzen sei. Das war aber wohl nur so halb ernst gemeint...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.08.2005, 11:40 Uhr
~enrico1704
Gast


Hallo,

hab ein ähnliches Problem, ich will Logfiles (*.txt) mit Acces auslesen und muss mir dazu die Dateien aus den entsprechenden Ordnern suchen. Ich hab auch alles soweit, dass ich die Dateien suche und auch finde, aber um das Logereignis auszuwerten brauche ich auch den Namen des Ordners in dem sich die Datei befindet. Kann mir da vielleicht jemand weiterhelfen?
Ich habe Access 97, kann also die "enum"´s aus dem Quellcode oben nicht nutzen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Visual Basic 6.0 / VBA ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: