标签: shell-extensions

使用C#进行Windows shell扩展

我想写一个简单的Windows shell扩展来添加到上下文菜单,而C#是我最近使用的语言.它是shell扩展的一个不错的选择吗?接口是否易于使用?是否有额外的开销导致菜单弹出更慢?

任何人都有良好的入门指针?

c# windows-shell shell-extensions

37
推荐指数
3
解决办法
3万
查看次数

如何用C++编写shell扩展?

这似乎是一个常见的问题,但经过一些搜索后,我真的无法找到答案.这里有一篇文章:

http://www.codeproject.com/KB/shell/shellextguide1.aspx

但它适用于Visual Studio的旧版本.我正在使用VS 2008,所以说明和界面似乎与我所看到的不相符.

我想使用C++创建一个简单的shell扩展,为扩展名为.GZ的文件创建上下文菜单.当右键单击这些文件时,我应该能够单击我的上下文菜单项并在代码中进行回调以对该文件执行某种操作.

其他上下文菜单项将执行诸如生成无模式对话框之类的操作,以在执行某些操作之前接受用户输入.

从我所看到的,ATL用于此,但我从未使用过ATL,所以所有的对象类型和接口都让我很困惑.如果我有适当的教程或文档可供阅读,那就不会那么糟糕了.

谁能帮我吗?是不是有一些不是10年的教程?

c++ atl windows-shell shell-extensions

17
推荐指数
1
解决办法
5271
查看次数

使用pywin32的子菜单的Windows资源管理器上下文菜单

我正在尝试使用带有图标和子菜单的python添加一些shell扩展,但我很难比pywin32中的演示更进一步.我似乎无法通过搜索谷歌找到任何东西.

我相信我需要注册一个com服务器,以便能够根据右键单击文件/文件夹的位置和文件类型等更改子菜单中的选项.

# A sample context menu handler.
# Adds a 'Hello from Python' menu entry to .py files.  When clicked, a
# simple message box is displayed.
#
# To demostrate:
# * Execute this script to register the context menu.
# * Open Windows Explorer, and browse to a directory with a .py file.
# * Right-Click on a .py file - locate and click on 'Hello from Python' on
#   the context menu.

import pythoncom
from win32com.shell …
Run Code Online (Sandbox Code Playgroud)

python contextmenu pywin32 shell-extensions

16
推荐指数
1
解决办法
7695
查看次数

在Visual Studio 2010中创建Windows外壳程序扩展

我正在尝试使用Visual Studio 2010在C++中创建一个荒谬简单的shell扩展,但我似乎甚至无法将示例作为起点.

我使用的是Windows 7 x64.

我已经尝试过这个Visual Studio模板,但是一旦我让模板在VS2010中工作,我就会遇到很多错误,我不知道如何修复.

我已经尝试了The Complete Idiot编写Shell扩展指南,一旦演示编译了所有正确的注册表设置等,就会创建,但不会出现上下文菜单.

我已经看过这个C#COM Interop示例了,但是由于这篇文章*,我对使用C#是否安全感到困惑,但是如果我使用.NET 4看起来我可能会好的,因为它支持正在进行并行CLR托管.

  • 简而言之:历史上,两个版本的.NET无法在同一个进程中运行,而shell扩展的工作方式是将它们注入到进程中.所以,如果.NET 3.5被注入到.NET 2的过程- 爆炸

那么,我现在可以使用.NET 4.0吗?

是否有可下载的VS2010解决方案,增加了简单的shell扩展?

我过去常常对C++没有那么糟糕,但经过多年的.NET成型后,我很生疏,因此,摆弄细节来解决我现在的例子所带来的错误.正在证明......狡猾!

我真的可以做一个干净的石板开始,我可以打破自己,弄清楚做错了什么!

windows shell-extensions visual-studio-2010

14
推荐指数
1
解决办法
8669
查看次数

在Windows 7中调试shell扩展

我正在尝试使用Visual C++ 2008在Windows 7中调试shell扩展(IContextMenu).我在注册表中设置了DesktopProcess = 1并将主机应用程序设置为explorer.exe.但是当我启动调试器时,它会启动explorer.exe然后从进程中分离.不调用shell扩展的DllMain.

