| |

Visual-Basic EinsteigerRe: Mp3 durch Winamp wiedergeben? | |  | Autor: Karl | Datum: 07.05.02 20:54 |
| Erst mal vorweg: Mein Programm soll mir das Abspielen meiner "zahlreichen" mp3 erleichtern. Dazu lasse ich in einem bestimmten Pfad (Text1) nach einem bestimmten Format "mp3" (Text2) durchsuchen. Alle Dateien (Label6 gibt derren Anzahl wieder), die dieses Format in dem Verzeichnis besitzten werden in einer List1.box ausgegeben. Klicke ich nun eine Datei in List1 an, wird der makierte Listindex auf dem Label1 wiedergegeben. Dann entspricht label1 meinem SParam. Hier der Code:
Option Explicit
Private Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" (ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" _
Alias "FindNextFileA" (ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal _
hFindFile As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg _
As Long, ByVal wParam As Long, ByVal lParam As _
String) As Long
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Const MAX_PATH = 259
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Const LB_FINDSTRING = &H18F
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100
Const LB_GETCOUNT = &H18B
Const LB_GETTEXT = &H189
Const LB_GETTEXTLEN = &H18A
Const LB_GETCURSEL = &H188
Private Sub Command2_Click()
Dim lCnt&, X&, L&, Buffer$, Item$, LBidx&, Pfad$, sExe$, SParam$
LBidx = SendMessage(List1.hWnd, LB_GETCURSEL, 0, 0)
If LBidx <> -1 Then
Label1.Caption = GetListBoxEntry(List1.hWnd, LBidx)
Else
Label1.Caption = ""
End If
Pfad = Label1.Caption
sExe = "c rogrammewinampwinamp.exe"
SParam = Chr$(34) & Pfad & Chr$(34)
Shell sExe & " " & SParam
End Sub
Private Sub Form_Load()
Text1.Text = "D:MusikParty" ' Text1 ist der zu dursuchende Pfad
Text2.Text = "*.mp3" 'Text2 läßt nach einem bestimmten Format suchen
Combo1.AddItem "HipHop"
End Sub
Private Sub Command1_Click()
Dim Files() As String, X&
Dim DatCnt&, DirCnt&
ReDim Files(0 To 0)
Call GetAllFiles(Text1.Text, Text2.Text, Files)
List1.Clear
For X = 0 To UBound(Files) - 1
List1.AddItem Files(X)
If Left$(Files(X), 2) = ">>" Then
DirCnt = DirCnt + 1
Label5.Caption = DirCnt
Label5.Refresh
Else
DatCnt = DatCnt + 1
Label6.Caption = DatCnt
Label6.Refresh
End If
Next X
End Sub
Private Sub GetAllFiles(ByVal Root$, ByVal Patt$, ByRef Field$())
Dim File$, hFile&, FD As WIN32_FIND_DATA
If Right(Root, 1) <> "\" Then Root = Root & "\"
hFile = FindFirstFile(Root & Patt, FD)
If hFile = 0 Then Exit Sub
Do
File = Left(FD.cFileName, InStr(FD.cFileName, Chr(0)) - 1)
If (FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) _
= FILE_ATTRIBUTE_DIRECTORY Then
If (File <> ".") And (File <> "..") Then
'Verz.: ">>" kann entfernt werden,da nur zur Visualisierung
Field(UBound(Field)) = ">>" & Root & File
ReDim Preserve Field(0 To UBound(Field) + 1)
GetAllFiles Root & File, Patt, Field
End If
Else
'Datei: " " kann entfernt werden,da nur zur Visualisierung
Field(UBound(Field)) = " " & Root & File
ReDim Preserve Field(0 To UBound(Field) + 1)
End If
Loop While FindNextFile(hFile, FD)
Call FindClose(hFile)
End Sub
Private Function GetListBoxEntry(hWnd&, LbItem&) As String
Dim L&, Buffer$
L = SendMessage(hWnd, LB_GETTEXTLEN, LbItem, 0)
Buffer = Space$(L + 1)
L = SendMessage(hWnd, LB_GETTEXT, LbItem, ByVal Buffer)
GetListBoxEntry = Left$(Buffer, L)
End Function
Der Fehler liegt jetzt darin, dass dein Code zwar GENERELL funktioniert (hab es vereinfacht probiert) aber leider nicht in meinem Programm. Wäre für jeden Tipp sehr dankbar.
MfG Karl |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|