Найти - Пользователи
Полная версия: как это переложить на PYTHON 3.7
Начало » Python для экспертов » как это переложить на PYTHON 3.7
1
McAndrew
Здравствуйте имею на 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) нет такого атрибута
подскажите пожалуйста в какую сторону копать??? Ну или пример какой чтобы получить строку
заранее благодарен за понимание и поддержку.
doza_and
McAndrew
подскажите пожалуйста в какую сторону копать???
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindow
Для начала замените win32.win32console.GW_CHILD на 5

А вообще использование WinAPI уместно при решении нестандартных задачек. Обычно пользуются более высокоуровневые подходы типа pywinauto,PyAutoGUI и т.п. В свою очередь использование этих методов приводит к отказу от использования gui программ при автоматизации действий :).
McAndrew
спасибо заменил
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());
}
doza_and
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);
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB