2014-01-12 4 views
3

Я хочу, чтобы свернуть окно с помощью C#Минимизация папку

Ex: Я открыл этот путь E:\ используя

process.start(E:\) 

И я хочу, чтобы минимизировать этот путь на определенное событие.

Как я могу сделать это возможным?

+0

попробуйте отправить ключи выиграть + стрелка вниз, http://msdn.microsoft.com/en-us/library/system.windows .forms.sendkeys.send% 28v = vs.110% 29.aspx –

+0

Надеемся, что эта тема будет полезна http://stackoverflow.com/questions/785054/minimizing-all-open-windows-in-c-sharp –

ответ

0

Ваш вопрос не очень ясен. Если вы используете элемент управления TreeView, см. MSDN Treeview class. Затем вы можете: развернуть или свернуть элементы по своему усмотрению.

1

Shell32.Shell objShell = new Shell32.Shell(); objShell.MinimizeAll(); это поможет вам свести к минимуму все окна не только папки, все (что-то вроде окна + M !!!

+2

Вопрос OP не сводит к минимуму ВСЕ окна, но сводит к минимуму путь, который он ранее открывал. – Jim

+0

Вы знаете ответ? Я тоже ищу то же самое сейчас! – Pravee

+0

Или 'objShell.ToggleDesktop' для отображения рабочего стола (и переключения), что эквивалентно окнам + D :) – nawfal

0

Вы можете использовать конфигурационный файл или переменную

2

В следующем примере кода консольного приложения минимизируют все виды оболочки проводника, которые открываются на 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); 
} 

это с помощью Shell Objects for Scripting Обратите внимание на использование динамического ключевого слова, обязательные здесь, потому что не круто TypeLib, и, следовательно, нет IntelliSense либо

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); 
} 
Смежные вопросы