mciSendStringA liefert falsche Position und Länge unter Vista

08/04/2010 - 20:47 von Thomas Wendt | Report spam
Hallo,

unter Vista liefert mciSendStringA eine falsche Position und Liedlànge.

[Code:]
Private Declare Function mciSendString Lib "winmm.dll" Alias
"mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString
As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

strDeviceID = "MyMP3File"
strFile = "Musik.mp3"

mciSendString "open " & strFile & "MPEGVideo alias " & strDeviceID, 0, 0, 0

mciSendString "status " & strDeviceID & " time format", strBuffer,
Len(strBuffer), 0

'Hiermit wird die Zeitangabe in Millisekunden gesetzt
mciSendString "set " & strDeviceID & " time format milliseconds", 0, 0, 0

'Hiermit wird die aktuelle Position ermittelt
mciSendString "status " & strDeviceID & " position", strBuffer,
Len(strBuffer), 0

'Hiermit wird die Gesamtspielzeit ermittelt
mciSendString "status " & strDeviceID & " length", strBuffer,
Len(strBuffer), 0

In strBuffer stehen die Millisekunden drinn.
Unter Windows XP SP3 wird mit die korrekte Spielzeit und Position
angezeigt. Unter Vista ist der Wert fast doppelt so groß.

Was mache ich verkehrt?

Windows XP und Windows Vista sind auf dem selben Rechner. Also gleiche
Hardware. Beides sind 64-Bit Betriebssysteme.

Unter Windows 2000 (anderer Rechner) wird die korrekte Zeit angezeigt.

Muss man ab Vista was beachten? Oder liegt es an der UAC?

Hat jemand ein Tipp für mich?

Danke und Gruß
Thomas
 

Lesen sie die antworten

#1 Helmut Meukel
08/04/2010 - 23:35 | Warnen spam
Hallo Thomas,

mein erster Gedanke war 64-Bit-Problem aber ganz so einfach ist es
wohl doch nicht, sonst hàtte es mit XP ja auch sein müssen wenn
XP auch 64-Bit ist, oder?

Ok, ich gebe zu ich stochere jetzt im Nebel herum:
mciSendStringA ist ja die Ansi-Version, Hast Du mal daran gedacht
es mit der Unicode-Version zu versuchen? Nur um zu sehen was Du
da als Ergebnis bekommst?

Vieleicht provoziert meine Antwort ja auch einen Experten zu einer
qualifizierteren Antwort. <gd+r>

Helmut.


"Thomas Wendt" schrieb im Newsbeitrag
news:
Hallo,

unter Vista liefert mciSendStringA eine falsche Position und Liedlànge.

[Code:]
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal
uReturnLength As Long, ByVal hwndCallback As Long) As Long

strDeviceID = "MyMP3File"
strFile = "Musik.mp3"

mciSendString "open " & strFile & "MPEGVideo alias " & strDeviceID, 0, 0, 0

mciSendString "status " & strDeviceID & " time format", strBuffer,
Len(strBuffer), 0

'Hiermit wird die Zeitangabe in Millisekunden gesetzt
mciSendString "set " & strDeviceID & " time format milliseconds", 0, 0, 0

'Hiermit wird die aktuelle Position ermittelt
mciSendString "status " & strDeviceID & " position", strBuffer,
Len(strBuffer), 0

'Hiermit wird die Gesamtspielzeit ermittelt
mciSendString "status " & strDeviceID & " length", strBuffer, Len(strBuffer),
0

In strBuffer stehen die Millisekunden drinn.
Unter Windows XP SP3 wird mit die korrekte Spielzeit und Position angezeigt.
Unter Vista ist der Wert fast doppelt so groß.

Was mache ich verkehrt?

Windows XP und Windows Vista sind auf dem selben Rechner. Also gleiche
Hardware. Beides sind 64-Bit Betriebssysteme.

Unter Windows 2000 (anderer Rechner) wird die korrekte Zeit angezeigt.

Muss man ab Vista was beachten? Oder liegt es an der UAC?

Hat jemand ein Tipp für mich?

Danke und Gruß
Thomas

Ähnliche fragen