Articles of Windows资源pipe理器

从Web浏览器打开文件系统文件夹/目录

我将我的桌面应用程序分发到闪存驱动器上数以千计的Windows,Mac和Linux上的用户。 我有一个HTML起始页面,其中包含文档链接,安装指南,发行说明等,这些都在闪存驱动器上。 我希望用户直接从浏览器安装,但这正是反病毒程序试图防止的(正确的)。 而不是尝试启动安装程序,只需find安装程序并让用户自行完成最后一步即可。 是否有可能导致主机上的文件系统pipe理器(Explorer,Finder等)打开包含该文件的文件夹并将其突出显示? 我认为这将需要JavaScript,它可能会有所不同的Windows,Mac和Linux。 另外,在大多数浏览器(IE,FF,Chrome,Safari,Opera)中都可以工作。 这是否与解决费马大定理相似的难度? 谢谢

如何判断操作系统在Windows XP之后是否没有默认文件扩展名关联?

回到Windows XP的日子,可以使用下面的代码来判断扩展是否存在文件关联: TCHAR buffPath[MAX_PATH] = {0}; DWORD dwszBuffPath = MAX_PATH; HRESULT hR = ::AssocQueryString( ASSOCF_NOFIXUPS | ASSOCF_VERIFY, ASSOCSTR_EXECUTABLE, _T(".weirdassextension"), NULL, buffPath, &dwszBuffPath); if(hR != S_OK && hR != E_POINTER) { //Association does not exist } 但是从Windows 8开始, AssocQueryString API会返回S_OK并且如果没有find任何东西, buffPath设置为类似于C:\WINDOWS\system32\OpenWith.exe东西。 现在有更好的方法来确定文件扩展名没有壳牌协会? PS。 我不想只比较文件名到OpenWith.exe 。 如果有一个合法的可执行文件被称为…那么一定有更好的办法。

如何重新使用现有/已打开的Windows资源pipe理器窗口来启动资源pipe理器

我有一个经常使用启动explorer.exe的应用程序。 我想重新使用现有/已经打开的资源pipe理器窗口,而不是每次启动过程时都创build一个新窗口。 这是我的代码看起来像: System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo { UseShellExecute = true, FileName = "Explorer.exe", Arguments = myDirectoryPath }; System.Diagnostics.Process.Start(info); 我没有看到一个命令行开关来做到这一点。 我尝试的一种方法是简单地杀死任何一个现有的浏览器进程,并将其replace为新的进程: var processes = System.Diagnostics.Process.GetProcesses(Environment.MachineName);int kills = 0; for (int i = 0; i < processes.Length; i++) { System.Diagnostics.Process p = processes[i]; if (p.ProcessName == "explorer" && kills < 1) ++kills p.Kill(); } 但是这会造成不必要的影响,不仅仅是杀死一个进程,而是彻底杀死资源pipe理器,甚至是任务栏也会消失。 […]

如何从某个驱动器打开文件夹closuresWindows资源pipe理器窗口

我在写一个小应用程序,允许用户popup(或安全删除)USB驱动器。 除了在Windows资源pipe理器中打开USB驱动器(或多个文件夹)上的文件夹时,我的应用程序工作正常。 在这种情况下popupfunction失败,因为驱动器似乎被locking。 所以我很好奇,因为用户通过我的应用程序发出一个命令来popupUSB驱动器,有没有办法让ExplorerclosuresUSB驱动器打开的窗口? PS。 请注意,我不想closures属于Windows资源pipe理器的所有进程,但仅closures在特定驱动器上打开文件夹的进程。

用BHO扩展Windows资源pipe理器

我正在试图扩展在C ++中的定制面板whindows资源pipe理器(不IE),应该看起来像这样: 这里有一个类似的问题,我发现(在C#中): 类似的问题 问题是C#已经得到了答案。 但是我自己发现答案有点太简单了,我只能这样做: 我应该实现一个BHO对象 BHO对象应该实现IObjectWithSite和IDockingWindow 在SetSite方法中,调用QueryInterface获取服务提供者的指针,然后调用QueryService获取Docking窗口的指针,最后调用AddToolBar添加我的自定义窗口。 这是我迷路的地方 我的问题是: 我应该在什么时候创build自定义窗口? 在对象的初始化过程中? 我想我应该得到一个父窗口的句柄(在我的情况下,我认为它应该是Windows资源pipe理器的句柄),然后才能创build自己的窗口,这将是它的孩子,我在哪里可以得到这个句柄? 与对接窗口框架的指针? 我应该如何注册我的DLL? 我读了预览处理程序的一些示例代码,我们必须正确注册dll才能被系统调用吗? 我试图重现类似的问题说了几天,但现在没有运气。 我真的是新来的BHO和所有这些东西,请帮助我出于此,谢谢。

以编程方式在Windows 8上排列文件夹

Windows 8似乎不会在个别文件夹上保留sorting顺序。 我猜测当explorer.exe终止(如重新启动时)这些偏好被丢弃? 打我,我所知道的是一段时间后(如几天),这些偏好完全丧失。 有没有办法在Windows资源pipe理器中以编程方式复制文件夹的sorting(select上下文菜单中的“sorting”选项之一)? 这样,说我有一个文件夹在Windows用户界面中打开。 说当前文件夹设置为按“名称”进行sorting,运行程序后,将按大小对其进行sorting,我再次检查Windows资源pipe理器中的sorting顺序,现在它说“大小”? 我有一个特定的大文件夹结构,我希望它的所有和它的子文件夹按大小永久sorting。 所以我想在查看它们之前运行这个程序,而不必单独手动重新sorting它们。 谢谢!

如何将上下文菜单添加到Windows资源pipe理器中以用于Java应用程序?

如何将一个子菜单项添加到Windows资源pipe理器上下文菜单(如7-Zip所做的)为Java应用程序?

用C ++代码中的Windows本机程序打开文件

我的C + +程序创build.png文件,我需要创build后立即打开(查看)该文件 – 有没有办法打开它,因为它是在Windows资源pipe理器中打开 – 所以文件将用用户首选的程序打开,如果有没有与文件格式相关联的程序 – Windows将显示对话窗口,用户将能够select任何程序来打开该文件。 跨平台(+ Linux,+ MacOS,+ BSD)解决scheme将是完美的。 谢谢。

使用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; […]

我如何以编程方式刷新Windows资源pipe理器?

我有一个Windowsshell扩展使用IShellIconOverlayIdentifier接口来显示文件和文件夹上的重叠图标。 我的扩展有点像TortoiseCVS或TortoiseSVN 。 有时我需要使Windows资源pipe理器重新绘制所有的图标。 要做到这一点,我打电话给SHChangeNotify像这样: SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL) 这将刷新任何打开的资源pipe理器窗口的桌面和右侧窗格。 它不会刷新任何资源pipe理器窗口左侧的文件夹树。 所以我尝试发送WM_SETTINGCHANGE像这样: SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 在Vista上刷新文件夹树,但不是右侧窗格。 SHChangeNotify()跟WM_SETTINGCHANGE的组合似乎在Vista上运行的很好。 但是如果显示的话,我仍然无法刷新XP上的文件夹树。 有没有人有任何想法如何做到这一点更好? 有没有更好的XP解决scheme? 发送SHCNE_ASSOCCHANGED有点像clubbing Explorer。 它导致整个桌面刷新相当猛烈,打开任何打开的资源pipe理器窗口松动滚动位置。 有没有什么是暴力的?