㈠ c语言怎么实现截图
1、用C语言实现windows程序截图,太麻烦。建议用C++做比较好。
2、截图例程:
#ifndefCAPTUREBLT
#defineCAPTUREBLT0x40000000
#endif
HBITMAPCaptureScreen(LPRECTlpRect)//lpRect为NULL时表示全屏幕截图
{
HDChdc,hdcMem;
HBITMAPhemfCopy;
HWNDhwndScr;
intdstcx,dstcy;
if(lpRect)
{
dstcx=lpRect->right-lpRect->left;
dstcy=lpRect->bottom-lpRect->top;
}
else
{
dstcx=GetSystemMetrics(SM_CXSCREEN);
dstcy=GetSystemMetrics(SM_CYSCREEN);
}
if(LockWindowUpdate(hwndScr=GetDesktopWindow()))
{
hdc=GetDCEx(hwndScr,NULL,DCX_CACHE|DCX_LOCKWINDOWUPDATE);
hdcMem=CreateCompatibleDC(hdc);
if(NULL==hdcMem)
{
ReleaseDC(hwndScr,hdc);
LockWindowUpdate(NULL);
returnNULL;
}
hemfCopy=CreateCompatibleBitmap(hdc,abs(dstcx),abs(dstcy));
if(NULL==hemfCopy)
{
DeleteDC(hdcMem);
ReleaseDC(hwndScr,hdc);
LockWindowUpdate(NULL);
returnNULL;
}
SelectObject(hdcMem,hemfCopy);
if(lpRect)
StretchBlt(hdcMem,0,0,abs(dstcx),abs(dstcy),
hdc,lpRect->left,lpRect->top,dstcx,dstcy,SRCCOPY|CAPTUREBLT);
else
BitBlt(hdcMem,0,0,dstcx,dstcy,
hdc,0,0,SRCCOPY|CAPTUREBLT);
DeleteDC(hdcMem);
ReleaseDC(hwndScr,hdc);
LockWindowUpdate(NULL);
returnhemfCopy;
}
returnNULL;
}
㈡ c语言运行结果如何截屏
1 使用系统截屏功能。
需要使用按键print screen.在键盘上印的是prt sc。
单独使用该键,会截整个屏幕,如果用alt+prt sc,则会截取当前窗口的部分。
截屏后,数据会报存在剪贴板中,这时可以打开系统画图工具,或者任意图形编辑工具,粘贴。即可得到截屏后的数据,保存成文件即可。如果需要裁剪,也可以在这类工具中操作。
2 使用工具进行截屏。
目前提供快捷截屏的软件很多,比如qq,搜狗输入法,搜狗浏览器等都有截屏工具提供。
比如qq默认的截屏快捷键是ctrl+alt+a。同时按下三个键,会发现鼠标箭头变成彩色,这时点击并选择需要截屏的区域,双击即可完成截屏,将图片保存在内存中。
也可以在截屏后,直接保存成文件。
㈢ C语言在运行下怎么截图
用键盘的一个键:print
screen
退出C语言界面后在画图里右键粘贴,然后保存图片就可以了
㈣ C语言 服务项进行全屏幕截图 但是截图后是黑屏怎么办
没搞过,只能猜测:“屏幕”资源是和具体用户打开的界面有关的,所以MSDN说你需要获得station和desktop。而GetProcessWindowStation和GetThreadDesktop(GetCurrentThreadId());获得的都是当且进程和线程的station和desktop,而你在服务中,它根本就没有station和desktop啊,你拿到的是啥?
感觉你需要获得当且登录用户而不是服务的station和desktop,但是我确实不会