In short my program plays a random embedded audio file when a timer runs out, is there a way to refer to the my.resources files as an array and use them that way rather than needing to know the exact file name of the resource?
+2
A:
I have not tried this on a windows application, but I had to do the same thing for a web application, and I used the following code to achieve that:
VB version:
' get a reference to the current assembly
Dim a = Assembly.GetExecutingAssembly()
' get a list of resource names from the manifest
Dim resNames = a.GetManifestResourceNames()
'Generate a random number
Dim randomNumber = YourRandomNumberGenerator()
'Get the file name using the randomNumber
Dim randomFileNameFromResource = resNames(randomNumber)
'Get the contents of the file:
Dim sr = New StreamReader(a.GetManifestResourceStream(randomFileNameFromResource))
Dim fileContent = sr.ReadToEnd()
C# version
// get a reference to the current assembly
var a = Assembly.GetExecutingAssembly();
// get a list of resource names from the manifest
var resNames = a.GetManifestResourceNames();
//Generate a random number
var randomNumber = YourRandomNumberGenerator();
//Get the file name using the randomNumber
var randomFileNameFromResource = resNames[randomNumber];
//Get the contents of the file:
var sr = new StreamReader(
a.GetManifestResourceStream(randomFileNameFromResource ));
var fileContent = sr.ReadToEnd();
I would think the position of the file in the array would change over time though if more embedded resources get added, but i guess it would not matter for you since you are picking a random one anyway.
Roberto Sebestyen
2009-07-13 03:12:20
Assembly, doesn't appear to exist directly in vb2005, however i found it i think My.Application.Info.LoadedAssemblies(0).GetFiles there, so you weren't too far off
Jim
2009-07-13 03:34:37
Ah OK thanks, I was using it on .NET Framework v3.5
Roberto Sebestyen
2009-07-13 03:37:52
A:
the correct answer for me in vb2005 is Reflection.Assembly.GetExecutingAssembly.GetManifestResourceNames() theres also a get stream function in there, thank you Roberto for that
Jim
2009-07-13 03:45:29