其实就是我要利用HOOK API来防止木马之类的第三方工具截图,但是弄了些截图软件发现HOOK这些API并不太有效,就HOOK GetDC靠谱点,但是对系统运行影响很大,所以看看有没有其它能实现截图功能的API,一起HOOK掉得了。。
恩,思路不错,我最近就在找DDI GDI方面的资料,刚确定研究方向,谢咯~
我HOOK这些API,用PrintScreen照样截屏。
不用这些来实现还有很多方式,比如直接用Direct接口。
我现在就想知道有没有其它的API能实现。
API不现实吧
截屏本质上不就是复制当前DC吗?
不CreateCompatibleDC你把DC放哪?
CopyImage之类的最终也得调用BitBlt。
PrintScreen好像是通过显卡来实现的。
你也可以试试直接访问显存把二进制数据导出,再加一堆文件头拼成一张图片。
理论上应该可以,效率也应该最高。
要用VC做个截图工具,不要用CreateCompatibleDC,不要用BitBlt,求高手...
写驱动,为你的系统增加一个虚拟显示设备,将标准输出设为虚拟显示设备,该设备再负责将输出输出到标准显示设备和将截图写入文件。
用VC怎么截图
hMemDC = CreateCompatibleDC(hScrDC);\/\/ 创建一个与指定设备描述表兼容的位图 hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);\/\/ 把新位图选到内存设备描述表中 hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);\/\/ 把屏幕设备描述表拷贝到内存设备描述表中 StretchBlt(hMe...
求一个用VC6.0写的截图程序
BITMAP mbitmap;\/\/将位图信息填充到一个缓冲区内 bmprect.GetBitmap(&mbitmap);bmemDC.BitBlt(0,0,mbitmap.bmWidth,mbitmap.bmHeight,GetDC(),m_StartPoint.x,m_StartPoint.y,SRCCOPY);BITMAPINFOHEADER bih = {0};\/\/位图信息头 bih.biBitCount = mbitmap.bmBitsPixel;\/\/每个像素字节大小...
vc中如何用bitblt函数将内存位图分块
BITMAP BmpInfo ;CBitmap ClientBmp, *pOldBmp ;\/\/ 创建与设备DC兼容的内存DC mdc.CreateCompatibleDC ( &cdc ) ;TempDc.CreateCompatibleDC ( &cdc ) ;\/\/ 创建与设备DC兼容的位图对象 ClientBmp.CreateCompatibleBitmap ( &cdc, WndRect.right, WndRect.bottom ) ;mdc.SelectObject ( &ClientBmp...
VC++中为什么BitBlt()函数画不出图来??刚学VC++,菜鸟中菜鸟,希望各位大...
尽量使用BitBlt,不要使用StretchBlt进行COPY。原因是:1)StretchBlt进行拉伸需要使用算法,执行速度肯定没BitBlt快 2)StretchBlt的拉伸会使图形失真,仔细看下一幅800*600的图片,用StretchBlt拉伸至全屏后,和用Windows自带的图片查看器进行拉伸后比对,就会发现StretchBlt很傻的。3)图片拉伸算法有几个需要...
如何用VC++6.0在窗口里显示一个位图?请高手指点
在vc++中如何实现显示一个位图 基本步骤如下:1.打开vc++6.0,选择“文件”->“新建",打开新建对话框,选择“工程”->MFC AppWizard [exe]->选择保存路径及文件名ddd,选择单文档->完成。2.打开窗口左下角选择Re..,在Dialog上右击,选择插入->Bitmap->引入->引入位图。3.选择Cl..,展开CDddd...
在vc中使用双缓冲显示技术,图像显示不出来,代码如下,请问高手哪里有问题...
如果这些代码是在一个函数里面的话,这个函数是如何被调用的,并不是调用pDC->BitBlt就可以显示出来的。比如调用pDC->BitBlt之前需要使得picture控件先变成无效。
vc 循环截图 出现黑屏
程序本身没有问题,就是内存泄露严重,好好检查分配的内存没有释放,比如 memDC = CreateCompatibleDC(hDC);创建了记得释放!
VC6中 BitBlt 执行出错怎么解决?
BitBlt,这个函数参数你写错了,第4 、 5 个参数,你写到第7 、8 个位置了,应该是这样 if (!BitBlt((HDC)hDC, 0, 0, 200 , 200 , (int)hMemDC, 0, 0, SRCCOPY)) return -2;
求教VC++高手,如何将自己导入的bitmap显示
1.把你的图包含到程序的“Bitmap资源”里,会有提示,主要是说该资源使用了大于256色的调色板,在VC里无法编辑等等,你确定就行 2.定位到 OnPaint(),在if()...else()中的else()下添加如下代码 else { \/\/CDialog::OnPaint();\/\/注意要禁止这个调用 CPaintDC dc(this);CRect rect;...