- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
简而言之,我正在为仿真器 MAME 编写一个前端,作为对 WPF 和 C# 的研究。
GUI 已设置,它正在正确读取 cfg,除了实际启动 MAME 之外一切正常。
在命令行 (Windows 7) 中,我可以键入以下内容并让模拟器正常启动。
c:\MAME\Emulator\mame.exe mslug.zip
这将完全按照设计启动模拟器,没有任何问题。但是我已经尝试了以下所有方法。
Process Mame = new Process(emulatorPath);
Mame.StartInfo.Arguments = romSelected;
Mame.Start();
我尝试了上面的变量和 put Mame.StartInfo.Arguments = "mslug.zip"
ProcessStartInfo Mame = new ProcessStartInfo(emulatorPath);
Mame.Arguments = romSelected;
Process.Start(Mame);
我也对变量进行了尝试,并将“mslug.zip”放在它的位置。
最后我尝试了以下方法。
Process.Start(@"c:\Mame\emulator\mame.exe", "mslug.zip");
并且它的行为与之前的尝试相同。
如果我不尝试向它传递参数,程序会正常启动,只是告诉我没有 rom。上述任何传递参数的方法都会导致快速命令提示符显示与 rom 的 zip 文件为空时显示的信息相同的信息。
从我读到的关于 Process.Start 等的内容来看,我在上面输入的内容应该等同于打开命令行并输入我开始这篇文章时使用的命令。但如果是这样的话,那么这应该没有问题。我不确定我是否做错了什么,或者是否有更好的方法来解决这个问题。
注意:我还浏览了 Windows GUI 并创建了 mame.exe 的快捷方式,并编辑了它的属性以将 mslug.zip 作为参数传递,它也能正常工作,因此不需要通过据我所知,命令行。
顺便说一句,我在应用程序的图形用户界面中有调试文本框,这些文本框使用我的代码中使用的变量进行更新,以验证变量是否正确。
更新:
我想补充一点,该程序(对于那些不熟悉的人)依赖于您尝试启动的 rom 的文件名。意味着传递参数 mslug.zip 会导致程序转到它自己的 rom 目录(当前为 C:\mame\emulator\roms)并搜索 mslug.zip。我可以从系统中的任何目录运行该命令并获得相同的结果。我也可以像
c:\mame\emulator\mame.exe c:\mame\emulator\roms\mslug.zip
无论我在哪里运行它,它都可以正常工作。我已经在我的代码中尝试过,既通过将路径作为变量传递,也通过将它们像
string romSelected = @"c:\mame\emulator\roms\mslug.zip";
两者都以同样的方式失败。
最佳答案
您使用的代码工作正常。它确实向程序发送了正确的参数。毫无疑问。
一些可能出错的事情:
mame
正在寻找它的地方(您可以尝试使用一个不存在的文件名命令行作为测试。如果错误相同,则可能找不到文件。尝试使用文件的完整路径);作为Sinatr建议,您可以使用 Directory.SetCurrentDirectory
设置当前工作目录.请注意,该程序的当前工作目录也会受到影响,因此您可能需要考虑自己在做什么。
你最好设置你启动进程的工作目录,使用Process.WorkingDirectory
.
关于c# - Process.Start 和 Process.StartInfo 没有正确传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347810/
Github:https://github.com/jjvang/PassIntentDemo 我一直在关注有关按 Intent 传递对象的教程:https://www.javacodegeeks.c
我有一个 View ,其中包含自动生成的 text 类型的 input 框。当我单击“通过电子邮件发送结果”按钮时,代码会将您带到 CalculatedResults Controller 中的 Em
我有一个基本的docker镜像,我将以此为基础构建自己的镜像。我没有基础镜像的Dockerfile。 基本上,基本镜像使用两个--env arg,一个接受其许可证,一个选择在容器中激活哪个框架。我可以
假设我想计算 2^n 的总和,n 范围从 0 到 100。我可以编写以下内容: seq { 0 .. 100 } |> Seq.sumBy ((**) 2I) 但是,这与 (*) 或其他运算符/函数不
我有这个网址: http://www.example.com/get_url.php?ID=100&Link=http://www.test.com/page.php?l=1&m=7 当我打印 $_G
我想将 window.URL.createObjectURL(file) 创建的地址传递给 dancer.js 但我得到 GET blob:http%3A//localhost/b847c5cd-aa
我想知道如何将 typedef 传递给函数。例如: typedef int box[3][3]; box empty, *board[3][3]; 我如何将 board 传递给函数?我
我正在将一些代码从我的 Controller 移动到核心数据应用程序中的模型。 我编写了一个方法,该方法为我定期发出的特定获取请求返回 NSManagedObjectID。 + (NSManagedO
为什么我不能将类型化数组传递到采用 any[] 的函数/构造函数中? typedArray = new MyType[ ... ]; items = new ko.observableArray(ty
我是一名新的 Web 开发人员,正在学习 html5 和 javascript。 我有一个带有“选项卡”的网页,可以使网页的某些部分消失并重新出现。 链接如下: HOME 和 JavaScript 函
我试图将对函数的引用作为参数传递 很难解释 我会写一些伪代码示例 (calling function) function(hello()); function(pass) { if this =
我在尝试调用我正在创建的 C# 项目中的函数时遇到以下错误: System.Runtime.InteropServices.COMException: Operation is not allowed
使用 ksh。尝试重用当前脚本而不修改它,基本上可以归结为如下内容: `expr 5 $1 $2` 如何将乘法命令 (*) 作为参数 $1 传递? 我首先尝试使用“*”,甚至是\*,但没有用。我尝试
我一直在研究“Play for Java”这本书,这本书非常棒。我对 Java 还是很陌生,但我一直在关注这些示例,我有点卡在第 3 章上了。可以在此处找到代码:Play for Java on Gi
我知道 Javascript 中的对象是通过引用复制/传递的。但是函数呢? 当我跳到一些令人困惑的地方时,我正在尝试这段代码。这是代码片段: x = function() { console.log(
我希望能够像这样传递参数: fn(a>=b) or fn(a!=b) 我在 DjangoORM 和 SQLAlchemy 中看到了这种行为,但我不知道如何实现它。 最佳答案 ORM 使用 specia
在我的 Angular 项目中,我最近将 rxjs 升级到版本 6。现在,来自 npm 的模块(在 node_modules 文件夹内)由于一些破坏性更改而失败(旧的进口不再有效)。我为我的代码调整了
这个问题在这里已经有了答案: The issue of * in Command line argument (6 个答案) 关闭 3 年前。 我正在编写一个关于反向波兰表示法的 C 程序,它通过命
$(document).ready(function() { function GetDeals() { alert($(this).attr("id")); } $('.filter
下面是一个例子: 复制代码 代码如下: use strict; #这里是两个数组 my @i =('1','2','3'); my @j =('a','b','c'); &n
我是一名优秀的程序员,十分优秀!