concurrent.futures.ThreadPoolExecutor () не знает, как преобразовать параметр 1 - PullRequest
0 голосов
/ 11 января 2020

Я получил функцию ctypes, которая должна создать messageBOX для информирования пользователя о smthg. Я бы проделал эту функцию, но с ней она не работает, потому что функция ctypes возвращает выбранную пользователем кнопку. Поэтому я попытался использовать concurrent.futures. Я получил это:

def message(ID, title, message, icons, buttons):
    """ create a message in a new thread by using ctypes and threading :
    Buttons : MB_OK = 0x0 | MB_OKCXL = 0x01 | MB_YESNOCXL = 0x03 | MB_YESNO = 0x04 | MB_HELP = 0x4000
    Icon : ICON_EXLAIM = 0x30 | ICON_INFO = 0x40 | ICON_STOP = 0x10 """

    with concurrent.futures.ThreadPoolExecutor() as executor:
        future = executor.submit(ctypes.windll.user32.MessageBoxA, (ctypes.c_char_p(message), ctypes.c_char_p(title), buttons, icons))
        return [ID, future.result()]

ID, result = message(45, b"test", b"test", 0x40, 0x0)

это дает мне ошибку:

Traceback (most recent call last):
  File "C:\Users\Someone\Desktop\main.py", line 34, in <module>
    ID, result = message(45, "test", "test", 0x40, 0x0)
  File "C:\Users\Someone\Desktop\main.py", line 28, in message
    return (0, ctypes.c_char_p(message), ctypes.c_char_p(tile), icons, buttons)
TypeError: bytes or integer address expected instead of str instance
[Finished in 1.3s]
...