Как мне подключить ctypes.windll.user32.MessageBoxW с помощью ctypes.windll.user32.SetWindowsHookExW?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как мне подключить ctypes.windll.user32.MessageBoxW с помощью ctypes.windll.user32.SetWindowsHookExW?

Сообщение Anonymous »

Я хочу создать программу-шутку, которая сначала открывает окно сообщения, после его закрытия в случайном месте появляется другое окно сообщения. Он будет повторять это до тех пор, пока что-нибудь не убьет его задачу. Используя окна сообщений tkinter, которые невозможно подключить, я должен создать другую форму tkinter (которая действительно уродлива и отличается от окна сообщений Windows). Итак, я перешел на ctypes, и начались проблемы. Затем я создал функцию обратного вызова для перехватчика, когда я передаю функцию второму параметру функции ctypes.windll.user32.SetWindowsHookExA, она показывает TypeError: неверный тип. Как это исправить?

Я пытался привести функцию к c_void_p, но при этом получал больше ошибок, таких как «Недопустимая инструкция».

Это мой код:

Код: Выделить всё

import ctypes, random

def msgBoxHook(nCode, wParam, lParam):
if nCode == 3:
hwnd = ctypes.wintypes.HWND
hwnd = wParam

msgRekt = ctypes.wintypes.RECT # >:)

ctypes.windll.user32.GetWindowRect(hwnd, ctypes.byref(msgRekt))
ctypes.windll.user32.MoveWindow(hwnd, randint(0, ctypes.windll.user32.GetSystemMetrics(0)), randint(0, ctypes.windll.user32.GetSystemMetrics(1)), msgRekt.right - msgRekt.left, msgRekt.bottom - msgRekt.top, True)
return ctypes.windll.user32.CallNextHookEx(0, nCode, wParam, lParam)

# When I try to call
ctypes.windll.user32.SetWindowsHookExA(5, msgBoxHook, 0, ctypes.windll.kernel32.GetCurrentThreadId())

# It shows:
"""
Traceback (most recent call last):
File "test.py", line 1, in 
ctypes.ArgumentError: argument 2: : wrong type
"""
Ожидается: при использовании ctypes.windll.user32.MessageBoxW(None, «Hello», «World», 0x00000010 | 0x00000000) открывается окно сообщения в случайной позиции с подпись «Мир», текст «Привет» и значок «Стоп» с кнопкой «ОК».

Реальность: как показано выше.

Подробнее здесь: https://stackoverflow.com/questions/566 ... l-user32-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • User32.SetWindowCompositionAttribute с PyQt5 вызывает ctypes.ArgumentError
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Ошибка ctypes: аргумент byref() должен быть экземпляром ctypes, а не целочисленным значением
    Anonymous » » в форуме Python
    0 Ответы
    90 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между ctypes.CDLL() и ctypes.cdll.LoadLibrary()?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Упаковка ctypes ctypes. Структура внутри класса в Python
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Python ctypes и np.array.ctypes.data_as неожиданное поведение при нарезке
    Anonymous » » в форуме Python
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»