使用Chrome时,如果您下载文件,则可以选择一个选项(在文件夹中显示),该选项将打开包含目录并突出显示该文件.同样,如果您查看快捷方式的属性,则可以为相同的功能选择"查找目标"按钮.我已经尝试了大量的搜索,以及查看Shell函数的MSDN条目的相当部分,但无济于事.我认为它只是一个简单的API调用或其系列,但我找不到它.
我一直在尝试使用注册表在窗口内操作我的右键单击。我设法在外壳内添加了单行。
[HKEY_CLASSES_ROOT\Directory\shell\Notepad
[HKEY_CLASSES_ROOT\Directory\shell\notepad\Command]
@="\"notepad.exe" \"%1\""
Run Code Online (Sandbox Code Playgroud)
例如会启动记事本。
现在,我真正想要的是上下文菜单中的子目录。
任何人都知道我可以在哪里阅读此内容,或者知道如何实际操作?
我正在为 Windows 7 创建一个读取文档的应用程序,并且我想启用可以在缩略图图标中预览文档封面的功能。我知道我必须创建缩略图,但是如何将该图像提供给资源管理器,以便它为该特定文件使用该缩略图?
我正在构建一个Window,但我注意到WindowChrome的这种奇怪的行为(在.NET FW 4.0中,来自外部的Microsoft.Windows.Shell dll).
我使用AllowTransparency = true和WindowStyle = None设置WindowChrome.
如果我设置WindowChrome的ResizeBorderThickness <= 7一切都很完美,但如果我这样做
ResizeBorderThickness="8"
或者更多,当窗口最大化时,我无法将其从屏幕上边缘附近的最后一个顶部像素拖动,并且对于每个超过7的+1,我必须开始从边缘向下拖动1个像素.
这很烦人,因为它在关闭窗口时禁用了常见的行为,迫使我将其设置为7或更低.
有人可以解释我这种行为吗?
谢谢!
名为SharpShell的 .NET Shell 扩展框架很棒;我开发了一个“非常容易”的右键单击文件 Shell ContextMenu,它可以同时选择文件和目录。
现在,我想通过右键单击空白区域(即,在桌面上或在文件夹内的白点上)来开发 Shell ContextMenu。是否有可能仍然使用 SharpShell?或者我需要转向不同的解决方案吗?......在第二种情况下......你有什么建议?
谢谢
我正在寻找一种方法,通过命令行将包含"*"字符的字符串传递给可执行文件.
command.exe 3*2
Run Code Online (Sandbox Code Playgroud)
我想传递字符串3*2.相反,Windows会在当前目录中搜索与文件掩码"3*2"匹配的文件,并将找到的所有文件传递给command.exe
在双引号之间加上"3*2"也没有用,仍然是同样的问题.
我也试过'3*2'(在单引号之间),但随后传递了整个字符串(包括单引号),这不是我需要的.
有没有办法将字符串3*2(没有任何引号)传递给命令?
我找到了关于获取文件甚至文件扩展名的系统映像的各种文章.我有以下方法,用于获取小型16x16和大型32x32图像.
// DLL Import
[DllImport("shell32")]
private static extern IntPtr SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags);
// Constants/Enums
private const int FILE_ATTRIBUTE_NORMAL = 0x80;
private enum SHGetFileInfoConstants : int
{
SHGFI_ICON = 0x100, // get icon
SHGFI_DISPLAYNAME = 0x200, // get display name
SHGFI_TYPENAME = 0x400, // get type name
SHGFI_ATTRIBUTES = 0x800, // get attributes
SHGFI_ICONLOCATION = 0x1000, // get icon location
SHGFI_EXETYPE = 0x2000, // return exe type
SHGFI_SYSICONINDEX = 0x4000, // get …Run Code Online (Sandbox Code Playgroud) 编辑:我改述了我的问题,请忽略下面的所有评论(截至5月7日).
首先,我将尝试解释这个问题:
我的过程是尝试使用ITrayDeskBand :: ShowDeskBand以编程方式显示Deskband.
除了操作系统加载所有进程(重置或注销后)之外,它在任何时候都可以正常工作.
Windows启动并开始加载各种应用程序\服务后,鼠标光标设置为等待几秒钟(取决于运行的应用程序数量\所有内容的速度).
如果鼠标光标设置为wait并且进程在此期间运行,则调用将失败.
但是,如果我的进程等待几秒钟(在此之后光标变为常规)然后调用该调用,一切都很好.
在Windows 7和Windows Vista上都重现了此行为.
基本上我要问的是:
1)仅仅为了基本知识,当光标设置为忙时操作系统会做什么?
2)更重要的问题:如何在此过程结束时以编程方式检测?
起初,我认为资源管理器没有正确加载,所以我使用了WaitForInputIdle,但事实并非如此.
后来我认为忙碌的光标表示CPU正忙,所以我创建了我的进程,IDLE_PRIORITY_CLASS但是在光标忙的时候收到了空闲时间.
我试图在win32 shell脚本中更新系统Path变量,但仅在没有值的情况下更新.
我当前的版本看起来像这样:
for %%f in (xyz.exe) DO if [%%~$PATH:f]==[]; setx Path "%PATH%;%GRADLE_HOME%\bin" -m
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是
setx Path "%PATH%;%GRADLE_HOME%\bin"
Run Code Online (Sandbox Code Playgroud)
这不起作用,但如果我将引号更改为单引号
setx Path '%PATH%;%GRADLE_HOME%\bin'
Run Code Online (Sandbox Code Playgroud)
它确实有效但Path在第一次出现Program Files时结束.即abc; def;程序
有没有办法克服这个问题?
我想在外面的文件夹上安装x86 CommandLine应用程序,C:\Windows\System32或者C:\Windows\Syswow64仍然可以在CMD下访问我的应用程序,而无需在PATH环境变量中添加我的应用程序路径.
这可能吗?也许触摸所需的注册表项?
注意:我知道如何将我的应用程序添加到PATH变量/ regvalue或如何从CMD访问我的应用程序,将所需的.exe放在System32/ SysWow64文件夹中.这个问题只是为了学习替代方案,而不是解决问题PATH或系统目的.
我试着从@Sertac Akyuz在评论这一建议的方法这个答案,我已存储MyApp.exe的C:\根目录下,但我不能检测应用程序只是把MyApp.exe在CMD下.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\MyApp.exe"
Run Code Online (Sandbox Code Playgroud) windows-shell ×10
windows ×5
c# ×3
registry ×2
shell ×2
winapi ×2
.net-4.0 ×1
cmd ×1
com ×1
contextmenu ×1
pinvoke ×1
setx ×1
sharpshell ×1
thumbnails ×1
visual-c++ ×1
windows-8 ×1
wpf ×1
xaml ×1