Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 2, 2009 09:45:28

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

dll через windll

Хочу достать функцию SystemParametersInfo, например,

line 11:dl = windll.rundll32
В резульате:

Traceback (most recent call last):
File "D:\pr\index.pyw", line 12, in <module>
dl = windll.rundll32
File "D:\Python26\lib\ctypes\__init__.py", line 423, in __getattr__
dll = self._dlltype(name)
File "D:\Python26\lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126]
Хотя,
dll1 = windll.kernel32
print dll1.GetModuleHandleW(None)
>>> 486539264

что не так с этой dll?



Отредактировано (Апрель 2, 2009 09:46:10)

Офлайн

#2 Апрель 2, 2009 10:05:27

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

dll через windll

Sergey912
что не так с этой dll?
Дык это вроде не DLL, а запускаемый файл, который позволяет запускать функции из других dll

А SystemParametersInfo лежит в user32
>>> import ctypes
>>> dll1 = ctypes.windll.user32
>>> dll1.SystemParametersInfoW
<_FuncPtr object at 0x00C2E990>



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

Отредактировано (Апрель 2, 2009 10:12:17)

Офлайн

#3 Апрель 5, 2009 18:51:35

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

dll через windll

А как с константами?
Например, перерисовать обои на рабочем столе?

Делаю для питона:
SPI_SETDESKWALLPAPER = int(20)
SPIF_UPDATEINIFILE = int(0x01)
SPIF_SENDWININICHANGE = int(0x02)
windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER,0,“D:\\1.bmp”,SPIF_UPDATEINIFILE)


Константы брал отсюда http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx,
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;

Откуда все эти константы брать?
Такую константу Const SPIF_UPDATEINIFILE = &H1
питон в int не преобразовывает…



Отредактировано (Апрель 5, 2009 18:54:29)

Офлайн

#4 Апрель 5, 2009 19:18:57

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

dll через windll

Упс, разобрался windll.user32.SystemParametersInfoA
Еще бы разобраться, как устанавливать параметр “Растянуть”, “замостить” и подобные



Отредактировано (Апрель 5, 2009 20:00:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version