Seite 1 von 1

gray hat python my_debugger_defines geht nicht!

Verfasst: Mittwoch 15. Februar 2012, 17:20
von amigo
hi,
ich lese grad "Gray hat python" und mach die beispiele nach.
Allerdings kommt bei mir folgender Fehler wenn ich my_debugger_defines öffne:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python27\python\gray hat python\src\debugger\my_debugger_defines.py", line 16, in <module>
    class STARTUPINFO(Structure):
TypeError: Error when calling the metaclass bases
    second item in _fields_ tuple (index 0) must be a C type
ich hab mir alles noch mal zeile für zeile angeguckt. Es ist alles gleich wie im original.
Könnte es etwas damit zutun haben, dass ich python 2.7 verwende statt 2.5?
Danke im Voraus

Re: gray hat python my_debugger_defines geht nicht!

Verfasst: Mittwoch 15. Februar 2012, 17:21
von deets
Glaube ich nicht. Bitte zeig uns den Source.

Re: gray hat python my_debugger_defines geht nicht!

Verfasst: Mittwoch 15. Februar 2012, 17:53
von amigo
oh sorry voll vergessen hier:

Code: Alles auswählen

from ctypes import *

WORD =  c_ushort()
DWORD = c_ulong()
LPBYTE= POINTER(c_ubyte)
LPTSTR= POINTER(c_char)
HANDLE = c_void_p

DEBUG_PROCESS = 0x00000001
CREATE_NEW_CONSOLE = 0x00000010

class STARTUPINFO(Structure):
    _fields_ = [
                ("cb", DWORD),
                ("lpReserved", LPTSTR),
                ("lpDesktop", LPTSTR),
                ("lpTitle", LPTSTR),
                ("dwX", DWORD),
                ("dxY", DWORD),
                ("dxXSize", DWORD),
                ("dxYSize", DWORD),
                ("dwXCountChars", DWORD),
                ("dxYCountChars", DWORD),
                ("dwFillAttributes", DWORD),
                ("dwFlags", DWORD),
                ("wShowWindow", WORD),
                ("cbReserved2", WORD),
                ("lpReserved2", LPBYTE),
                ("hStdInput", HANDLE),
                ("hStdOutput", HANDLE),
                ("hStdError", HANDLE)
                ]

class PROCESS_INFORMATION(Structure):
    _fields_ = [
                ("hProcess", HANDLE),
                ("hThread", HANDLE),
                ("dwProcessId", DWORD),
                ("dwThreadId", DWORD)
                ]

Re: gray hat python my_debugger_defines geht nicht!

Verfasst: Mittwoch 15. Februar 2012, 17:56
von BlackJack
@amigo: `WORD` und `DWORD` sind falsch definiert. Da wird der *Typ* verlangt und nicht ein *Exemplar* vom Typ. Das ist letztlich auch genau das was die Fehlermeldung aussagt.