Минимизация всех открытых окон в 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?
- Как создать пользовательский хром в wpf?
- jQuery триггер, когда 2 / 3s div находятся в окне просмотра
- Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?
- Android Custom PopupWindow / Dialog
- Приложение WPF не закрывается при закрытии главного windows
- Диалоговое окно JQuery UI не размещено на центральном экране
- Как создать постоянную полноэкранную активность наложения в Android
- Как создать дочерние windows с Python tkinter?
- Создание таблицы и диалога мастер-деталировки, как повторно использовать один и тот же диалог для создания и редактирования
- Сохранять p: диалог открывается, когда возникает ошибка проверки после отправки
- Как предотвратить закрытие windows браузера?
- Powershell: всегда генерируется нулевой файл (вывод Compare-Object)
- Как скрыть кнопку закрытия в окне WPF?
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
примерно четвертый результат вниз помогает в вашем случае.