标签: windows-shell

在工作线程中使用SHFileOperation是否安全?

我想拥有

  • 一个后台线程将通过该SHFileOperation函数复制文件,当时总是只有一个SHFileOperation(但我希望它在线程中)
  • 我需要UI输出,所以我需要使用FOF_SIMPLEPROGRESS标志并将一些东西传递给Wnd成员

我有两个问题

  1. 从main以外的线程调用SHFileOperationwith FOF_SIMPLEPROGRESS标志(用于用户交互)是否安全?
  2. 如果是的话,我应该把什么句柄传递给Wnd会员?我已经尝试了主窗体的句柄,但是当例如弹出覆盖确认对话框并确认它时,主窗体被发送到后台,真的很奇怪

注意:我有一个队列用于这些操作,因此SHFileOperation当时只执行一个操作(完成后,线程继续执行另一个操作,可能是下一个操作SHFileOperation)

非常感谢

delphi winapi windows-shell thread-safety shfileoperation

7
推荐指数
1
解决办法
849
查看次数

如何更改现有Windows资源管理器窗口的路径?

我有一个打开的Windows资源管理器窗口的句柄.

如何向其发送命令以便将
示例中的路径更改为:m:\ programs到d:\ programs.


例

直到现在我正在使用,ShellExecute()但它打开了一个新窗口.这不好(用户体验).

delphi winapi windows-shell

7
推荐指数
1
解决办法
872
查看次数

Windows 10 built-in SSH Client. How to paste the password?

I am trying to connect to my OpenWRT router using SSH. Since Windows 10 comes with a SSH client I decided to use that.

When I try to connect nothing happens when I paste into the password field.

My password is 30+ char with special characters. There seems to be no way to paste the password.

在此输入图像描述

Is this a bug in the Windows SSH client / Terminal?

I have no problem pasting into the terminal. It is only that password …

windows-shell

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

Windows XP命令shell的"带到前面"

是否有一个命令可以放入Windows XP .bat文件中以将命令shell放到前面?

windows batch-file windows-shell

6
推荐指数
4
解决办法
4万
查看次数

用于切换"显示隐藏文件,文件夹和驱动器"的API

Windows API中是否有一个函数可以在Windows资源管理器中切换"显示隐藏文件,文件夹和驱动器"选项(工具>>文件夹选项... >>视图选项卡).

我知道一个相关的注册表项,但更改它不会立即生效.关键是:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden

试图从C#中做到这一点,但问题不是语言特定的.

c# winapi windows-explorer windows-shell

6
推荐指数
1
解决办法
3551
查看次数

如何从WPF应用程序访问Windows文件预览图标

我在目录中收到了一堆图片和视频,需要在WPF应用程序中显示,我正在考虑将Win7 Large Icon本身显示为预览图像.因为这样可以节省我从视频文件中获取适当帧的工作,因为Windows已经很好地完成了这项工作.用于访问此Shell图像数据的任何代码段?

wpf windows-shell thumbnails

6
推荐指数
1
解决办法
3416
查看次数

通过其pIDL识别Windows Shell特殊文件夹(即获取其CSIDL)(现在确定pIDL是否与C#相等)

我有一种情况,我想在一些Windows shell特殊文件夹(对应于CSIDL枚举中的值)上执行特殊处理.(我的解决方案必须与WinXP兼容.)我遇到的问题是当我遇到IShellFolders时我沿着heirarchy工作,我找不到将IShellFolders与CSIDL相匹配的方法.

这是我目前的做法:

csidlToFromFullPIdl所有CSIDL 的静态一对一数据结构()初始化为其返回的pIDL SHGetSpecialFolderLocation.

foreach (CSIDL csidl in Enum.GetValues(typeof(CSIDL))
{
    IntPtr fullPIdl = IntPtr.Zero;
    int hResult = ShellApi.SHGetSpecialFolderLocation(IntPtr.Zero, csidl, ref fullPIdl);
    if (hResult != 0)
        Marshal.ThrowExceptionForHR(hResult);
    csidlToFromFullPIdl.Add(csidl, fullPIdl);
}
Run Code Online (Sandbox Code Playgroud)

使用Desktop IShellFolder启动heirarchy:

int hResult = ShellApi.SHGetDesktopFolder(ref _shellFolder);
hResult = ShellApi.SHGetSpecialFolderLocation(IntPtr.Zero, CSIDL.CSIDL_DESKTOP, ref _fullPIdl);
Run Code Online (Sandbox Code Playgroud)

像这样检索孩子:

hResult = _shellFolder.EnumObjects(IntPtr.Zero, SHCONTF.SHCONTF_FOLDERS, out pEnum);

// Then repeatedly call:
pEnum.Next(1, out childRelativePIdl, out numberGotten);
Run Code Online (Sandbox Code Playgroud)

为孩子们构建新的完全合格的pIDL,如下所示:

_fullPIdl = ShellApi.ILCombine(parentFullPIdl, childRelativePIdl);
Run Code Online (Sandbox Code Playgroud)

(最后,使用:)检索孩子的IShellFolder

hResultUint = parentShellItem.ShellFolder.BindToObject(childRelativePIdl, IntPtr.Zero, ShellApi.IID_IShellFolder, out _shellFolder);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是childRelativePIdl和_fullPIdl都不对应于任何pIDL csidlToFromFullPIdl.

TIA. …

c# windows-shell

6
推荐指数
1
解决办法
2247
查看次数

为不存在的文件创建 IShellItem 实例

如何为不存在的文件(或目录)获取IShellItem对象?

首先我认为这可能是不可能的,但例如IFileSaveDialogIShellItem为其结果创建了这样的一个(如果您在对话框中指定一个新文件)。

windows com winapi windows-shell

6
推荐指数
1
解决办法
2747
查看次数

在打开方式...上下文菜单中命名程序

如何在Windows XP和7 中的" 打开方式..."上下文菜单中自定义程序的名称?

例如:我在Windows上安装了3个名为XYZ的产品版本; .x文件与xyz.exe(COM注册)相关联.

该产品的所有版本都具有相同的.exe名称.现在,在Open With ...上下文菜单中,它显示XYZ程序3次(安装了3个版本),但名称相同.

如何让它显示版本?即XYZ V1.0,XYZ V2.0

windows registry open-with contextmenu windows-shell

6
推荐指数
1
解决办法
1714
查看次数

DLL 加载失败:找不到指定的模块 Windows 10 shell

我正在尝试从 Windows shell 运行 Python 脚本,但是当我这样做时

python path\to\file\script.py
Run Code Online (Sandbox Code Playgroud)

我收到一个错误“DLL 加载失败:找不到指定的模块”,它可以追溯到我导入 numpy 的那一行。

C:\Users\Admin>python path\to\file\script.py
Traceback (most recent call last):
  File "path\to\file\script.py", line 8, in <module>
    import numpy as np
  File "C:\Users\Admin\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>
    from . import _distributor_init
  File "C:\Users\Admin\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in <module>
    from . import _mklinit
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我在像 Spyder 这样的编辑器中运行它时,numpy 导入就好了。有人能帮我吗?

谢谢

python windows-shell

6
推荐指数
1
解决办法
2万
查看次数