c++ 截屏程序

标签 c++ screenshot printscreen

我正在制作一个程序,它将点击键盘的 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

出于某种原因,代码无法正常工作。如果我去绘画并尝试从剪贴板绘画,它只会超过我在使用我的程序之前所做的任何打印屏幕。此外,我的键盘不需要我在打印屏幕上按“alt”键就可以正常工作..

我曾尝试包括按下 Alt 键 beeefore 按下 printscreen 键,以及释放 Alt 键 afffftter 释放 printscreen 键,我得到的不同之处在于,当我尝试在油漆上过去,我涂上了某种全黑屏幕……这只是我做的一个测试,看看它是否有所作为,但我的实际键盘只需要点击打印屏幕按钮就可以截屏。

伙计们,我做错了什么有什么想法吗?

编辑: 只是想让你们知道,该程序实际上可以编译。我还添加了其他将剪贴板文件保存到目录的代码,如果我手动点击打印屏幕按钮,我确实会正确保存文件......但是如果我继续循环此代码并保存到目录,则相同的图片出现手动获取的屏幕截图...所以这就是我确定点击打印屏幕按钮存在问题的方式。

最佳答案

在windows平台上: 您必须遵循一定的模拟按键顺序。

下面的代码是模拟keybd_event() 键盘事件并将捕获的屏幕放入剪贴板。

#include <iostream>
#include <windows.h>
using namespace std;



int main()
{
    keybd_event(VK_MENU, 0, 0, 0); //Alt Press
    keybd_event(VK_SNAPSHOT, 0, 0, 0); //PrntScrn Press


    keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0); //PrntScrn Release
    keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); //Alt Release

return 0;
}

关于c++ 截屏程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985315/

相关文章:

c++ - 类似 cplusplus.com 的 C++11 网站

c++ - 如何嵌入静态库的拷贝?

C++:在不禁用 UAC 的情况下截取 Windows 登录屏幕/UAC 提示

iphone - 如何将 UITableViewCell 导出到图像中?

javascript - window.clipboardData.setData ('text' ,'' )在 Chrome 中不起作用

c++ - 无法启动 OpenGL 窗口

C++ 自定义调用约定

android - 无法截图

python - 非事件窗口截图 PrintWindow + win32gui

windows - 上下文菜单的捕获窗口(Alt-Print Screen)