XP系统桌面DC对应的显存位置获取方法
2013-12-18 15:36
387 查看
以下代码在XP下编写测试
1. 获取桌面DC的Bitmap m_hDesk = GetDesktopWindow(); m_hDeskDc = GetDC(m_hDesk); m_hDeskBitmap = (HBITMAP)GetCurrentObject(m_hDeskDc, OBJ_BITMAP);
2. 获取GDI的内核对象 pPeb = (Nntdll::PEB *)Nntdll::GetPEB(); m_pGdiTable = (GDI_TABLE_ENTRY *)pPeb->GdiSharedHandleTable; dwCurPid = GetCurrentProcessId(); for(i=0; i<OS_MAXGDI_COUNT; i++) { if(m_pGdiTable[i].dwProcessId && m_pGdiTable[i].dwProcessId != dwCurPid) continue; hCurObj = (HGDIOBJ)(__int64)MAKELONG(i, m_pGdiTable[i].uFullUnique); if(hCurObj != m_hDeskBitmap) continue; m_pKrnObj = m_pGdiTable[i].pKernelData; if(m_pKrnObj == NULL) break; return TRUE; }
3. 读取内核对象BITMAPOBJ typedef struct _SURFOBJ { DHSURF dhsurf; HSURF hsurf; DHPDEV dhpdev; HDEV hdev; SIZEL sizlBitmap; ULONG cjBits; PVOID pvBits; PVOID pvScan0; LONG lDelta; ULONG iUniq; ULONG iBitmapFormat; USHORT iType; USHORT fjBitmap; }SURFOBJ; typedef struct _BITMAPOBJ { BASEOBJECT BaseObject; SURFOBJ SurfObj; FLONG flHooks; FLONG flFlags; SIZE dimension; /* For SetBitmapDimension(), do NOT use to get width/height of bitmap, use bitmap.bmWidth/bitmap.bmHeight for that */ struct _FAST_MUTEX *BitsLock; /* You need to hold this lock before you touch the actual bits in the bitmap */ /* For device-independent bitmaps: */ DIBSECTION *dib; HPALETTE hDIBPalette; HDC hDC; // Doc in "Undocumented Windows", page 546, seems to be supported with XP. }BITMAPOBJ, *PBITMAPOBJ; NNtKrn::BITMAPOBJ m_bmKrnObj ywkc.ReadKrnMem(m_pKrnObj, &m_bmKrnObj, sizeof(m_bmKrnObj));
4. 映射到用户地址 m_pDataMap = ywkc.MapKernelAddr(m_bmKrnObj.SurfObj.pvBits, m_dwDataSize); //MmMapLockedPagesSpecifyCache
m_pDataMap就是指向桌面的显存, 可以直接使用
相关文章推荐
- WNxp下让所有用户桌面显示系统默认图标的方法
- python获取字母在字母表对应位置的几种方法及性能对比较
- java 动态获取当前系统桌面位置
- python获取字母在字母表对应位置的几种方法及性能对比较
- C#获取系统毫秒时的方法(对应java的currentTimeMillis)
- XP系统启动后,进入桌面慢,显示桌面慢,开机慢的原因及解决方法
- c#获取xp系统信息的几种方法
- xp输入法不见了怎么办 桌面系统输入法不见了找回方法
- 去除xp系统桌面图标蓝色背景方法
- java中的getProperty()方法。获取系统中属性名为key的属性对应的值
- 在不使用JFrame的情况下,获取鼠标桌面位置的最(zui)小(er)方法
- c#获取xp系统信息的几种方法
- 获取系统任务栏位置宽高信息的方法
- XP系统桌面图标的显示与隐藏方法
- python获取当前系统的桌面的路径的四种方法
- System.getProperty()方法获取系统变量
- java中获取当前系统时间的方法
- 用 javascript 获取当页面上鼠标(光标)位置 和 触发事件的对象 的方法
- C# 判断当前系统是XP还是WIN7 .获取当前系统版本