我想在myplayer.exe中运行一个mp3文件(我已用c#编写和开发)。 但我收到此错误 - abc.mp3不是有效的Win32应用程序。
我使用此代码获取文件路径 - ...
if
((AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null)
&&
(AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length>0))
{
string fname = "No filename given";
try
{
fname = AppDomain.CurrentDomain.SetupInformation.
ActivationArguments.ActivationData[0];
Uri uri = new Uri(fname);
fname = uri.LocalPath;
this.Properties["ArbitraryArgName"] = fname;
}
catch (Exception ex)
{ }
base.OnStartup(e);
}
app.xaml.cs中的上述代码
和在mainWindow.xaml.cs中,这是我用过的代码!
public CubeWindow()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainContainer_Loaded);
}
void MainContainer_Loaded(object sender, RoutedEventArgs e)
{
if(System.Windows.Application.Current.Properties["ArbitraryArgName"] != null)
{
string fname=System.Windows.Application.Current.
Properties["ArbitraryArgName"].ToString();
me.Source = new Uri(fname, UriKind.RelativeOrAbsolute);
me.Play(); //me is the mediaelement
}
}
请让我知道更正此..以及此错误的原因! 提前致谢! :)
答案 0 :(得分:1)
从您所得到的错误来看,似乎您正在尝试执行MP3。那不行。
当您尝试通过双击打开文件(例如,txt文件)时,Windows会检查注册表以查找该文件的默认应用程序 - 在大多数设置中,这将是记事本。然后发送此命令:
"<System32 Directory>\Notepad.exe" <filename>
或
"C:\Windows\System32\Notepad.exe" "C:\Users\user\Desktop\test1.txt"
所以第一个命令行参数是文件名。
长话短说:如果您的程序是通过尝试在Windows资源管理器中打开MP3来启动的,则需要获取并保存命令行参数以供项目中某处使用。
为此,您可以使用Environment.GetCommandLineArgs()
或将static void main
中的Program.cs
传递给您的第一个表单的构造函数。
答案 1 :(得分:0)