最小化文件夹

时间:2014-01-12 14:57:22

标签: c# .net

我想使用C#

最小化窗口

例如:我已使用

打开此路径E:\
process.start(E:\)

我想在某个事件上尽量减少这条道路。

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:2)

以下示例控制台应用程序代码将最小化在E:\:

上打开的所有shell资源管理器视图
class Program
{
    static void Main(string[] args)
    {
        // add a reference to "Microsoft Shell Controls and Automation" COM component
        // also add a 'using Shell32;'
        Shell shell = new Shell();
        dynamic windows = shell.Windows(); // this is a ShellWindows object
        foreach (dynamic window in windows)
        {
            // window is an WebBrowser object
            Uri uri = new Uri((string)window.LocationURL);
            if (uri.LocalPath == @"E:\")
            {
                IntPtr hwnd = (IntPtr)window.HWND; // WebBrowser is also an IWebBrowser2 object
                MinimizeWindow(hwnd);
            }
        }
    }

    static void MinimizeWindow(IntPtr handle)
    {
        const int SW_MINIMIZE = 6;
        ShowWindow(handle, SW_MINIMIZE);
    }

    [DllImport("user32.dll")]
    private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}

它正在使用Shell Objects for Scripting。请注意这里必须使用的动态关键字,因为没有很酷的类型库,因此也没有智能感知。

答案 1 :(得分:1)

Shell32.Shell objShell = new Shell32.Shell();             objShell.MinimizeAll();     这将帮助您最小化所有窗口不仅所有文件夹(类似于Windows + M !!!

答案 2 :(得分:0)

你的问题不是很清楚。如果您使用的是TreeView控件,请参阅 MSDN Treeview class。然后,您可以:随意展开或折叠项目。

答案 3 :(得分:0)

您可以使用配置文件或变量

答案 4 :(得分:0)

这是一个可能的解决方案,只会最小化你打开的窗口:

private int explorerWindowNumber;
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MINIMIZE = 0xF020;

[DllImport("user32.dll", SetLastError = true)]
public static extern int GetForegroundWindow();

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);

public void button1_Click(object sender, EventArgs e)
{
    //Start my window
    StartMyExplorer();
}

private void StartMyExplorer()
{
    Process.Start("D:\\");
    Thread.Sleep(1000);
    //Get the window id (int)
    explorerWindowNumber = GetForegroundWindow();
}

private void button2_Click(object sender, EventArgs e)
{
    //Minimize the window i created
    SendMessage(explorerWindowNumber, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}