如何在C++中将窗口的屏幕截图作为位图对象?假设我已经有了窗口句柄.而且我想知道当窗口处于最小化状态时是否可以获取窗口的屏幕截图?
这里的C++意味着VC++包含与Windows XP +(win32)相关的所有库.
是否可以在Windows环境中使用Haskell捕获屏幕(或窗口)?(即每隔几分钟拍摄一次屏幕截图).如果是这样,怎么会这样做(再次,在Haskell中,对于Windows环境)?
更多信息:我是Haskell的初学者.一位朋友希望通过为我的会计师事务所鞭打一些程序来削减开发成本,但他坚持认为我使用的是Haskell.他想要一个能够监控不同Windows XP工作站桌面的工具.它可能必须是客户端/服务器类型的应用程序.他只需要监控桌面活动,因此他不想要任何已经上市的昂贵管理软件.我已经筛选了大量文档,并且只能找到wxHaskell,但我在捕获屏幕时找不到太多,特别是对于Windows环境.
我正在编写一个应用程序,需要自动拍摄屏幕截图(就像按PrintScreen按钮一样).所以请建议我如何完成这项工作.原始的24位BMP图像就足够了.
请注意:我的应用程序是在C中,因此可以从我的代码中调用的任何win32 API都是我正在寻找的.
(有时回来我得到了codeproject的示例代码,用于获取屏幕截图但鼠标指针用户在拍摄屏幕时闪烁.由于多次拍摄,这对用户来说很烦人,所以我不想要鼠标指针闪烁!)
我正在制作一个程序,它将点击键盘的printscreen键.我使用的代码如下:
INPUT myInput;
myInput.type = INPUT_KEYBOARD;
KEYBDINPUT keyboardInput;
keyboardInput.wScan = 0;
keyboardInput.dwFlags = 0;
keyboardInput.time = 0;
keyboardInput.dwExtraInfo = 0;
keyboardInput.wVk = VK_SNAPSHOT;
myInput.ki = keyboardInput;
SendInput(1, &myInput, sizeof(INPUT));//pressing the printscreen key
keyboardInput.dwFlags = KEYEVENTF_KEYUP;
myInput.ki = keyboardInput;
SendInput(1, &myInput, sizeof(INPUT));//releasing the printscreen key
Run Code Online (Sandbox Code Playgroud)
由于某种原因,代码不能正常工作.如果我去绘画并试图从剪贴板中进行paist,那么它只会通过我在使用我的程序之前所做的任何打印屏幕.另外我的键盘不需要我用打印屏幕按"alt"以使其工作..
我曾尝试按下Alt键,按下打印屏幕键,以及释放Alt键,释放打印屏幕键,我得到的差异是当我试图通过它时油漆,我是一个完整的黑色屏幕...这只是我做的一个测试,看看它是否有所作为,但我的实际键盘仅截取打印屏幕按钮的截图.
关于我做错了什么人的任何想法?
编辑:只是为了让你们知道,该程序确实编译.我还添加了其他代码,将剪贴板文件保存到目录中,如果我手动点击打印屏幕按钮,我会正确保存文件...但是如果我继续循环这段代码并保存到目录,则相同的图片手动获取的屏幕截图显示...这就是我如何确定打印屏幕按钮的打击有问题.
我想在我的 Windows 机器上用 C 语言截取屏幕截图并将其另存为 jpg 或 bmp 或其他格式。无论如何,我尝试自己做,它可以并且运行良好,但速度慢得令人难以忍受,与prt scr关键不同- 我想知道是否有办法访问prt scr剪贴板并以某种方式将其粘贴到 jpg/png 文件中,或者是否有更快的方法获取所有屏幕像素。那是我的代码:
int main()
{
bitmap_t pic;
int i, j;
pic.width = GetSystemMetrics(SM_CXSCREEN);
pic.height = GetSystemMetrics(SM_CYSCREEN);
pic.pixels = (pixel_t**)malloc(sizeof(pixel_t*)*pic.width);
for(i = 0 ; i < pic.height ; i++)
{
pic.pixels[i] = (pixel_t*)malloc(sizeof(pixel_t)*pic.height);
}
HDC hdc = GetDC(NULL);
COLORREF c;
printf("Size of your monitor is %d by %d.\n", pic.width, pic.height);
for(i = 0 ; i < pic.width ; i++)
{
for(j = 0 ; j …Run Code Online (Sandbox Code Playgroud) 我真的很难编译程序,我只想知道如果我使用py2exe将python 2.5程序转换为.exe会更快。我不想花很多时间尝试编译它,如果最终只会变慢的话。我的程序使用OpenCV和PyAudio,但我认为这是它使用的唯一非纯Python模块。谢谢!
注意:我认为这个问题不需要代码摘要,但是如果需要,请在注释中说明。谢谢!
windows ×5
screenshot ×4
c ×2
c++ ×2
visual-c++ ×2
bitmap ×1
haskell ×1
printscreen ×1
py2exe ×1
python ×1
python-2.5 ×1
winapi ×1
window ×1
windows-xp ×1
wxhaskell ×1