Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Закрыть окно другому пользователю EnumThreadWindows / 1 сообщений из 1, страница 1 из 1
07.07.2015, 12:32
    #39001292
risfek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть окно другому пользователю EnumThreadWindows
Здравствуйте!

Как оказалось при открытом окне настроек сети программно изменить IP не получается по причине лока.
Задача: закрыть окно настроек сети у пользователя, вошедшего по RDP на сервер.
Решил искать все процессы explorer, в его тредах искать окошко по названию посредством EnumThreadWindows.
Запуск под администратором. Находит и процессы и потоки. Но окна потока - находит только если оно открыто в моей сессии.
Код: 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.
29.
        foreach (System.Diagnostics.Process winProc in Process.GetProcessesByName(processName))
        {
            
            tempLog("lll.txt", "ProcessName=" + winProc.ProcessName + " winProc.Id = " + winProc.Id);
                foreach (ProcessThread pt in winProc.Threads)
                {
                    tempLog("lll.txt", " Thread.Id=" + pt.Id);
                    EnumThreadWindows((uint)pt.Id,
                        (hWnd, lParam) =>
                        {
                            tempLog("lll.txt", " ThreadWindow=" + hWnd);
                            if (IsWindowVisible(hWnd))
                            {
                                
                                var length = GetWindowTextLength(hWnd);
                                var caption = new StringBuilder(length + 1);
                                GetWindowText(hWnd, caption, caption.Capacity);
                                tempLog("lll.txt", " ThreadWindowCaption=" + caption.ToString());
                                    if (caption.ToString().Contains("ОНО"))
                                    {
                                        
                                        tempLog("lll.txt", " ThreadWindowCaptionWM_CLOSE=" + caption.ToString());
                                        SendMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
                                    }
                            }
                            return true;
                        }, 0);
                }
        }



Чего не хватает?
Может есть способ проще закрыть окошко/снять блокировку?
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Закрыть окно другому пользователю EnumThreadWindows / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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