0
|
HX_unbanned · 技术社区 · 15 年前 |
![]() |
1
5
你能解释一下吗? 我 认为 如果用户双击“mydocument.ext”的文档图标,则可以执行操作1;如果用户键入,则可以执行操作2。
双击将使shell运行“open”动词,该动词在注册表中具有关联的“command string”。您最好将此命令字符串设置为…
…然后在运行时检查/doubleClicked标志。显然, 您无法阻止用户使用“/doubleClicked”选项键入命令,但这是shell的工作方式。 |
![]() |
2
1
正如罗迪所说,参数开关是我认为唯一可靠的解决方案。但是请注意,如果用户创建了自己的快捷方式,这可能不适合您的需要。 例如,如果用户创建的快捷方式在命令行中包含一些“文档”,您希望将其视为命令行调用还是“双击”。我猜是后者。 如果是前者,那么你可以在这里停止阅读。:) 但是如果 是 而后者,你可能需要投入更多的工作来(更)可靠地获得你想要的行为…… 这需要使用命令行开关来指示 命令行启动 ,而不是双击启动,因为有多种方法可以“有效地”双击,但只有一种方法可以从命令行运行某些内容——也就是说,使用命令行!(我认为“开始”菜单->运行…顺便说一下,是命令行启动。YMMV) 所以,如果是我,我会为应用程序创建一个特定于命令行的启动程序。命令行启动程序实际上是一个非常简单的代码位,它接受给定的命令行,并在调用实际应用程序可执行文件之前简单地附加一个附加参数: 例如 myapp参数1参数2 它简单地调用shellexecute,有效地: 迈阿普吉 PARAM1 PARAM2 /CMD 我自己也不会太担心有两个可执行文件,因为当用户通过GUI调用它时,他们更不关心代表你的“真实”应用程序的exe的实际名称,因为当然,它的GUI调用不涉及知道或需要知道名称。您的文件类型关联和快捷方式等都直接指向“real” MyAppGui.EXE 而不是 MyApp.EXE 您的命令行引用只是指导用户使用 MyApp.EXE 从命令行调用应用程序。 在应用程序中,如果找到命令行开关,那么它知道它是通过命令行启动程序启动的,否则它一定是双击/gui启动的。 就大多数用户而言,他们甚至不需要知道涉及两个exe。在任何情况下,如果用户发现了你的技术(无论你选择哪种技术),你必须接受,他们可以通过制造命令行来欺骗你,以达到他们想要的任何目的。 如果这对您很重要,那么命令行启动程序的方法可能会降低他们发现机制的可能性——知道有两个可执行文件还不够——他们还需要知道命令行启动程序添加的命令行开关——如果他们刚刚使用 MyAppGui.EXE 直接从命令行,不使用命令行启动程序 MyApp.EXE ,然后它仍然会像从GUI启动一样响应! 另一方面,使用开关指示 图形用户界面启动 必须将所需的开关置于“公共视图”上。 |