“发送到”如何管理输入参数? (视窗)
Posted
技术标签:
【中文标题】“发送到”如何管理输入参数? (视窗)【英文标题】:How does "send to" manages input arguments? (Windows) 【发布时间】:2014-08-19 15:17:04 【问题描述】:背景:我想将我的应用程序添加到 windows 上下文菜单中,我通过在 windows 注册表中添加一个新键来完成此操作:
HKEY_CLASSES_ROOT\*\shell\myapp
HKEY_CLASSES_ROOT\*\shell\myapp\command
并将“命令”键的默认值分配给我的 exe 的位置,加上一个额外的参数:
value = "c:\users\john\myapp\myappexe.exe" "%1" arg1
它有效,我可以“右键单击”任何文件并使用该文件运行我的应用程序。当我尝试选择多个文件时出现问题,它打开的应用程序窗口与选择的文件一样多,我希望能够使用我的程序的一个实例处理所有输入。
我知道这可以通过创建 here、here、here 或 here 发布的 shell 扩展来解决。创建一个功能齐全的 shell 扩展超出了我的(小)项目的范围,我还没有找到我能理解的教程。
问题:我正在寻找解决方法,我发现从 Windows 中的“发送到”文件夹调用的程序能够处理多个文件,例如,如果我将这段代码的可执行文件 (c++ ) 在C:\Users\john\AppData\Roaming\Microsoft\Windows\SendTo
文件夹中,
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
for(int i=0;i<=argc;i++)
cout << argv[i] << endl;
return 0;
...选择一堆苍蝇,并将它们拖到可执行文件中,我将在一个窗口中获取所有选定文件的路径(发送到tutorial)。这是如何运作的?我可以使用此行为并将其应用于我的应用吗?
【问题讨论】:
【参考方案1】:一种方法是设计您的应用程序,以便任何新启动的实例检查预先存在的实例(您可以使用互斥锁来执行此操作),然后将命令行参数转发给该实例,封装在消息中某种。然后原始实例可以采取适当的行动。
【讨论】:
以上是关于“发送到”如何管理输入参数? (视窗)的主要内容,如果未能解决你的问题,请参考以下文章
如何将 URL 参数从 GWT 客户端发送到服务器端进行验证
如何使用来自 c# 的 MySQL 存储过程将表作为输入发送到存储过程?我有 T-SQL 工作