Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2023, 07:56   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию No module named '_cffi_backend'

здравствуйте, на просторах инета нашёл код:
Код:
from cffi import FFI # pip install cffi

def main():
    ffi = FFI()
    ffi.cdef("""
            int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCation, UINT uType);
	        """)

    _user32 = ffi.dlopen("USER32.DLL")
    lpText = bytes("Hello from cffi", "utf-8")
    lpCaption = bytes("Test cffi", "utf-8")
    MB_OK = 1
    if _user32.MessageBoxA(ffi.NULL, lpText, lpCation, MB_OK):
        print("MessageBox showed!")

if __name__ == "__main__":
    main()
его цель вызвать MessageBoxA из системной библиотеки, получил ошибку - она в сабже, подскажите, что я делаю НЕ так?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 22.12.2023, 09:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

pip install -U cffi
p51x вне форума Ответить с цитированием
Старый 22.12.2023, 09:32   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
pip install -U cffi
спасибо работает, и там ошибка была
Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
lpCation
нужно: lpCaption
если кому понадобится........
Ципихович Эндрю вне форума Ответить с цитированием
Старый 22.12.2023, 09:38   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
if _user32.MessageBoxA(ffi.NULL, lpText, lpCation, MB_OK):
print("MessageBox showed!")
что не срабатывает условие, без разницы, какую кнопку нажать ОК или Отмена всегда срабатывает сообщение MessageBox showed!, как это исправить?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 22.12.2023, 11:20   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну так правильно и 1, и 2 это истина
p51x вне форума Ответить с цитированием
Старый 22.12.2023, 13:26   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
MB_OK = 1
MB_OK (т.е. только кнопка OK) имеет значение 0, а 1 это MB_OKCANCEL (хотя название переменной не влияет на работу скрипта, а только немного путает).
Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
всегда срабатывает сообщение MessageBox showed!
Смотреть на возвращаемое значение (https://learn.microsoft.com/ru-ru/wi...a#return-value):
Цитата:
IDABORT 3 Была выбрана кнопка Прерывание .
IDCANCEL 2 Была выбрана кнопка Отмена .
IDCONTINUE 11 Была выбрана кнопка Продолжить .
IDIGNORE 5 Была выбрана кнопка Пропустить .
IDNO 7 Кнопка Нет выбрана.
IDOK 1 Была выбрана кнопка ОК .
IDRETRY 4 Была выбрана кнопка Повторить .
IDTRYAGAIN 10 Была выбрана кнопка Повторить попытку.
IDYES 6 Была выбрана кнопка Да .
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.12.2023, 13:31   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

ясно, понятно, благодарю
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
No module named 'django'. Как исправить ошибку? Женя32 Python 1 02.08.2021 11:51
Python ошибка no module named flask Alisher_123456 Python 6 29.01.2019 01:48
Named pipes, парсинг строки Alex217Vish Visual C++ 0 04.11.2010 22:29
named pipes st01en Общие вопросы Delphi 1 26.09.2010 23:33
использование named Pipe Sparky Общие вопросы .NET 1 29.03.2010 17:54