我想使用C#
最小化窗口例如:我已使用
打开此路径E:\
process.start(E:\)
我想在某个事件上尽量减少这条道路。
我怎样才能做到这一点?
答案 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);
}