- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
参数...时,应用程序将在 Process Explorer 上显示为命令行: "c:\myapp\myapp.-6ren">
考虑以下命令行参数
"alfa" "beta" "4"
当我为我正在处理的项目指定运行>参数...时,应用程序将在 Process Explorer 上显示为命令行:
"c:\myapp\myapp.exe" "alfa" "beta" "4"
ParamCount 显示 4 个参数。但是,当我从启动器应用程序(执行访问控制)启动相同的可执行文件时,Process Explorer 显示:
"alfa" "beta" "4"
ParamCount 显示 3 个参数。命令行是从启动器应用程序中提取的。理论上它是可行的,因为当从启动器启动时,应用程序可以完美地工作。从 IDE 启动时,它尝试对上面的 "4"
执行 StrToInt,但仅检索 "beta"
参数。
启动器应用程序的示例代码:
var
StartupInfo: TSTARTUPINFO;
ProcessInfo: PROCESS_INFORMATION;
CurrentDirPath: String;
begin
Result := 0;
ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
StartupInfo.cb := SizeOf(StartupInfo);
DirCorrente := ExtractFilePath(sExe);
if CreateProcess(PChar(sExe), PChar(sParam), nil, nil, true,
NORMAL_PRIORITY_CLASS, nil, PChar(CurrentDirPath),
StartupInfo, ProcessInfo) then
sParam的内容是上面的命令行参数,sExe是可执行路径。为什么会出现这种情况?
注意:我已经设计了如何更改命令行参数解释,使其对于这种边缘情况保持稳健 - 这里的要点是为什么 这种情况就会发生。
最佳答案
您的启动程序未正确调用CreateProcess
。考虑一下 the documentation 的摘录(强调):
If both lpApplicationName and lpCommandLine are non-NULL, the null-terminated string pointed to by lpApplicationName specifies the module to execute, and the null-terminated string pointed to by lpCommandLine specifies the command line. The new process can use GetCommandLine to retrieve the entire command line. Console processes written in C can use the argc and argv arguments to parse the command line. Because argv[0] is the module name, C programmers generally repeat the module name as the first token in the command line.
忽略有关“C 程序员”的内容;它适用于为 Windows 编写程序的每个人,无论使用何种语言。
您的启动器正在为 lpApplicationName 和 lpCommandLine 参数提供值,但它不遵循将程序文件名重复作为命令行中第一个参数的约定。 Delphi 的 ParamStr
和 ParamCount
函数知道遵循约定,因此它们跳过命令行上的第一个标记。如果调用者没有遵循约定,那么接收者最终会认为预期的第二个参数实际上是第一个,第三个参数实际上是第二个,依此类推。
关于delphi - 为什么当应用程序由 IDE 与启动器启动时,命令行参数的数量会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236632/
Ubuntu的启动器,相当于win系统的任务栏,有的同学习惯了隐藏,因为这可以节省大量的显示空间,特别是多浏览器并列的情况下,这点空间显示很重要,但更多的是个人习惯,下面图文说一下Ubuntu的启动
在我的 Mac 上,我尝试在 Python Launcher 中默认打开一个 Python 脚本。 我左键单击脚本并选择“打开方式”,然后选择启动器。每次我执行此操作时,都会弹出Terminal,启动
我创建了一个用作启动器的应用程序。在该应用程序中,我打开了各种其他应用程序。在该应用程序中,我想清除其他应用程序的所有数据(即登录详细信息、搜索历史记录),单击按钮即可删除。 PackageManag
我用 C# 编写了一个可移植程序,它具有某些依赖项(.NET Framework、Visual C++ 可再发行版等),可以在 Windows XP SP3 及更高版本上运行。 正因为如此,该程序需要
我的目标是将我的应用程序设置为华为设备上的默认启动器。 1 - 说明: 1.1 - 当前情况: 我已经能够: 检查我的应用是否是默认启动器 显示“启动器选择器”(带有“使用一次”/“始终”选项) 这一
我正在构建一个 Android 启动器,但在尝试将已安装的应用程序添加到 GridView 时不断崩溃。 我正在尝试在 GridView 中添加已安装应用程序的网格。 我的 GridView 代码是
启动器 Activity 未启动,在 Android Studio 中按下“运行”按钮时会崩溃。虽然那里没有太多代码,但仍然如此。我已将 logcat 粘贴到其下方,将我带到 setContentVi
我最近为 LWJGL 程序创建了一个启动器,它下载 LWJGL JAR 和 native 、Slick JAR 以及该程序的主 JAR(所有这些都可以在全局变量中配置),并且我想分发它,以便其他人开发
我正在为 Android 开发主屏幕启动器应用程序。 现在,如果用户已经在主屏幕上, 当用户按下主页按钮时,我想要一个自定义操作。 我知道一些其他的启动器,可以覆盖主页按钮, 例如 Go Launch
我想使用我正在使用的普通应用程序作为启动器,因为它是唯一在设备上运行的应用程序。我必须向我的应用添加什么? 谢谢,雅尼克 最佳答案 使用这个 intent 过滤器:
假设有两个 Activity : 1. Activity A(启动器 Activity ) 2. Activity B 当从 Activity A启动 Activity B时,我完成了 Activit
我正在开发一个 Android 业务应用程序,它将托管在私有(private) channel 上。我们想使用自动更新应用程序,问题是: 这是一个 laucher(安装后设置为默认值) 有kiosk功
历史上一直存在“如何在没有主方法的情况下启动应用程序”问题,大多数问题的表述都是“你不能”。我注意到现在只需扩展 Application 即可启动 JavaFX 应用程序。我一直在使用类似于 Appl
“如何在没有 main 方法的情况下启动应用程序”问题的历史一直存在,大多数都是“你不能”这样的问题。我注意到现在如何通过扩展 Application 即可启动 JavaFX 应用程序。我一直在使用类
我想学习自定义 android 启动器,我不知道如何开始,你能给我一些建议,一些博客链接或其他示例等等。 最佳答案 最好的办法是先查看 Google 提供的示例启动器。您可以在 SDK 文件夹中找到它
我只是在制作一个演示应用程序,我需要为启动器 activity 和应用程序名称的标签设置不同的文本。 当我将启动器 Activity 标签名称设置为 Login 时,它会显示相同的应用程序名称。是否可
我正在编写 angular 2 应用程序并尝试使用 phantomJS 启动器在 Gitlab CI 上设置测试。在所有测试通过后,确定 phantomJS 启动器将永远保持事件状态(http://i
如果您要安装的主屏幕应用程序不允许您访问系统设置屏幕(转到管理应用程序),也不允许您启动应用程序(例如市场应用程序或第 3 方安装/unistallers),有没有办法卸载这样的应用程序? 我知道 A
我遇到了这个问题。我创建了一个新的 xml 布局(启动画面)并在 list 中将其设置为 Launcher 类别。我之前做过很多次,但以前从未发生过。 当 MainActivity 是 LAUNCHE
我想在我的 JupyterLab Launcher 中添加一些自定义内容。这是新用户看到的第一个页面,我想告诉他们这个环境的细节和内容的链接。有点像这样: Launcher's code很简单,我可以
我是一名优秀的程序员,十分优秀!