Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FindWindowEx / 24 сообщений из 24, страница 1 из 1
11.06.2020, 22:22
    #39968412
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Добрый день! Имею ситуацию. Запущен notepad.exe, там открыт диалог "Сохранить как". Запускаю приложение на D7, получаю окно блокнота по h1:=findwindow(nil,pchar("Сохранить как")); Работает. Как обратиться к элементам h1? Как ваще называется класс контролла, куда имя файла выбирается? Ни TEdit, ни TComboBox не работает
...
Рейтинг: 0 / 0
11.06.2020, 22:32
    #39968415
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Karton
Ни TEdit, ни TComboBox не работает

Блокнот не на дельфи написан.
...
Рейтинг: 0 / 0
11.06.2020, 22:34
    #39968417
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
wadman,
конечно, не на дельфи
...
Рейтинг: 0 / 0
11.06.2020, 22:43
    #39968421
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Могу вот так делать
SendMessage(h1, WM_CLOSE, 0, 0);
окно выбора файла закрывается,

но h2:=FindWindowEx(h2, 0,'BUTTON', nil); Не дает ничего

Ещё момент
h3:=GetWindow(h1,GW_CHILD); Даёт окно класса STATIC
...
Рейтинг: 0 / 0
11.06.2020, 23:26
    #39968429
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
...
Рейтинг: 0 / 0
12.06.2020, 00:04
    #39968437
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Извиняюсь, что изображено на этой картинке? Класс контрола Edit?
Нет.

h1:=findwindow(nil,pchar('Сохранить как'));
h2:=FindWindowEx(h1, 0,'EDIT', nil) или h2:=FindWindowEx(h1, 0,'TEdit', nil) Всегда h2=0. Нет такого контрола в этом окне

Более того
h3:=GetWindow(h1,GW_CHILD);
h4:=FindWindowEx(h3, 0,'EDIT', nil) или h4:=FindWindowEx(h1, 0,'TEdit', nil) Всегда h4=0.

C Combobox или Button такая же история
...
Рейтинг: 0 / 0
12.06.2020, 00:28
    #39968440
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Ну так EnumChildWindows в руки и смотри что там за окна и какие у них классы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2020, 00:42
    #39968442
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Функция Александра возвращает такое дерево
...
Рейтинг: 0 / 0
12.06.2020, 01:16
    #39968444
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
DimaBr, Хех, вот это мощно, исчерпывающе. Снимаю шляпу и благодарю. Ящик пива уже с меня. Ещё бы отловить событие открытия диалога выбора файла в блокноте из внешнего приложения.
...
Рейтинг: 0 / 0
12.06.2020, 12:16
    #39968506
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Вы пытаетесь решить задачу, условия которой так и не рассказали.
...
Рейтинг: 0 / 0
12.06.2020, 12:35
    #39968520
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
DimaBrрешить задачу, условия которой так и не рассказали.
Вангую: стандартная у него задача - автоматизировать чужое приложение. Ещё один
автокликер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2020, 17:05
    #39968648
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Или добавить свою кнопку в стандартное окно открытия фа1ла))
...
Рейтинг: 0 / 0
12.06.2020, 17:39
    #39968652
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Dimitry Sibiryakov,

Да, автокликер. Это аморально?
Мой заказчик часто обращается в суд на сайте ГАС Правосудие. API там никакого нет. Каждое обращение подразумевает прикрепление в заявлению до 50 файлов, каждый должен быть подписан эл. подписью. Я взялся автоматизировать процесс. Выбрал вариант внешнего дельфи приложения. Приложение ловит сообщение о событии открытия окна выбора файла и заполняет путь к файлу.
...
Рейтинг: 0 / 0
12.06.2020, 17:45
    #39968656
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Karton
на сайте ГАС Правосудие

Beton-Karton
до 50 файлов, каждый должен быть подписан эл. подписью

Beton-Karton
Запущен notepad.exe

