首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c#创建windows-7库

使用c#创建windows-7库
EN

Stack Overflow用户
提问于 2011-11-25 17:03:13
回答 3查看 1.4K关注 0票数 0

Windows-7引入了虚拟文件夹的概念,称为“库”。

我正在使用我的自定义操作实现一个库。约束是,我必须坚持使用.NET版本2 :(

环顾四周,我没有找到任何本机(c/C++) API来做这件事。我计划一旦获得原生API,就使用Interop (p-Invoke)来创建一个库。

可以指向可能有帮助的链接或文档。如果我可以通过c# (使用.NET v2)直接做到这一点,那就太好了。

谢谢你,约翰

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-25 17:18:02

“虚拟文件夹”的概念在Windows7之前就已经存在了,AFAIK刚刚被“改进”了……你写下你想要用你自己的自定义处理程序来做这件事...

如果您想实现这样的“虚拟文件夹”并将其集成到Windows中,以便其他应用程序可以将其用作“虚拟文件夹”,则:

实现和安装“外壳扩展”(基本上是一堆COM接口)的

备注:如果你运行的系统没有.NET 4,微软建议不要使用.NET,因为旧版本的固有限制是一个进程不能同时运行多个框架版本。根据操作系统等情况,建议使用C/C++实现此功能。

即使使用.NET 4,正如评论中指出的那样,代码注入问题仍然存在-例如,如果任何.NET 4之前的.NET应用程序和/或与您的shell扩展不同的.NET版本访问文件打开对话框,它可能/将失败。

要绕过该,您需要实现一个本机代理DLL,它被加载到相应的进程(如Windows Explorer)中,并通过与您的.NET实现进行通信。

在这种特定情况下,您需要构建一个实现IShellLibrary的外壳扩展。

抛开shell扩展的实现不谈,这真的是一项艰巨的工作。一些信息/示例/源代码/库等的链接:

  • http://msdn.microsoft.com/en-us/library/windows/desktop/bb774328%28v=VS.85%29.aspx
  • http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx
  • http://www.ssware.com/ezshell/ezshell.htm
  • http://www.codeproject.com/KB/shell/ratingcolumn.aspx?q=shell+extensions+c%23
  • http://www.codeproject.com/KB/shell/shellextguideindex.aspx
  • http://www.nirsoft.net/utils/shexview.html
  • http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/1428326d-7950-42b4-ad94-8e962124043e/

与Windows7库交互的请参阅http://support.microsoft.com/kb/976027 http://www.codeproject.com/KB/miscctrl/Windows7APICodePack.aspxhttp://archive.msdn.microsoft.com/WindowsAPICodePack http://support.microsoft.com/kb/976027 http://www.codeproject.com/KB/cs/DDW7LibrariesLite.aspx。有些需要.NET 3.5,但因为3.5只是2.0加上一些额外的程序集,所以它可能是一个选择……

票数 3
EN

Stack Overflow用户

发布于 2011-11-25 17:16:51

似乎最相关的MSDN主题是:

  • Inside Windows 7:Introducing Libraries
  • Windows Libraries
  • Windows 7 Libraries: Developer Resources

库功能是通过COM公开的,因此不需要P/invoke。

然而,由于库只存在于Windows7中,而且Windows7将.net 3.5作为操作系统的一部分,我建议您将应用程序的这一部分放在.net 3.5程序集中。事实上,API CodePack程序集已经为您完成了这项工作。

当然,由于CodePack也是作为源代码提供的,因此您可以从中提取必要的部分,并执行必要的操作,以便针对.net 2.0构建它。

票数 4
EN

Stack Overflow用户

发布于 2011-11-25 17:10:55

在谷歌上简单搜索一下,发现了这个:How to programmatically manipulate Windows 7 shell libraries

如果api示例没有用处,应该可以导出c++示例中使用的C#方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8266736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档