' **************************************************************
' Modul: Form1 Typ = Userform
' **************************************************************
Option Explicit
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Activate()
Beep
SetWindowPos Me.hwnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
DoEvents
End Sub
' **************************************************************
' Modul: basBrowse Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Private Function fncGetFolder( _
Optional ByVal sMsg As String = "Bitte wählen Sie ein Verzeichnis", _
Optional ByVal lFlag As BIF_Flag = BIF_RETURNONLYFSDIRS, _
Optional ByVal sPath As String = "C:\") As String
Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String
sBrowseInitDir = sPath
With xl
.hwnd = FindWindow("XLMAIN", vbNullString)
.Root = 0
.Title = lstrcat(sMsg, "")
.Flags = lFlag
.FName = FuncCallback(AddressOf BrowseCallback)
End With
IDList = SHBrowseForFolder(xl)
If IDList <> 0 Then
FolderName = Space(256)
RVal = SHGetPathFromIDList(IDList, FolderName)
CoTaskMemFree (IDList)
FolderName = Trim$(FolderName)
FolderName = Left$(FolderName, Len(FolderName) - 1)
End If
fncGetFolder = FolderName
End Function
Private Function BrowseCallback( _
ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If uMsg = BFFM_INITIALIZED Then
Call SendMessage(hwnd, BFFM_SETSELECTION, ByVal 1&, ByVal sBrowseInitDir)
Call CenterDialog(hwnd)
End If
BrowseCallback = 0
End Function
Private Function FuncCallback(ByVal nParam As Long) As Long
FuncCallback = nParam
End Function
Private Sub CenterDialog(hwnd As Long)
Dim WinRect As RECT, ScrWidth As Integer, ScrHeight As Integer
Dim DlgWidth As Integer, DlgHeight As Integer
GetWindowRect hwnd, WinRect
DlgWidth = WinRect.Right - WinRect.Left
DlgHeight = WinRect.Bottom - WinRect.Top
ScrWidth = GetSystemMetrics(SM_CXFULLSCREEN)
ScrHeight = GetSystemMetrics(SM_CYFULLSCREEN)
MoveWindow hwnd, (ScrWidth - DlgWidth) / 2, _
(ScrHeight - DlgHeight) / 2, DlgWidth, DlgHeight, 1
End Sub
Public Sub prcBrowse(sFolder As String)
Const sPreselect As String = "C:\"
MakeSureDirectoryPathExists sPreselect
sFolder = Trim$(fncGetFolder(, BIF_RETURNONLYFSDIRS, sPreselect))
End Sub
' **************************************************************
' Modul: basStart Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Private Sub Main()
Dim sFolder As String
Call prcBrowse(sFolder)
If sFolder <> "" Then
Call prcGetFilesInFolder(sFolder & "\", "*.jpg")
Form1.Show vbModal
End If
End
End Sub
' **************************************************************
' Modul: basDeclaration Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Public Declare Function MoveWindow Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
Public Declare Function GetSystemMetrics Lib "user32.dll" ( _
ByVal nIndex As Long) As Long
Public Declare Function GetWindowRect Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByRef lpRect As RECT) As Long
Public Declare Function SHBrowseForFolder Lib "shell32.dll" ( _
ByRef lpbi As InfoT) As Long
Public Declare Function CoTaskMemFree Lib "ole32.dll" ( _
ByVal hMem As Long) As Long
Public Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" ( _
ByVal lpStr1 As String, _
ByVal lpStr2 As String) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" ( _
ByVal pList As Long, _
ByVal lpBuffer As String) As Long
Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassname As String, _
ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByRef wParam As Any, _
ByRef lParam As Any) As Long
Public Declare Function GetFileTime Lib "kernel32.dll" ( _
ByVal hFile As Long, _
ByRef lpCreationTime As FILETIME, _
ByRef lpLastAccessTime As FILETIME, _
ByRef lpLastWriteTime As FILETIME) As Long
Public Declare Function SetFileTime Lib "kernel32.dll" ( _
ByVal hFile As Long, _
ByRef lpCreationTime As FILETIME, _
ByRef lpLastAccessTime As FILETIME, _
ByRef lpLastWriteTime As FILETIME) As Long
Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Public Declare Function SystemTimeToFileTime Lib "kernel32.dll" ( _
ByRef lpSystemTime As SYSTEMTIME, _
ByRef lpFileTime As FILETIME) As Long
Public Declare Function LocalFileTimeToFileTime Lib "kernel32.dll" ( _
ByRef lpLocalFileTime As FILETIME, _
ByRef lpFileTime As FILETIME) As Long
Public Declare Function CloseHandle Lib "kernel32.dll" ( _
ByVal hObject As Long) As Long
Public Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" ( _
ByVal hFindFile As Long, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32.dll" ( _
ByVal hFindFile As Long) As Long
Public Declare Function SetWindowPos Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Public Const HWND_TOPMOST = -1
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public Const SM_CXFULLSCREEN = &H10
Public Const SM_CYFULLSCREEN = &H11
Public Const GENERIC_WRITE = &H40000000
Public Const OPEN_EXISTING = 3&
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const BFFM_SETSELECTION = &H466
Public Const BFFM_INITIALIZED = &H1
Public Const MAX_PATH = 260&
Public Const INVALID_HANDLE_VALUE = -1&
Public Enum FILE_ATTRIBUTE
FILE_ATTRIBUTE_READONLY = &H1
FILE_ATTRIBUTE_HIDDEN = &H2
FILE_ATTRIBUTE_SYSTEM = &H4
FILE_ATTRIBUTE_DIRECTORY = &H10
FILE_ATTRIBUTE_ARCHIVE = &H20
FILE_ATTRIBUTE_NORMAL = &H80
FILE_ATTRIBUTE_TEMPORARY = &H100
End Enum
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Public 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
Public Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Public Type InfoT
hwnd As Long
Root As Long
DisplayName As Long
Title As Long
Flags As Long
FName As Long
lParam As Long
Image As Long
End Type
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Enum BIF_Flag
BIF_RETURNONLYFSDIRS = &H1
BIF_DONTGOBELOWDOMAIN = &H2
BIF_STATUSTEXT = &H4
BIF_RETURNFSANCESTORS = &H8
BIF_EDITBOX = &H10
BIF_VALIDATE = &H20
BIF_NEWDIALOGSTYLE = &H40
BIF_BROWSEINCLUDEURLS = &H80
BIF_BROWSEFORCOMPUTER = &H1000
BIF_BROWSEFORPRINTER = &H2000
BIF_BROWSEINCLUDEFILES = &H4000
BIF_SHAREABLE = &H8000
End Enum
Public sBrowseInitDir As String
' **************************************************************
' Modul: ChangeFiledate Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Sub prcChangeFiletime(strFilename As String, strFoldername As String)
Dim udtFileTime1 As FILETIME, udtFileTime2 As FILETIME
Dim udtFileTime3 As FILETIME, udtFileTimeNew As FILETIME
Dim udtLocalTime As FILETIME, udtSystemTime As SYSTEMTIME
Dim dtmNewFiletime As Date, lngHandle As Long
Dim dtmDate As Date, dmtTime As Date
Dim strTempDate As String, strTempTime As String
On Error GoTo err_exit
strTempDate = Mid$(strFilename, InStr(strFilename, "'") + 1)
strTempDate = Left$(strTempDate, InStr(strTempDate, " ") - 1)
dtmDate = CDate(Right$(strTempDate, 2) & "." & _
Mid$(strTempDate, 5, 2) & "." & Left$(strTempDate, 4))
strTempTime = Mid$(strFilename, InStr(strFilename, " ") + 1)
strTempTime = Left$(strTempTime, 8)
strTempTime = Replace(strTempTime, ".", ":")
dmtTime = CDate(strTempTime)
dtmNewFiletime = dtmDate + dmtTime
udtSystemTime.wYear = Year(dtmNewFiletime)
udtSystemTime.wMonth = Month(dtmNewFiletime)
udtSystemTime.wDay = Day(dtmNewFiletime)
udtSystemTime.wDayOfWeek = Weekday(dtmNewFiletime)
udtSystemTime.wHour = Hour(dtmNewFiletime)
udtSystemTime.wMinute = Minute(dtmNewFiletime)
udtSystemTime.wSecond = Second(dtmNewFiletime)
udtSystemTime.wMilliseconds = 0
SystemTimeToFileTime udtSystemTime, udtLocalTime
LocalFileTimeToFileTime udtLocalTime, udtFileTimeNew
lngHandle = CreateFile(strFoldername & strFilename _
, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, _
ByVal 0&, OPEN_EXISTING, 0&, 0&)
SetFileTime lngHandle, udtFileTimeNew, udtFileTimeNew, udtFileTimeNew
CloseHandle lngHandle
err_exit:
End Sub
' **************************************************************
' Modul: GetFile Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Sub prcGetFilesInFolder(ByRef strFolderPath As String, ByRef strSearch As String)
Dim udtWFD As WIN32_FIND_DATA
Dim lngSearch As Long
lngSearch = FindFirstFile(strFolderPath & strSearch, udtWFD)
If lngSearch <> INVALID_HANDLE_VALUE Then
Do
If (udtWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> _
FILE_ATTRIBUTE_DIRECTORY Then
Call prcChangeFiletime(Left$(udtWFD.cFileName, _
InStr(udtWFD.cFileName, Chr(0)) - 1), strFolderPath)
End If
Loop While FindNextFile(lngSearch, udtWFD)
FindClose lngSearch
End If
End Sub
Code eingefügt mit: VisualBasic Code Jeanie