Post by just me » 16 Jul 2016, 04:51
Moin Johnny R,
zumindest ab Win Vista kann man sich das auch selbst anschauen:
Code: Select all
#NoEnv
SetBatchLines, -1
FileName := "Fully qualified file name"
For Index, Stream In EnumFileStreams(FileName)
MsgBox, 0, Stream #%Index%, % "Size: " . Stream.Size . "`nName: " . Stream.Name
EnumFileStreams(FileName) { ; msdn.microsoft.com/en-us/library/aa364424(v=vs.85).aspx
; FileName : The fully qualified file name.
Streams := []
If (DllCall("GetVersion", "UChar") < 6) ; requires Vista+ (not sure about this)
Return False
VarSetCapacity(FSD, 600, 0) ; WIN32_FIND_STREAM_DATA
HFIND := DllCall("FindFirstStreamW", "WStr", FileName, "Int", 0, "Ptr", &FSD, "UInt", 0, "Ptr")
If (HFIND <> -1) {
; Uncomment to add the main stream of the file (i.e. the file itself)
; Streams.Insert({Size: NumGet(&FSD, 0, "UInt64"), Name: StrGet(&FSD + 8, 296, "UTF-16")})
While DllCall("FindNextStreamW", "Ptr", HFIND, "Ptr", &FSD)
Streams.Insert({Size: NumGet(&FSD, 0, "UInt64"), Name: StrGet(&FSD + 8, 296, "UTF-16")})
DllCall("FindClose", "Ptr", HFIND)
Return Streams
}
Return False
}
Das Editieren ist etwas problematischer. Man muss ja wissen, was drinsteht. Im Fall von
:OECustomProperty (s.o.) sind das anscheinend Binärwerte, über deren Bedeutung ich nichts gefunden habe.
:offtopic:
Moin Johnny R,
zumindest ab Win Vista kann man sich das auch selbst anschauen:
[code]#NoEnv
SetBatchLines, -1
FileName := "Fully qualified file name"
For Index, Stream In EnumFileStreams(FileName)
MsgBox, 0, Stream #%Index%, % "Size: " . Stream.Size . "`nName: " . Stream.Name
EnumFileStreams(FileName) { ; msdn.microsoft.com/en-us/library/aa364424(v=vs.85).aspx
; FileName : The fully qualified file name.
Streams := []
If (DllCall("GetVersion", "UChar") < 6) ; requires Vista+ (not sure about this)
Return False
VarSetCapacity(FSD, 600, 0) ; WIN32_FIND_STREAM_DATA
HFIND := DllCall("FindFirstStreamW", "WStr", FileName, "Int", 0, "Ptr", &FSD, "UInt", 0, "Ptr")
If (HFIND <> -1) {
; Uncomment to add the main stream of the file (i.e. the file itself)
; Streams.Insert({Size: NumGet(&FSD, 0, "UInt64"), Name: StrGet(&FSD + 8, 296, "UTF-16")})
While DllCall("FindNextStreamW", "Ptr", HFIND, "Ptr", &FSD)
Streams.Insert({Size: NumGet(&FSD, 0, "UInt64"), Name: StrGet(&FSD + 8, 296, "UTF-16")})
DllCall("FindClose", "Ptr", HFIND)
Return Streams
}
Return False
}[/code]
Das Editieren ist etwas problematischer. Man muss ja wissen, was drinsteht. Im Fall von [c]:OECustomProperty[/c] (s.o.) sind das anscheinend Binärwerte, über deren Bedeutung ich nichts gefunden habe.