mciSendString API-Funktion Problem mit string
-
Ich habe ein Beispiel mit mciSendString und wollte dieses ausbauen damit die Länge der geöffneten Datei zurückgegeben wird. Dazu wird die Zahl als String zurückgegeben. Nun kommt einfach der bei der Initialisierung angegebene String, die Funktion erwartet ihn als Parameter aber schreibt anscheinend nichts hinein!? Hier der Code (Ausschnitte):
public bool Stop() //Das funktioniert { bool ret = false; if (mciSendString(string.Format("stop {0}", this._Alias), string.Empty, 0, IntPtr.Zero) == 0) { ret = mciSendString(string.Format("close {0}", this._Alias), string.Empty, 0, IntPtr.Zero) == 0; } return ret; } public string GetLength() //Hier meine Funktion welche nicht //funktioniert. Auf Überprüfung des // Rückgabewertes habe ich vorerst verzichtet. { string length = ""; mciSendString(string.Format("status {0} ", this._Alias+ " length"), length, 255, IntPtr.Zero); return length.ToString(); } [DllImport("winmm.dll")] private static extern int mciSendString(string lpCommand, string lpReturn, int nReturnLength, IntPtr callBack); [DllImport("kernel32")] private static extern int GetShortPathName(string lpLongPath, StringBuilder lpShortPath, int Buffer); } }
-
Audio- und Videowiedergabe mit MCI + Beispiel
http://www.mycsharp.de/wbb2/thread.php?postid=259669
-
Danke, habe das Beispiel heruntergeladen und verglichen aber weiss nicht wieso meine Version nicht funktioniert; vorallem wenn ich den String als "stringBuilder" deklariere wie in dem Beispiel reklamiert der Compiler
-
Leider sind unsere Glaskugeln momentan in Reparatur, du müsstest schon sagen, was der Compiler reklamiert.
-
Klar
Fehler 2-Argument: kann nicht von "System.Text.StringBuilder" in "string" konvertiert werden.
ich versuchte die folgende Zeile auch anzupassen bzw. separat einzufügen (um überladen zu werden, klappte aber nicht):[DllImport("winmm.dll")] private static extern int mciSendString(string lpCommand, string lpReturn, int nReturnLength, IntPtr callBack);
mit der "normalen" Stringklasse stimmt es soweit überein nur bleibt der String eben leer...
-
So sollte es gehen:
[DllImport("winmm.dll")] private static extern int mciSendString(string cmd, StringBuilder ret, int retLen, IntPtr hwnd);
-
Da habe ich das Problem dass bei Funktionen weiter oben im Code mittels StringBuilder Strings deklariert werden und diese Funktionen dann nicht mehr gehen. Kann man die DLL-Import-Anweisung lokal in einer Methode verwenden? Dann wäre es kein Problem mit 2 Unterschiedlichen...