操作/控制Windows另存为/打开文件对话框的方法?

时间:2012-02-19 04:10:48

标签: c# windows forms

我正在尝试构建一个提供文件夹书签功能的Windows程序,它允许您点击热键并导航您已打开的对话框到指定的文件夹。当然,要做到这一点,我需要能够操作Windows资源管理器对话框等。有人能指出我正确的方向吗?

提前致谢。 :)

2 个答案:

答案 0 :(得分:1)

看起来你需要使用pinvoke并进入细节但是可以做到。

http://www.codeproject.com/Articles/19566/Extend-OpenFileDialog-and-SaveFileDialog-the-easy

答案 1 :(得分:0)

我添加了对SHDocVw的描述:StackOverflow SHDocVw Example:

这将允许您枚举所有打开的iexplore窗口。 (包括打开的Windows资源管理器对话框;唯一的问题是某些特殊文件夹没有显示完整路径,但这可以通过一些创意代码来解决)然后,您可以查看所有打开的窗口,查找具有文件的URL:/ //在开头,然后您可以提示用户为该特定打开窗口分配热键。我发现SHDocVw并不能一直可靠地返回所有iexplore窗口,所以这可能不是您正在寻找的确切解决方案。将文件夹的路径中的用户键入到表单上的文本框中会更容易,然后单击一个动态创建全局热键的按钮和全局热键键盘钩子的事件处理程序。我尝试了几种不同的方法,最后我在codeproject上使用.cs文件:CodeProject: Low Level Global Keyboard Hook

在全局键盘挂钩的事件处理程序中,您必须使用Process.Start(x.Process),其中x是自定义类类型,具有与特定文件夹位置关联的特定热键。这样,您可以查看在事件处理程序中按下的键,并启动关联的Process(或者在这种情况下,打开特定文件夹)每次用户添加其他文件夹的位置时,都会创建一个自定义类型的新对象其中包括热键参数和文件夹Path(用户生成的值)。然后将此自定义对象类型(在下面定义)添加到“folderLocation”类型的全局列表中,以便稍后在实际按下键时可以访问它。应用程序在创建时将每个folderLocation对象添加到flList。

我还定义了一个键类型列表,然后将此列表中的前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; }
    }