Свернуть папку
Я хочу свернуть окно с помощью C#
Пример: я открыл этот путь E:\
с помощью
process.start(E:\)
И я хочу минимизировать этот путь на определенном событии.
Как я могу сделать это возможным?
5 ответов
Следующий пример кода консольного приложения минимизирует все представления проводника оболочки, которые открываются на E:\:
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);
}
Он использует объекты оболочки для сценариев. Обратите внимание на использование динамического ключевого слова, которое здесь обязательно, потому что нет классной библиотеки типов, и, следовательно, нет также и intellisense.
Shell32.Shell objShell = new Shell32.Shell(); objShell.MinimizeAll(); это поможет вам свернуть все окна Не только все папки (что-то вроде windows + M!!!
Это возможное решение, и оно минимизирует только открытое окно:
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);
}
Ваш вопрос не очень понятен. Если вы используете элемент управления TreeView, смотрите MSDN Treeview class. Затем вы можете: Развернуть или Свернуть предметы по желанию.