Отображение элементов строки меню IE с использованием Python

#python #internet-explorer-8

#python #internet-explorer-8

Вопрос:

Возможно ли в Python перечислить все пункты меню File (как показано на рисунке) Internet Explorer версии 8?

Это то, что я хочу перечислить:

введите описание изображения здесь

Комментарии:

1. Вы можете использовать библиотеку ctypes для доступа к Windows API и создать такую функциональность самостоятельно. Эта функция — хороший способ начать.

Ответ №1:

Вам просто нужно знать заголовок целевого окна. Затем вы можете имитировать нажатие кнопки мыши или использовать Alt / MenuFсочетание клавиш , чтобы открыть меню.

 #!/usr/bin/env python
# -*- coding: utf-8 -*-

from ctypes import windll

def main():
    find_window = windll.user32.FindWindowW
    send_message = windll.user32.SendMessageW

    window_name = u""
    window_handle = find_window(0, window_name)

    if window_handle > 0:
        show_menu(handle)
    else:
        print("Window handle not found")


if __name__ == "__main__":
    main()
  

Если вы хотите первое решение (щелчки мыши), затем добавьте:

 WM_KEYDOWN = 0x0100
WM_KEYUP = 0x0101

def point_to_long(x, y):
    return (y * 0x10000)   x

def show_menu(handle):
    target_pos = point_to_long(30, 40)
    send_message(window_handle, WM_LBUTTONDOWN, 0, target_pos)
    send_message(window_handle, WM_LBUTTONUP, 0, target_pos)
  

В противном случае (нажатие клавиши) используйте:

 VK_MENU = 0x12
VK_F = 0x46

def show_menu(handle):
    for key in (VK_MENU, VK_F):
        send_message(window_handle, WM_KEYDOWN, key, 0)
        send_message(window_handle, WM_KEYUP, key, 0)
  

Надеюсь, это поможет.

Комментарии:

1. Большое вам спасибо за вашу помощь. Если позволите, последний вопрос: могу ли я следовать той же схеме, которую вы мне дали, если я хочу рассчитать количество панелей инструментов, которые отображаются в браузере Internet Explorer? Или это другой завершенный процесс, для которого я должен задать новый вопрос вместо этого?

2. Пожалуйста. Я так не думаю, панель инструментов может располагаться в разных положениях в зависимости от предпочтений пользователя. Возможно, вы можете попробовать поиск в реестре установленных панелей инструментов.