相关疑难解决方法(0)

使用C#进行Windows shell扩展

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

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

c# windows-shell shell-extensions

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

如何从C#中获取Windows资源管理器的选定文件?

我需要获取在Windows资源管理器中选择的当前文件集合.我从这里找到了以下代码.

不过,我不在那里.首先,它GetForegroundWindow来自哪里?另一方面,编译器在线上抱怨

var shell = new Shell32.Shell();
Run Code Online (Sandbox Code Playgroud)

"无法找到类型或命名空间名称'Shell32'(您是否缺少using指令或程序集引用?)".我已经添加了SHDocVw作为参考,但我仍然无法通过编译器.有人可以帮我完成这个吗?

    IntPtr handle = GetForegroundWindow();

    ArrayList selected = new ArrayList();
    var shell = new Shell32.Shell();
    foreach(SHDocVw.InternetExplorer window in shell.Windows()) {
        if (window.HWND == (int)handle)
        {
            Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
            foreach(Shell32.FolderItem item in items)
            {
                selected.Add(item.Path);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# windows-shell

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

使用WinAPI获取文件夹的选定项目

嘿伙计们,我试图获取用户正在使用的文件夹的选定文件.我有以下代码已经运行,但只在桌面文件上:

private string selectedFiles()
{
    // get the handle of the desktop listview
    IntPtr vHandle = WinApiWrapper.FindWindow("Progman", "Program Manager");
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SHELLDLL_DefView", null);
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SysListView32", "FolderView");

    //IntPtr vHandle = WinApiWrapper.GetForegroundWindow();

    //Get total count of the icons on the desktop
    int vItemCount = WinApiWrapper.SendMessage(vHandle, WinApiWrapper.LVM_GETITEMCOUNT, 0, 0);
    //MessageBox.Show(vItemCount.ToString());
    uint vProcessId;
    WinApiWrapper.GetWindowThreadProcessId(vHandle, out vProcessId);
    IntPtr vProcess = WinApiWrapper.OpenProcess(WinApiWrapper.PROCESS_VM_OPERATION | WinApiWrapper.PROCESS_VM_READ |
    WinApiWrapper.PROCESS_VM_WRITE, false, vProcessId);
    IntPtr vPointer = WinApiWrapper.VirtualAllocEx(vProcess, IntPtr.Zero, 4096,
    WinApiWrapper.MEM_RESERVE | WinApiWrapper.MEM_COMMIT, WinApiWrapper.PAGE_READWRITE);
    try
    {
        for …
Run Code Online (Sandbox Code Playgroud)

c# windows winapi windows-explorer

5
推荐指数
1
解决办法
4143
查看次数

在 Windows 资源管理器中检测文件选择

在 Windows 中,无论是在桌面上还是在 Windows 资源管理器中,我想检测文件或文件夹被选中(突出显示)的时刻。发生这种情况时,我想显示一个消息框,显示文件或文件夹的全名。

如果选择了多个项目,我想显示所有项目。

请注意,我的解决方案必须用 C# 编写。

c# windows hook windows-explorer

5
推荐指数
1
解决办法
2992
查看次数

C# 获取焦点所在的 Windows 探索路径

我想获得具有焦点的窗口的路径。

例如:我打开
了3 个窗口。C:\Windows
B. C:\Windows\System32
C. C:\用户\COMP-0\文档

我正在处理 c (C:\Users\COMP-0\Documents)

所以我想在 C# 中以编程方式获取此路径 (C:\Users\COMP-0\Documents)。

c# winforms

3
推荐指数
1
解决办法
2382
查看次数