我要创建一个将在后台运行的桌面应用程序,这意味着没有可见的窗口,我想要一个名为“上传文本”的选项,以便在用户右键单击文件时显示。
有人能指出我正确的方向吗?我还必须确保如果有人想在任何时候卸载程序,那么shell修改也会干净地消除。
该应用程序将运行Windows XP,Windows Vista和Windows 7.这些操作系统在处理我的shell难题方面有何不同?
答案 0 :(得分:4)
这是一个shell扩展。您已使用C#标记标记了此问题;你应该知道writing shell extensions in a managed language is strongly discouraged:
不幸的是,非托管C ++确实如此 去这里的唯一途径。
编写进程内shell扩展 在托管代码中实际上非常 因为它有危险的事情要做 注入您的托管的效果 代码(和.NET Framework) 机器上的每个应用程序 有一个文件打开对话框。
出现问题的原因只有一个 .NET Framework的版本可以 在任何给定时间加载进程 (其他共享组件,如java 和msxml具有相同的属性和 因此同样的限制)。
如果你编写shell扩展名 使用2.0 .NET Framework和 使用1.1 .NET构建的应用程序 Framework使用文件打开对话框, 你的shell扩展会失败,因为 它无法在早期版本上运行。 如果你的事情变得更糟 shell-extension设法加载 在另一个过程中 应用程序托管代码:你的 延期可能迫使现有的 应用程序到不同的运行时 版本比预期的版本 并导致它失败。
由于这些问题,我们强烈反对 建议不要使用任何 每个进程的单实例运行时或 库(例如.NET Framework, 进程内shell中的java或msxml) 扩展
尽管如此,人们已经做到了。
答案 1 :(得分:1)
您可以将您的应用添加到SendTo文件夹。
答案 2 :(得分:0)
使用SendTo的独立程序怎么样?
将exe安装到“Program Files \ mycompany \ myprogram”,并将exe的快捷方式安装到SendTo文件夹中。然后,当用户右键单击文件,选择SendTo,然后选择您的程序时,您的exe将由Windows执行,文件名的完整路径将通过argv [1]传递。如果他们选择n个文件,他们将在argv [1] .. argv [n]。
如果您希望程序不可见,请不要显示默认表单。您可以选择在托盘中放置一个图标,以便用户双击它以查看上载进度。当argv [1]的上传完成后,处理argv [2] ... argv [n]如果它们存在并退出。要彻底卸载,请从SendTo文件夹中删除程序和快捷方式。