Минимизация всех открытых окон в C #

Я видел этот код на C ++, который сводит к минимуму все открытые windows

#define MIN_ALL 419 #define MIN_ALL_UNDO 416 int main(int argc, char* argv[]) { HWND lHwnd = FindWindow("Shell_TrayWnd",NULL); SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0); Sleep(2000); SendMessage(lHwnd,WM_COMMAND,MIN_ALL_UNDO,0); return 0; } 

Как я могу получить доступ к функции API FindWindow и SendMessage и типа HWND в C # .net?

PInvoke.net – ваш друг 🙂

 using System; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true)] static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam); const int WM_COMMAND = 0x111; const int MIN_ALL = 419; const int MIN_ALL_UNDO = 416; static void Main(string[] args) { IntPtr lHwnd = FindWindow("Shell_TrayWnd", null); SendMessage(lHwnd, WM_COMMAND, (IntPtr)MIN_ALL, IntPtr.Zero); System.Threading.Thread.Sleep(2000); SendMessage(lHwnd, WM_COMMAND, (IntPtr)MIN_ALL_UNDO, IntPtr.Zero); } } } 

На сайте http://www.pinvoke.net есть много необходимой информации. Например, эта статья о SendMessage и FindWindow:

http://www.pinvoke.net/default.aspx/user32.SendMessage http://www.pinvoke.net/default.aspx/user32.FindWindow

Это скорее технический – конечно, но в основном вы используете p / invoke для вызова функций FindWindow и SendMessage API для выполнения того, что вы хотите. знак равно

Аналогичный результат можно достичь, отправив эти события клавиатуры, чтобы открыть всплывающее меню панели задач и отправить ему букву «M»:

 public class DesktopHelper { [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo); ///  /// Shows the desktop. ///  public static void ShowDesktop() { keybd_event(0x5B, 0, 0, 0); keybd_event(0x4D, 0, 0, 0); keybd_event(0x5B, 0, 0x2, 0); } } 

Ранее я писал о том, как минимизировать и максимизировать использование P / Invoke с C #: http://improve.dk/minimizing-and-maximizing-windows/

Не совсем простой способ, но ручным способом является вызов реализации C ++. http://pinvoke.net помогает:

findwindow результаты поиска: http://pinvoke.net/search.aspx?search=findwindow&namespace=%5BAll%5D

примерно четвертый результат вниз помогает в вашем случае.

  • Как получить и установить положение windows другого приложения в C #
  • Interesting Posts

    Необъяснимая блокировка файла, доступного по сети в Windows 8

    Как я могу определить, блокирует ли браузер всплывающее окно?

    Как изменить папку запуска Jupyter

    Как понять, что «RESTful API является апатридом»?

    Как я должен понимать «Текущий ожидающий секторный счет» в отчетах CrystalDiskInfo?

    Как преобразовать объект Java (bean) в пары ключ-значение (и наоборот)?

    При выходе из системы очистите стек истории событий, не позволяя кнопке «Назад» открывать только зарегистрированные.

    Получение java.sql.SQLException: операция не разрешена после закрытия ResultSet

    ElasticSearch, Sphinx, Lucene, Solr, Xapian. Что подходит для использования?

    Почему LayoutInflater игнорирует параметры layout_width и layout_height, которые я указал?

    Рекомендуемая реализация WAI-ARIA для панели навигации / меню

    Windows 7 eBook reader с облачной синхронизацией – .mobi, .epub, .pdf

    Как удалить старые резервные копии Windows Vista?

    Примените функцию к подмножеству столбцов data.table, по столбцам-индексам вместо имени

    Как я повторяю метод каждые 10 минут после нажатия кнопки и завершения ее на другой кнопке

    Давайте будем гением компьютера.