Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535

Поиск диалогового окна

07.11.2014, 02:20. Показов 1772. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Открываю WinRAR. Пробую разархивировать. Появляется окно "Ввод пароля".
Теперь объясняю. Хочу написать брут. Окно это открывается не моментально, как и всё в нашем мире)
Ставить задержку тоже не хочу (на разных машинах время прорисовки может быть разное...)
Окошко диалоговое, но не могу понять как сделать проверку типа:
while (окно "Ввод пароля" не существует) {} - тоесть постоянно идёт проверка.
Spy++ его показывает:

помогите) пожалуйста..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2014, 02:20
Ответы с готовыми решениями:

Печать фотографии без диалогового окна
Здравствуйте, подскажите возможно ли напечатать фотографию/документ без диалогового окна? и как это сделать? просто задача стоит на...

Вызов диалогового окна без отправки формы
есть кнопка <button onclick='opendialog()' class="change">Показ окна</button> при клике на нее показывается диалоговое окно. Работает...

Отсутствие диалогового окна для сохранения файла типа XML в IE8
привет! сделал скромненький веб-сайт на asp.net. веб-сайт позволяет выбрать файл типа XML (т.е. пользователь выбирает в соответ-м...

7
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
07.11.2014, 02:43
для того чтобы работать с этим самым диалоговым окном тебе с начало надо получить его дискриптор ну примерно так
C#
1
2
3
4
5
6
7
8
9
10
using System.Runtime.InteropServices;
        [DllImport("user32.dll")] 
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
//ну и затем как то так
        static IntPtr EnableWindows(string WindowsTitle)
        {
            IntPtr hWnd = FindWindow(null, WindowsTitle);
            if (hWnd == IntPtr.Zero) { return IntPtr.Zero; }
            return hWnd;
        }
если окно с указанным заголовком будет найдено в системе то вернёт тебе дискриптор окна если окна не будет вернёт 0.
Хотя в твоём случае я бы наверное не использовал брут через диалоговое окно, а замучил бы API самого WinRAR
1
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
07.11.2014, 12:55  [ТС]
сделал так:
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
        [DllImport("user32.dll")]
        public static extern IntPtr SetForegroundWindow(IntPtr hWnd);
        [DllImport("user32.dll")]
        public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
 
 
        private void button1_Click(object sender, EventArgs e)
        {
 
            IntPtr hControl = Process.GetProcessesByName("WinRAR")[0].MainWindowHandle;
 
            SetForegroundWindow(hControl);
 
            //Передаём в окно Alt+T
            keybd_event(0x12, 0, 0, 0);
            keybd_event((byte)'T', 0, 0, 0);
            keybd_event((byte)'T', 0, 0x0002, 0);
            keybd_event(0x12, 0, 0x0002, 0);
 
 
            while (FindWindowEx(hControl, IntPtr.Zero, "#32770", null).ToInt32() == 0)
            {
                //ожидание открытия окна ввода пароля
            }
        }
Если есть варианты красивее, подскажите пожалуйста)

Добавлено через 10 часов 6 минут
спасибо, подправил:
C#
1
2
3
4
5
6
                IntPtr hWnd = FindWindow(null, "Ввод пароля");
                while (hWnd == IntPtr.Zero)
                {
                    //ожидание открытия окна ввода пароля
                    hWnd = FindWindow(null, "Ввод пароля");
                }
0
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
07.11.2014, 14:41
Кстати конструкцию keybd_event я бы в твоём случае не использовал здесь больше подойдёт SendMessage так как позволит работать даже если окно ввода пароля не активно, кроме того даст какую не какую а гарантию ввода данных в контролы
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
08.11.2014, 14:23  [ТС]
а как через SendMessage отправить именно альт+Т, тоесть 2 зажатых?
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
08.11.2014, 14:57  [ТС]
И подскажите пожалуйста как закрыть окон?..
Визуально закрывает, но WinSpy++ показывает его всё равно

не помогают ни SendMessage(hPass, 0x0010, IntPtr.Zero, IntPtr.Zero);
ни DestroyWindow(hPass);
hPass - дескриптор окна.

...
Тоесть есть окно, закрываю его любыми способами (через прогу, на кнопку закрыть, через Альт+F4) окно пропадает, то Spy показывает что оно есть. нажимаю там на него правой кнопкой:

Оказывается просто убирается галочка с Visible. Ставлю её, и окно снова активно..
Как его нахрен убить?) Причём окно диалоговое, тоесть весь процесс убить не хочу, перезагружать тоже...
0
20 / 20 / 6
Регистрация: 18.07.2014
Сообщений: 73
11.11.2014, 14:57
не особо помню какое там у рара диалоговое окошко %) можно его скрин, куда и чего хотите сделать
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
11.11.2014, 20:32  [ТС]
да спасибо, уже разобрался:
C#
1
ShowWindow(hControl, 0);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2014, 20:32
Помогаю со студенческими работами здесь

Переменной диалогового окна присвоить значение переменной главного окна
Необходимо переменной диалогового окна присвоить значение переменной главного окна. Вылетает ошибка = Ссылка на объект не указывает на...

Создание диалогового окна с textbox
Всем привет. Нужна небольшая помощь. Необходимо сделать так, чтобы при нажатии кнопочки в программе выскакивало окошко с textbox'ом, а...

Закрытие диалогового окна MVVM
Помогите пожалуйста разобраться, если кто-нибудь знает: Очень тяжело идет понимание WPF и MVVM. Решаю следующую задачу: Из...

Автоматическая обработка всплывающего диалогового окна
В wpf WebBrowser делаю следующее: //WebBrowser web; web.navigate(url); //Жду загрузки HTMLDocument dom =...

Закрытие диалогового окна
Добрый день всем! Как закрыть диалоговое окно при открытии файла и загрузки содержимого в RichTextBox? private void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru