我试图在Windows 8.1 ,以实现自定义ShellExtension。研究发现,真正的好 SharpShell教程
I tried to implement a custom ShellExtension in Windows 8.1. Found that really good SharpShell tutorial.
[ComVisible(true)]
[COMServerAssociation(AssociationType.AllFiles)]
public class CountExtProvider : SharpContextMenu
{
protected override bool CanShowMenu()
{
// We will always show the menu.
return true;
}
protected override ContextMenuStrip CreateMenu()
{
// Create the menu strip.
var menu = new ContextMenuStrip();
// Create a 'count lines' item.
var itemCountLines = new ToolStripMenuItem
{
Text = "Count Lines"
};
// When we click, we'll call the 'CountLines' function.
itemCountLines.Click += (sender, args) => CountLines();
// Add the item to the context menu.
menu.Items.Add(itemCountLines);
// Return the menu.
return menu;
}
private void CountLines()
{
// Builder for the output.
var builder = new StringBuilder();
// Go through each file.
foreach (var filePath in SelectedItemPaths)
{
// Count the lines.
builder.AppendLine(string.Format("{0} - {1} Lines",
Path.GetFileName(filePath), File.ReadAllLines(filePath).Length));
}
// Show the ouput.
MessageBox.Show(builder.ToString());
}
}
我在的Windows 8.1 RTM 64 环境,所以我改变了我的构建plattform到x64的的Visual Studio 2013 RC 。增加了密钥文件让我签字* .dll文件。 但是,如果我想注册我的* .dll没有happends:
I am in a Windows 8.1 RTM x64 environment, so I changed my build plattform to x64 in Visual Studio 2013 RC. Added a Key-File to sign my *.dll. But if I want to register my *.dll nothing happends:
regasm ShellExtensions.dll
在命令行称注册成功,但在上下文菜单中没有该项。 我在做什么错在这里?这是否适用于Windows 8.1没有更多?
The command line says registering was successful but in the context menu there is no entry. What I am doing wrong here? Does this work with Windows 8.1 no more?
我在使用了同样的问题 regasm.exe
。
此外,还有很多事情通过 regasm
注册组件时,提了。
例如,你必须使用regasm.exe的64位/ x86版本,这取决于你的系统。
I had the same problem while using regasm.exe
.
Furthermore there are many things to mention when registering an assembly through regasm
.
For example you have to use the x64/x86 version of the regasm.exe, depending on your system.
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ regAsm.exe
86: C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ regAsm.exe
x64: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regAsm.exe
x86: C:\Windows\Microsoft.NET\Framework\v4.0.30319\regAsm.exe
有这么多问题,我切换到 ServerManager.exe
,这是SharpShell工具的一部分。它可以下载在项目页面。
用法很简单:
After having so many problems, I switched to the ServerManager.exe
, which is part of the SharpShell Tools. It can be downloaded on the project page.
The usage is quite easy:
重新启动Windows资源管理器,你应该做的(不是必需的)。
Restart the Windows Explorer and you should be done (not necessarily needed).
我完全同意的提到了笔者的点tutorial:
I fully agree with the point of the author of the mentioned tutorial:
服务器管理工具是我的preferred方法来 在安装/卸载和注册/注销,至少在 发展,是因为它可以让你安装并注册为独立的 脚步。它也将让您指定不管你是 安装/卸载等32位或64位模式。
The Server Manager Tool is my preferred approach for installing/uninstalling and registering/unregistering, at least during development, because it lets you install and register as separate steps. It will also let you specify whether you're installing/uninstalling etc in 32 bit or 64 bit mode.
上一篇:获取设备的Android SDK版本的命令行命令行、版本、设备、oid
下一篇:传递的ArrayList<双>从一个活动在Android上另一个活动LT、ArrayList、Android、GT