Вы файлы в блокноте подписываете? Или блокнот умеет отправлять файлы на сайт?
...
Рейтинг: 0 / 0
12.06.2020, 17:48
    #39968657
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Нет. Блокнот я выбрал для удобства отладки. Окно выбора файла будет открывать 1С во втроенном браузере
...
Рейтинг: 0 / 0
12.06.2020, 18:01
    #39968660
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-KartonЭто аморально?

Это неэффективно. Раз файлы отправляет 1С, значит надо просто найти тот кусок
конфигурации, который открывает окно открытия файла, и немного его переписать.

А вообще-то программа на Дельфи может файлы и открыть, и подписать, и отправить совершенно
самостоятельно, без левых приложений.

Beton-KartonAPI там никакого нет.

HTTP(S) это уже API само по себе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2020, 18:17
    #39968664
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Dimitry Sibiryakov,
Файлы отправляет не 1С, а JS скрипт на страничке, которую, я открываю с помощью встроенного в 1С браузера. Этот скрипт и подписывает документы. Мне нужно только заполнить контрол с именем файла в окне выбора файла. Во внешнем дельфи приложении я могу это делать (спасибо подсказкам в этот топике). Осталось отловить событие открытия окна. И всё!
...
Рейтинг: 0 / 0
12.06.2020, 18:53
    #39968667
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Karton
Dimitry Sibiryakov,
Файлы отправляет не 1С, а JS скрипт на страничке, которую, я открываю с помощью встроенного в 1С браузера. Этот скрипт и подписывает документы. Мне нужно только заполнить контрол с именем файла в окне выбора файла. Во внешнем дельфи приложении я могу это делать (спасибо подсказкам в этот топике). Осталось отловить событие открытия окна. И всё!

А нельзя этот же скрипт открывать во встроенном в дельфи приложение браузере?
Более того, если это JS-скрипт, значит он выполняется на клиенте и можно посмотреть что он делает и сделать свой аналог, который будет брать файлы откуда надо.
...
Рейтинг: 0 / 0
12.06.2020, 19:12
    #39968673
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
alekcvp,

я не могу в JS напрямую в инпут с type=file вписывать имя локального файла. Только через окно выбора файла, к которому я и пытаюсь обратиться из внешней проги на дельфи
...
Рейтинг: 0 / 0
12.06.2020, 19:15
    #39968674
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Чтобы изучать чужие окошки, хорошо подходит программа WinSpy++. А чтобы в них ковыряться шаловливыми ручками - функция SetWindowsHookEx.
...
Рейтинг: 0 / 0
12.06.2020, 19:29
    #39968677
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Kartonя не могу в JS напрямую в инпут с type=file вписывать имя локального файла.

Ну так выкинь из этой картины JS. Подписывай файл самостоятельно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2020, 21:10
    #39968699
sql2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Karton
alekcvp,

я не могу в JS напрямую в инпут с type=file вписывать имя локального файла. Только через окно выбора файла, к которому я и пытаюсь обратиться из внешней проги на дельфи



Используй CADESCOM, подпиши и отправь сам, проще некуда.
...
Рейтинг: 0 / 0
12.06.2020, 23:19
    #39968725
Beton-Karton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
alekcvp,

Этот путь, конечно, самый радикальный, тем более, что я могу модифицировать DOM как угодно. Но разве не логичнее подставить в окно выбора файла то, что мне нужно, а потом пусть скрипт сам подписывает и отправляет так, задумано разработчиками. Мне достаточно только подхватить окно, впихнуть в эдит путь к файлу, потом SendMessage(h, BM_CLICK, 0, 0); Зачем огород городить?
...
Рейтинг: 0 / 0
13.06.2020, 00:47
    #39968731
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FindWindowEx
Beton-Karton
Но разве не логичнее подставить в окно выбора файла то, что мне нужно, а потом пусть скрипт сам подписывает и отправляет так, задумано разработчиками. Мне достаточно только подхватить окно, впихнуть в эдит путь к файлу, потом SendMessage(h, BM_CLICK, 0, 0); Зачем огород городить?

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


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