powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как узнать состояние главного окна стороннего процесса?
8 сообщений из 8, страница 1 из 1
Как узнать состояние главного окна стороннего процесса?
    #38201654
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получаю список процессов
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll", SetLastError = true)]
        internal static extern int ShowWindow(int hwnd, int nCmdShow);

        [DllImport("user32.dll", SetLastError = true)]
        static extern int GetWindowLong(IntPtr hWnd, int nIndex);
        private const int GWL_STYLE = -16;

      //выводит (должно выводить... ) в окно консоли состояния всех окон
      void GetStates()
      {
            Process[] procs = Process.GetProcesses();
            foreach (Process proc in procs)
            {
                if (proc.MainWindowTitle.IndexOf(@"Media Player Classic") >= 0)
                {
                    //Вот есть функция какая-то
                    int style = GetWindowLong(proc.MainWindowHandle, GWL_STYLE);
                    //но откуда взять значение GWL_STYLE - хз,
                    //плюс, функция описывает состояние "свёрнутое"-"восстановленное"-"развернутое"
                    //а мне нужно acivated/nonactivated (что-то вроде того).
                    Console.Write("Наличие фокуса на окне: " + style.ToString());
                }
            }
     }


Как узнать, имеется ли на окне фокус?
Или как узнать, какое окно "выше всех" по Z-order?
или как узнать, на каком из всех окон сейчас фокус?
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201656
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C# 2008 , кстати.
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201701
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но откуда взять значение GWL_STYLE - хзона же у тебя объявлена О_о
Как узнать, имеется ли на окне фокус?
Или как узнать, какое окно "выше всех" по Z-order?
или как узнать, на каком из всех окон сейчас фокус?GetActiveWindow
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201704
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyона же у тебя объявлена О_о
да я где-то в и-нете нашёл и объявил. Только в одном месте.
А так - хз, правильно ли)))

AntonariyGetActiveWindow
благодарю!!
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201737
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weylandда я где-то в и-нете нашёл и объявил. Только в одном месте.Ну, это надо было постараться...

Метод поиска значений констант в энторнетах.
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201745
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь еще поискать этот файл , в нем около мегабайта всяких объявлений. Хотя и не все.
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201824
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyGetActiveWindow
Написал функцию:
Код: c#
1.
2.
3.
4.
5.
6.
7.
        private void timer1_Tick(object sender, EventArgs e)
        {
             IntPtr hWndOwner = GetActiveWindow();
            StringBuilder s = new StringBuilder();
            GetWindowText(hWndOwner, s, 100);
            Console.WriteLine(s);
}


вызывается каждые 2 секунды. И всегда выводит в окно вывода одну и ту же надпись - Form1,
при этом сам я щёлкал по разным окнам, открывал,закрывал их.
т.е., функция возвращает название моего процесса.. видимо...
...
Рейтинг: 0 / 0
Как узнать состояние главного окна стороннего процесса?
    #38201866
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 
        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();

        IntPtr hwnd = GetForegroundWindow();
        StringBuilder s = new StringBuilder(100);
        GetWindowText(hwnd, s, 100);
        Console.Write(s);
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как узнать состояние главного окна стороннего процесса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]