操作/控制Windows“另存为”/“打开文件”对话框的方法
本文关键字:另存为 打开文件 对话框 文件 方法 控制 操作 Windows | 更新日期: 2023-09-27 18:25:09
我正在尝试构建一个Windows程序,该程序将提供文件夹书签功能,允许您按下热键并在打开的对话框中导航到指定的文件夹。当然,要做到这一点,我需要能够操作Windows资源管理器对话框等等。有人能给我指正确的方向吗?
提前感谢。:)
看起来你需要使用pinvoke并深入了解细节,但这是可以做到的。
http://www.codeproject.com/Articles/19566/Extend-OpenFileDialog-and-SaveFileDialog-the-easy
我添加了对SHDocVw的引用此处描述:StackOverflow SHDocVw示例:
这将允许您枚举所有打开的iexplore窗口。(包括打开的Windows资源管理器对话框;唯一的问题是对于某些特殊文件夹,没有显示完整路径,但这可以通过一点创造性的代码来解决)然后,您可以在所有打开的窗口中查找开头有File:///的URL,然后您可以提示用户为特定打开的窗口指定热键。我发现SHDocVw并不能一直可靠地返回所有iexplore窗口,所以这可能不是你想要的确切解决方案。让用户在表单上的文本框中键入文件夹的路径,然后单击一个按钮,该按钮可以动态创建全局热键和全局热键键盘挂钩的事件处理程序,这样会更容易。我尝试了几种不同的方法,最后在代码项目上使用了一个.cs文件。这里:代码项目:低级别全局键盘挂钩
在全局键盘挂钩的事件处理程序中,您必须使用Process.Start(x.Process),其中x是一个自定义类类型,具有与特定文件夹位置关联的特定热键。这样,您就可以查看事件处理程序中按下的键,并启动相关的进程(或者在这种情况下,打开特定的文件夹)。每次用户添加其他文件夹的位置时,都会创建一个自定义类型的新对象,其中包括热键参数和文件夹Path(用户生成的值)。然后将此自定义对象类型(定义如下)添加到类型为"folderLocation"的全局列表中,以便以后实际按键时可以访问它。应用程序在创建每个folderLocation对象时将其添加到flList中。
我还定义了一个类型为Keys的列表,然后将该列表中的前12个对象定义为F1…F12。对于添加的每个文件夹位置,预定义列表中的下一个键将作为热键添加。(尽管你也可以让用户定义热键)
最后,用户按下F1,结果是全局按键按下事件处理程序启动,然后处理程序查看按下了什么按钮,将其与现有的自定义类型列表:folderLocation进行比较,并查找匹配的键。一旦找到,它就会使用Process.Start启动相关的folderLocation路径…祝你好运。。。
public class folderLocation
{
public string folderPath { get; set; }
public string folderName { get; set; }
public Keys hotKey { get; set; }
}