Форма. ShowInTaskBar / Процесс. MainWindowHandle

Я работал как на Groovy на Grails, так и на Ruby on Rails.

  1. Обе являются гибкими платформами и следуют принципу СУХОЙ или «Не повторяйся».
  2. Оба Грааля является каркасом каркасов. Вы можете написать синтаксический код Java или Ruby вместо синтаксического кода Groovy, он будет отлично работать.
  3. В Groovy мы также можем использовать фреймворки Java Spring и Hibernate.
  4. Оба поддерживают строительные леса.
  5. В Rails есть гемы и плагины, но в Grails до сих пор я использовал только плагины.
  6. Платформа Rails построена на языке Ruby, а платформа Grails построена на языке Groovy.

Оба - прекрасные рамки.

Документацию можно найти здесь:

6
задан xyz 17 June 2009 в 11:28
поделиться

1 ответ

Я нашел альтернативный способ сделать это, вернувшись к материалам Win32 и используя заголовки окон. Это беспорядочно, но в моей ситуации работает.

В этом примере контекстное меню одного экземпляра приложения закрывает все экземпляры этого приложения.

[DllImport("user32.dll")]
public static extern int EnumWindows(EnumWindowsCallback x, int y);
public delegate bool EnumWindowsCallback(int hwnd, int lParam);
[DllImport("user32.dll")]
public static extern void GetWindowText(int h, StringBuilder s, int nMaxCount);
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);
private void ContextMenu_Quit_All(object sender, EventArgs ea)
{
    EnumWindowsCallback itemHandler = (hwnd, lParam) =>
    {
        StringBuilder sb = new StringBuilder(1024);
        GetWindowText(hwnd, sb, sb.Capacity);

        if ((sb.ToString() == MainWindow.APP_WINDOW_TITLE) &&
            (hwnd != mainWindow.Handle.ToInt32())) // Don't close self yet
        {
            PostMessage(new IntPtr(hwnd), /*WM_CLOSE*/0x0010, 0, 0);
        }

        // Continue enumerating windows. There may be more instances to close.
        return true;
    };

    EnumWindows(itemHandler, 0);
    // Close self ..
}
2
ответ дан 17 December 2019 в 20:34
поделиться