Don't let paste? Then let the computer help you!

Foreword

In this semester, the English class used the excellent class alliance. For the first time, I found out that there is still a composition that is not allowed to be pasted. ? ? But as a semi-hanging programmer, you can be lazy and never do it yourself, of course, this kind of thing is just to let the computer come directly (ノ ​​◕ω◕) ノ

premise

The two main modules are file reading and keyboard emulation, so that one file can be typed out.
Create a new txt file, save the content to be pasted, run the program, select the file, ready to hit ok, and within three seconds after the countdown starts, the cursor is on the place to be typed, so easy!

1. File reading

The first is to pop up the file selection dialog, use BROWSEINFO to
explain more,
then read the file, use ifstream, this will not put the link, I searched for many explanations

2. Analog keyboard

Actually two lines

keybd_event("键码",0,0,0);//按下
keybd_event("键码",0,KEYEVENTF_KEYUP,0);//松开

It is the same as when people press the keyboard.
By modifying the key code, we can make the computer press different keys.
If it is a combination key, like this:

keybd_event("键码1",0,0,0);//按下
keybd_event("键码2",0,0,0);//按下
keybd_event("键码2",0,KEYEVENTF_KEYUP,0);//松开
keybd_event("键码1",0,KEYEVENTF_KEYUP,0);//松开

Complete code

#include <bits/stdc++.h>
#include <Windows.h>
#include<Shlobj.h>
#include<CommDlg.h>
#include <string>
#include <fstream>
using namespace std;
#define ll long long
int l=0;//读取文件的s长度
string s[100000];//存储文件,可以更大
void OpebFile()
{
    TCHAR szBuffer[MAX_PATH] = {0};
    BROWSEINFO bi;
    ZeroMemory(&bi,sizeof(BROWSEINFO));
    bi.hwndOwner = NULL;
    bi.pszDisplayName = szBuffer;
    bi.lpszTitle = ("从下面选择文件或文件夹:");
    bi.ulFlags = BIF_BROWSEINCLUDEFILES;
    LPITEMIDLIST idl = SHBrowseForFolder(&bi);
    if (NULL == idl)
    {
        return;
    }
    SHGetPathFromIDList(idl,szBuffer);//转换文件路径
    cout <<"获得文件路径"<<endl;
    ifstream myfile(szBuffer);//这个就是文件名
    if (!myfile.is_open())
    {
        cout << "未成功打开文件" << endl;
    }
    while(getline(myfile,s[l]))//逐行读取
    {
        l++;
    }
    myfile.close();
    cout <<"已读取文件"<<endl;

}
void Big(char s)//大写字母
{
    if(!GetKeyState(VK_CAPITAL))//这个可以自行实验一下,看大写锁定不同情况的输出
    keybd_event(VK_CAPITAL,0,0,0);
    keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0);
    int n=s-'A'+65;
    keybd_event(n,0,0,0);
    keybd_event(n,0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_CAPITAL,0,0,0);
    keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0);
}
void Small(char s)//小写字母
{
    if(GetKeyState(VK_CAPITAL))
    keybd_event(VK_CAPITAL,0,0,0);
    keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0);
    int n=s-'a'+65;
    keybd_event(n,0,0,0);
    keybd_event(n,0,KEYEVENTF_KEYUP,0);
}
void Number(char s)//数字,注意小键盘和主键盘数字代码不一样
{
    int n=s-'0'+48;
    keybd_event(n,0,0,0);
    keybd_event(n,0,KEYEVENTF_KEYUP,0);
}

void Symbols(char s)//符号
{
    if(s==' ')
    {
        keybd_event(32,0,0,0);
        keybd_event(32,0,KEYEVENTF_KEYUP,0);
    }
    if(s==';')
    {
        keybd_event(186,0,0,0);
        keybd_event(186,0,KEYEVENTF_KEYUP,0);
    }
    else if(s==':')
    {
        keybd_event(16,0,0,0);
        keybd_event(186,0,0,0);
        keybd_event(186,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s==',')
    {
        keybd_event(188,0,0,0);
        keybd_event(188,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='<')
    {
        keybd_event(16,0,0,0);
        keybd_event(188,0,0,0);
        keybd_event(188,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='>')
    {
        keybd_event(16,0,0,0);
        keybd_event(190,0,0,0);
        keybd_event(190,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='.')
    {
        keybd_event(190,0,0,0);
        keybd_event(190,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='"')
    {
        keybd_event(16,0,0,0);
        keybd_event(222,0,0,0);
        keybd_event(222,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='\'')
    {
        keybd_event(222,0,0,0);
        keybd_event(222,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='(')
    {
        keybd_event(16,0,0,0);
        keybd_event(57,0,0,0);
        keybd_event(57,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s==')')
    {
        keybd_event(16,0,0,0);
        keybd_event(48,0,0,0);
        keybd_event(48,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='[')
    {
        keybd_event(219,0,0,0);
        keybd_event(219,0,KEYEVENTF_KEYUP,0);
    }
    else if(s==']')
    {
        keybd_event(221,0,0,0);
        keybd_event(221,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='{')
    {
        keybd_event(16,0,0,0);
        keybd_event(219,0,0,0);
        keybd_event(219,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='}')
    {
        keybd_event(16,0,0,0);
        keybd_event(221,0,0,0);
        keybd_event(221,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='!')
    {
        keybd_event(16,0,0,0);
        keybd_event(49,0,0,0);
        keybd_event(49,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='$')
    {
        keybd_event(16,0,0,0);
        keybd_event(52,0,0,0);
        keybd_event(52,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
    else if(s=='?')
    {
        keybd_event(16,0,0,0);
        keybd_event(191,0,0,0);
        keybd_event(191,0,KEYEVENTF_KEYUP,0);
        keybd_event(16,0,KEYEVENTF_KEYUP,0);
    }
}
void Print()
{

    cout << "is ok?"<<endl;
    string s2="";
    while(s2!="ok")
        cin>>s2;
    cout<<"光标指向要输入位置"<<endl;
    cout <<"3秒后开始"<<endl;
    for(int i=3;i>=1;i--)//留一点准备时间,可以自行加长
    {
        cout <<i<<endl;
        Sleep(1000);
    }
    for(int i=0;i<l;i++)
    {
        cout <<s[0]<<endl;
        ll l2=s[i].length();
        for(int j=0;j<l2;j++)
        {
            if(('a'<=s[i][j])&&(s[i][j]<='z')) Small(s[i][j]);
            else if('A'<=s[i][j]&&s[i][j]<='Z') Big(s[i][j]);
            else if('0'<=s[i][j]&&s[i][j]<='9') Number(s[i][j]);
            else Symbols(s[i][j]);
        }
        keybd_event(13,0,0,0);//换行
        keybd_event(13,0,KEYEVENTF_KEYUP,0);
    }
}
int main()
{
    OpebFile();
    Print();
    return 0;
}

If the symbol is not enough, search the key code by yourself and then add it

Do n’t ask me why I only have English. After all, I just write English composition.
Insert picture description here
Well, I admit that Chinese seems to be very troublesome. I should add text recognition. I wo n’t be too good.

Published 30 original articles · won 27 · 10,000+ views

Guess you like

Origin blog.csdn.net/qq_44616044/article/details/105408231
let