Форум сайта python.su
Здравствуйте.
К примеру есть произвольное приложение. У него есть меню, есть, в верхней части, горизонтальная панель с кнопками. Есть ли возможность, и если есть то как добавить к уже существующим кнопкам свою кнопку с вызовом какой-нибудь функции в py файле. Использовать, скорее всего придётся win32api, желательно через pywinauto. Получить доступ к панели можно средствами swapy, либо Inspect Object (“C:\Program Files\Windows Kits\8.1\bin\x86\inspect.exe”).
Если кто знает как, покажите на примере того же notepad++, можно на своём примере.
Заранее спасибо )).
Офлайн
Питон тут не поможет. Скачиваете исходный код notepad++ разбираетесь что там и как и добавляете свою кнопку. Потом собираете свою версию редактора. Многие программы позволяют добавлять пользовательские функции, пункты меню, плагины (в notepad++ есть плагины). Создать свой плагин это более простой путь. Смотрите документцию и делаете как там сказано.
Отредактировано doza_and (Дек. 11, 2016 08:28:32)
Офлайн
Дело не в notepade. notepad просто пример. Есть скомпилированное приложение, исходников нет. Я не нарушая лицензию использую обозначенные им формы ввода данных. Только данных много, и руками бить их в 21 век не хочется. Импорт не предусмотрен. Но есть win32, есть pywinauto. Перебор элементов формы уже разобрал, а вот добавить кнопку к панели для удобного использования не получается. Питон, конечно не поможет, но win32api, вроде, имеет возможность, а pywinauto python надстройка над win32api. Просто спросил, может кто знает способ.
Офлайн
SergeiIvpywinauto - крайний случай. Я бы на вашем месте поискал другую программу если нет исходников и ясного способа автоматизации. Можно написать свою аналогично, и сделать исходники доступными.
Есть скомпилированное приложение, исходников нет. Импорт не предусмотрен
Отредактировано doza_and (Дек. 11, 2016 12:28:28)
Офлайн
“… Можно написать свою аналогично, и сделать исходники доступными…” не думаю, что легко самому состряпать прогу аналогичную, к примеру, 1С (в моём случае другая, но подобная и тоже российская).
“…0. НЕ ИСПОЛЬЗУЙТЕ ПРОГРАММЫ БЕЗ ИСХОДНОГО КОДА!…” - среди экономико - бухгалтерских программ они все без исходного кода (не считая Либру), включая российского производства, и не использовать их не получится.
“…1. Посмотреть доки. Может предусмотрено разработчиками автоматизировать ввод….” - уже, в данном случае не предусмотренно.
“…2. Попросить разработчика добавить нужный функционал…” - можно, но разработчик центральная крупная фирма и за даже небольшую фигульку просит крупную сумму, которая даже предприятию накладна.
“…3. Уже хак. часто данные в элементарном виде падают в файлы, базы данных и т.п. Можно туда данные запихать….” - есть доступ к БД на сервере, и что? при неизвестной структуре с сотнями таблиц не думаю, что это реально.
“..Это и имея исходники не просто сделать…” - имея исходники вполне даже легко, но обновления сведут к нулю усилия.
В моём случае я с помощью pywinauto вполне успешно автоматически запускаю программу, ввожу логин, пароль, в глубоко вложенном меню открываю форму и перебирая поля ввода завожу из excel данные в форму, нажимаю сохранить. Всё бы хорошо, но при множествах разных форм обращение к сторонним py файлам можно, но не очень удобно, да и просто не очень удобно. Как сказал Бендер “..Начать карьеру многоженца без дивного, серого в яблоках, костюма было невозможно..”, так и в моём случае панелька - костюм серый в яблоках ).
Офлайн
SergeiIv
они все без исходного кода и не использовать их не получится
SergeiIvвот это как раз следствие непродуманной политики вашего руководства
и за даже небольшую фигульку просит крупную сумму
SergeiIvВ большинстве случаев даже очень реально. У нас были случаи когда не оказывалось исходников поскольку продукт продавливался на уровне правительства или концерна, вполне себе удачно “ломается” структура базы, иногда даже “ломаются” структуры пакетов сетевого обмена. Основная сложность обычно бывает когда у вас нет доступа к базе данных по административным причинам. Так что посмотрите какие таблицы и как меняются и пихайте данные аналогично. Данное решение обычно оказывается на порядок более производительным чем управлять менюшками.
при неизвестной структуре с сотнями таблиц не думаю, что это реально.
SergeiIvПохоже вам нужно gui приложение на питоне, которое будет менять перечень контролов путем мониторинга окон вашего главного приложения. Если вариантов не много, то может шоткаты завести?
Всё бы хорошо, но при множествах разных форм обращение к сторонним py файлам можно, но не очень удобно, да и просто не очень удобно.
Отредактировано doza_and (Дек. 11, 2016 14:57:49)
Офлайн
“…В большинстве случаев даже очень реально….” - ну в принципе всё возможно, всё дело в трудозатратах. Но в моём случае это проблемно. Ведутся логи, средства отката, промежуточные суммы, … изменяемые таблицы с данными найти можно конечно, но не зная всей кухни можно серьёзно навредить приложению с которым работает весь город. Потом сбэкапить можно, но введенные после точка бэкапа данные потеряются (и по шапке будет прилично ))).
“…Похоже вам нужно gui приложение на питоне..”- это запасной вариант. С панелькой лучше. Если сдамся потом червяк сточит. Вообще в этой панельке я могу обратиться к существующим кнопкам, кликнуть, скрыть. Даже саму панель переместить, даже убрать. Но так хочется свою кнопку или листбокс добавить чтобы все “языком цокнули” и не знаю как. Надеюсь на win32api, ведь с питона можно к любой функции win32 обратиться, почему бы и кнопку на панель не добавить. Хотя здесь мои знания заканчиваются.
“…Я скептически отношусь к pywinauto…” - ну если в ней какие то win32 не обёрнуты, можно самому добавить. Текущий вариант конечно наверное не идеален, хотя я не всю pywinauto знаю, может, и скорее всего, нужный функционал есть.
Офлайн
SergeiIvВ этом вы безусловно правы… Можно уронить базу, так что хозяева не починят.
не зная всей кухни можно серьёзно навредить приложению с которым работает весь город
SergeiIvДа но в текущем приложении (т.е. в питоне). А вы хотите в чужом приложении ковыряться. Туда можно максимум сообщения посылать.
ведь с питона можно к любой функции win32 обратиться
Офлайн