/事/东西:

所以 - 像 - 最近我的一些问题,确定从哪个方向程序调用,如果在这两个时间参数是一样的运行。 我在runetime和准与程序的图标,我可以使用CMD来称呼它,但是,每当我doubleclikc上相关文件(图标),编程'只是打开,但不调用需要rotine因为我没有必要触发/属性/参数如果执行作出的DoubleClick,而不是运行...> appname.exe /事/东西。

可以得到简单的例子或理论上所有需要选用具有写功能等

目前,你可以猜到,我用ParamStr这/ ParamCount / blablabla / FindCMDLineSwitch /和其他一些功能... ...但仍然...:(

有帮助吗?

解决方案

你能解释一下?

我的认为的你要能够做到行动#1,如果对“mydocument.ext”,及行动#2的文件图标用户doubleclicks如果他类型

appname.exe mydocument.exe

双击将使壳运行“开放”动词,其具有在注册表相关联的“命令串”。最好的办法是设置此命令字符串像...

MyProgram.exe "%1" /doubleclicked

...,然后检查在运行时用于/ doubleclicked标志。明显, 有没有办法可以防止用户输入与“/ doubleclicked”选项的命令,但这是shell工作的方式。

其他提示

作为罗迪建议,参数开关是我认为唯一可靠的解决方案。但是请注意,如果用户创建他们自己的快捷方式(S),这可能不适合您的需求。

即。如果用户创建一个快捷方式,包括在命令行中一些“文件”,你想的是被作为命令行调用或“双击”处理。我的猜测是是后者。

如果是前者,那么你可以停止阅读这里。 :)

但是,如果它的后者,那么你可能需要把多一点的工作中(更)可靠地得到你想要的行为......

这将涉及使用命令行开关,以指示的命令行启动的,而不是双击启动,因为有多种方式来“有效地”双击,但只有一个方式来运行的东西在命令行 - 即使用命令行! (我认为开始菜单 - >运行...是一个命令行启动,顺便因人而异)

所以,如果是我,我会为应用程序创建一个命令行特定启动。命令行发射器实际上是代码一个非常简单的位,用于接收命令行它被赋予和简单地追加额外的参数,调用实际的应用程序可执行文件之前:

e.g。

<强> MyApp的参数1参数2

,其简单地与有效地调用的ShellExecute:

<强> myappgui 的param1 param2的 / CMD

因为用户是远与代表你的“真正的”应用程序调用它时通的GUI原因当然的,唐”的GUI调用exe文件的实际名称关心少我自己也不会太在意有两个可执行文件牛逼涉及知道,或需要知道,这个名字。您的文件类型关联和快捷方式等根本都直接指向了 “真正的” myappgui.exe ,而不是程序myapp.exe

和命令行简单地参考将用户定向到使用 MyApp.exe的可通过命令行调用应用程式。

在该应用程序,如果它发现该命令行开关则它知道它是通过命令行启动器应用启动,否则它必须是一个双击/ GUI发射。

至于大多数用户而言,他们甚至可能永远不会需要知道,有两个exe文件的参与。在任何情况下,你必须接受,如果/当用户发现你的技术 - 无论你选择哪一个 - 他们可以通过制造一个命令行来实现任何结束他们的愿望欺骗它

如果这对你很重要,在命令行启动程序的办法或许使得它有点不太可能,他们会发现机制 - 明知有两个可执行文件是不够的 - 他们也需要知道在命令行交换机您的命令行启动增加了 - 如果他们只是用 myappgui.exe 直接在命令行中,不使用命令行启动程序myapp.exe ,然后它仍然会如何应对就好像它是从GUI启动!

在另一方面,使用开关来指示 GUI发射必要把上的“公共视图”需要切换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top