在Windows XP + Visual C++ 2008中,在调试器中启动的相同代码具有完全相同的设置,没有任何问题.

有任何想法如何在Win7中调试shell扩展?

c++ debugging shell-extensions windows-7

13
推荐指数
2
解决办法
5007
查看次数

Windows 10上的属性表处理程序

我开发了一个自定义属性表处理程序,可以在Windows 7和Windows 8上正常工作.在Windows 10上,它没有加载.看来Windows 10中的shell扩展注册有变化,但我没有追踪具体细节.

我的属性表处理程序从jpeg文件(.jpe或.jpeg)中读取自定义XMP数据.如果我注册一个新的文件类型(即.photo扩展名)并注册我的处理程序,它按预期工作:

HKCR\.photo\shellex\PropertySheetHandlers\{my class id}
Run Code Online (Sandbox Code Playgroud)

但是,如果我为现有的jpeg文件类型(jpegfile)注册它,则不会加载它:

HKCR\jpegfile\shellex\PropertySheetHandlers\{my class id}
Run Code Online (Sandbox Code Playgroud)

同样,此问题仅发生在Windows 10上.在Windows 7和8上以HKCR\jpegfile密钥类型注册时,处理程序工作正常.任何人都知道Windows 10可能发生了哪些变化?

windows shell-extensions

10
推荐指数
1
解决办法
1011
查看次数

Windows Shell扩展的教程

我一直在推迟项目的这一部分,因为我没有找到任何特别有用的示例/教程来解决Shell Extensions的这两个方面:

  1. 将鼠标悬停在文件上时返回提示信息.
  2. 具有扩展上下文的上下文弹出菜单,如果有意义的话.

干杯.

windows shell-extensions

9
推荐指数
2
解决办法
8637
查看次数

Windows资源管理器VS解决方案文件的上下文菜单中的"构建"项?

我想知道为什么默认情况下没有集成.我想在Windows资源管理器的VS解决方案文件的文件上下文菜单中有一个项目来构建它.

有这个工具吗?或者我必须自己创建吗?

contextmenu windows-explorer shell-extensions visual-studio

9
推荐指数
1
解决办法
3136
查看次数

签署F#程序集(强名称组件)

我在CodeProject上发现了这篇文章:http: //www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-Context-Menus

并且认为尝试一下会很好,但在F#中.所以我想出了以下代码:

open System
open System.IO
open System.Text
open System.Runtime.InteropServices
open System.Windows.Forms
open SharpShell
open SharpShell.Attributes
open SharpShell.SharpContextMenu

[<ComVisible(true)>]
[<COMServerAssociation(AssociationType.ClassOfExtension, ".txt")>]
type CountLinesExtension() =
    inherit SharpContextMenu.SharpContextMenu()

    let countLines =
        let builder = new StringBuilder()
        do 
            base.SelectedItemPaths |> Seq.iter (fun x -> builder.AppendLine(sprintf "%s - %d Lines" (Path.GetFileName(x)) (File.ReadAllLines(x).Length)) |> ignore  )
            MessageBox.Show(builder.ToString()) |> ignore

    let createMenu =
        let menu = new ContextMenuStrip()
        let itemCountLines = new ToolStripMenuItem(Text = "Count Lines")
        do
            itemCountLines.Click.Add (fun _ -> countLines)
            menu.Items.Add(itemCountLines) …
Run Code Online (Sandbox Code Playgroud)

com f# strongname shell-extensions code-translation

9
推荐指数
1
解决办法
1272
查看次数

如何从Visual Studio Code的上下文菜单中删除"使用代码打开"?

我已经卸载了Visual Studio代码,但是当我右键单击文件夹时,"打开代码"选项仍然在我的上下文菜单中.

如果我再次安装VS代码,它将保留旧选项并添加第二个条目,打开VS代码.

上下文菜单

windows shell-extensions visual-studio-code

9
推荐指数
2
解决办法
6356
查看次数