Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2019 07:34:12

McAndrew
Зарегистрирован: 2019-11-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

как это переложить на PYTHON 3.7

Здравствуйте имею на C# рабочую программу (кусок) Phyton только начал изучать
try
{
IntPtr ptr = WinAPI.FindWindow(null, “Алерт”);
if (ptr.ToInt32() != 0)
{
IntPtr child = new IntPtr;
child = WinAPI.GetWindow(ptr, WinAPI.GetWindow_Cmd.GW_CHILD);
StringBuilder title = new StringBuilder();
for (int i = 1; i <= 5; i++)
{
child = WinAPI.GetWindow(child, WinAPI.GetWindow_Cmd.GW_HWNDNEXT);
WinAPI.SendMessage(child, Convert.ToInt32(WinAPI.GetWindow_Cmd.WM_GETTEXT), (IntPtr)25, title);

listBox1.Items.Add(title.ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “Ошибка”, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Получаю текстовую строку из дочернего окна
В Python 3.7 делаю следующее
import sys
import win32.win32gui
import win32.win32api
import win32.win32console

def main():
main_app = ‘Алерт’
al_wnd = win32.win32gui.FindWindow(None, main_app)
if not al_wnd:
print(“Не найдено!”)
return
al_sign_wnd = win32.win32gui.GetWindow(al_wnd, win32.win32console.GW_CHILD)

на эту строку ругается
al_sign_wnd = win32.win32gui.GetWindow(al_wnd, win32.win32console.GW_CHILD) нет такого атрибута
подскажите пожалуйста в какую сторону копать??? Ну или пример какой чтобы получить строку
заранее благодарен за понимание и поддержку.

Офлайн

#2 Ноя. 20, 2019 08:50:24

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

как это переложить на PYTHON 3.7

McAndrew
подскажите пожалуйста в какую сторону копать???
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindow
Для начала замените win32.win32console.GW_CHILD на 5

А вообще использование WinAPI уместно при решении нестандартных задачек. Обычно пользуются более высокоуровневые подходы типа pywinauto,PyAutoGUI и т.п. В свою очередь использование этих методов приводит к отказу от использования gui программ при автоматизации действий :).



Офлайн

#3 Ноя. 20, 2019 13:52:55

McAndrew
Зарегистрирован: 2019-11-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

как это переложить на PYTHON 3.7

спасибо заменил
al_sign_wnd = win32.win32gui.GetWindow(al_wnd, 5)
так же заменил
child = WinAPI.GetWindow(child, WinAPI.GetWindow_Cmd.GW_HWNDNEXT);
на
child = WinAPI.GetWindow(child, 2);
получил
child = WinAPI.GetWindow(ptr, 5);
а вот отсюда не знаю как перебирать в цикле для PYTHONa
for (int i = 1; i <= 5; i++)
{
child = WinAPI.GetWindow(child, 2);
и эту строку тоже не знаю как сделать в ПИТОНЕ
WinAPI.SendMessage(child, Convert.ToInt32(WinAPI.GetWindow_Cmd.WM_GETTEXT), (IntPtr)25, title);
//lbWindows.Items.Add(title.ToString());
listBox1.Items.Add(title.ToString());
}

Офлайн

#4 Ноя. 20, 2019 19:04:21

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

как это переложить на PYTHON 3.7

McAndrew
не знаю как перебирать в цикле для PYTHONa
Возникает вопрос. Если вы не знаете азов, зачем вы на питоне пишете. Есть шарп и ладно.

 for i in range(1,6):
   ....
WinAPI.SendMessage(child, Convert.ToInt32(WinAPI.GetWindow_Cmd.WM_GETTEXT), (IntPtr)25, title);
В питоне типов немного надо пробовать.
 WinAPI.SendMessage(child, 0x000D, 25, title);



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version