MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / GetObject

Function GetObject

pydevd_attach_to_process/winappdbg/win32/gdi32.py:443–489  ·  view source on GitHub ↗
(hgdiobj, cbBuffer=None, lpvObject=None)

Source from the content-addressed store, hash-verified

441# __out LPVOID lpvObject
442# );
443def GetObject(hgdiobj, cbBuffer=None, lpvObject=None):
444 _GetObject = windll.gdi32.GetObject
445 _GetObject.argtypes = [HGDIOBJ, ctypes.c_int, LPVOID]
446 _GetObject.restype = ctypes.c_int
447 _GetObject.errcheck = RaiseIfZero
448
449 # Both cbBuffer and lpvObject can be omitted, the correct
450 # size and structure to return are automatically deduced.
451 # If lpvObject is given it must be a ctypes object, not a pointer.
452 # Always returns a ctypes object.
453
454 if cbBuffer is not None:
455 if lpvObject is None:
456 lpvObject = ctypes.create_string_buffer("", cbBuffer)
457 elif lpvObject is not None:
458 cbBuffer = sizeof(lpvObject)
459 else: # most likely case, both are None
460 t = GetObjectType(hgdiobj)
461 if t == OBJ_PEN:
462 cbBuffer = sizeof(LOGPEN)
463 lpvObject = LOGPEN()
464 elif t == OBJ_BRUSH:
465 cbBuffer = sizeof(LOGBRUSH)
466 lpvObject = LOGBRUSH()
467 elif t == OBJ_PAL:
468 cbBuffer = _GetObject(hgdiobj, 0, None)
469 lpvObject = (WORD * (cbBuffer // sizeof(WORD)))()
470 elif t == OBJ_FONT:
471 cbBuffer = sizeof(LOGFONT)
472 lpvObject = LOGFONT()
473 elif t == OBJ_BITMAP: # try the two possible types of bitmap
474 cbBuffer = sizeof(DIBSECTION)
475 lpvObject = DIBSECTION()
476 try:
477 _GetObject(hgdiobj, cbBuffer, byref(lpvObject))
478 return lpvObject
479 except WindowsError:
480 cbBuffer = sizeof(BITMAP)
481 lpvObject = BITMAP()
482 elif t == OBJ_EXTPEN:
483 cbBuffer = sizeof(LOGEXTPEN)
484 lpvObject = LOGEXTPEN()
485 else:
486 cbBuffer = _GetObject(hgdiobj, 0, None)
487 lpvObject = ctypes.create_string_buffer("", cbBuffer)
488 _GetObject(hgdiobj, cbBuffer, byref(lpvObject))
489 return lpvObject
490
491
492# LONG GetBitmapBits(

Callers 1

GetBitmapBitsFunction · 0.85

Calls 2

GetObjectTypeFunction · 0.85
BITMAPClass · 0.85

Tested by

no test coverage detected