Ave!
Ik heb een hele simpele CLI MP3 player gebouwd, maar om de 1 of andere vage reden krijg ik geen event wanneer hij klaar is met spelen.
De code:
De gebruikte build.bat:
Ik heb de DLL's in dezelfde map gezet btw.
Het probleem is dat het programma dus nooit in de AudioEnded method komt, terwijl dat wel zo hoort bij het Audio.Ending event. Oftewel: het Ending event wordt niet geraised, maar ik weet niet waarom
Heb andere voorbeeldcode gedownload en die werkt wel, met dezelfde compilerflags en dezelfde DLL's, dus het moet aan de code liggen. Ik kan me alleen niet voorstellen waaraan.
Bij voorbaat dank
Ik heb een hele simpele CLI MP3 player gebouwd, maar om de 1 of andere vage reden krijg ik geen event wanneer hij klaar is met spelen.
De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| using System;
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;
namespace MP3Play {
public class clMP3 {
[STAThread]
public static void Main(string[] Args) {
try {
clMP3Player t = new clMP3Player(Args[0]);
t.Play();
} catch(Exception E)
{
Console.WriteLine(E.Message);
}
Console.ReadLine();
}
}
public class clMP3Player
{
private Audio audio;
public clMP3Player(string FileName)
{
try {
Console.WriteLine("Opening.. {0}", FileName);
audio = new Audio(FileName);
Console.WriteLine("File loaded!");
Console.WriteLine("Duration: {0}", audio.Duration);
}
catch(Exception E)
{
Console.WriteLine(E.Message);
}
}
public void Play()
{
audio.Ending += new System.EventHandler(this.AudioEnded);
audio.Play();
Console.WriteLine("Playing mp3..");
}
private void AudioEnded(object sender, System.EventArgs e)
{
Console.WriteLine("Audio ended..");
if (audio != null)
{
Console.WriteLine("Do repeat!");
audio.Stop();
audio.Play();
}
}
}
} |
De gebruikte build.bat:
code:
1
2
3
4
5
6
7
8
9
10
11
| @ECHO OFF ECHO C# Windows Application Build - by M. Schlechter ECHO ----------------------------------------------- ECHO Setting PATH to include C# compiler.. SET PATH=%PATH%;C:\WINNT\Microsoft.NET\Framework\v1.1.4322 ECHO Compiling.. csc.exe /r:Microsoft.DirectX.dll /r:Microsoft.DirectX.DirectSound.dll /r:Microsoft.DirectX.AudioVideoPlayback.dll /target:exe /out:mp3play.exe *.cs |
Ik heb de DLL's in dezelfde map gezet btw.
Het probleem is dat het programma dus nooit in de AudioEnded method komt, terwijl dat wel zo hoort bij het Audio.Ending event. Oftewel: het Ending event wordt niet geraised, maar ik weet niet waarom
Heb andere voorbeeldcode gedownload en die werkt wel, met dezelfde compilerflags en dezelfde DLL's, dus het moet aan de code liggen. Ik kan me alleen niet voorstellen waaraan.
Bij voorbaat dank
[ Voor 3% gewijzigd door Lethalis op 09-04-2004 14:57 ]
Ask yourself if you are happy and then you cease to be.