小玩意

· · 个人记录

序列号生成器

#include<bits/stdc++.h>
#include<windows.h>
#define k putchar('-')
using namespace std;
char get()
{
    unsigned r = rand();
    r ^= rand();
    for(int i = 0; i < rand() % 5; i++) rand();
    r &= rand();
    r |= rand() & ~rand();
    r = (0x4ac5fc2b ^ r) - rand() % 5;
    r %= 16;
    if(r < 10) return r + '0';
    else return r - 10 + 'a';
}
void prt(int n)
{
    int c = 0;
    for(int i = 0; c < n; i++)
        if(rand() % 2)
            cout << get(), ++c;
        else
            get();
}
void print()
{
    timeval tv;
    mingw_gettimeofday(&tv, NULL);
    srand(tv.tv_usec);
    cout << "{";
    prt(8);
    k;
    prt(4);
    k;
    prt(4);
    k;
    prt(4);
    k;
    prt(12);
    cout << "}" << endl;
}
int main()
{
    system("color 07");
    cout << "Nope              : ";
    print();
    while(rand() % 500 != 0)
    {
        cout << "Nope              : ";
        print();
    }
    cout << "Choose this :D  --> ";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x70);
    print();
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
    cout << "Press [Enter] to exit...\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
    getchar();
}

可视键盘

#include<iostream>
#include<bitset>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s on line %d\n", __FILE__, GetLastError(), api, __LINE__);}
void MyCls (HANDLE) ;
inline void clrscr (void)
{
    HANDLE hStdOut = GetStdHandle (STD_OUTPUT_HANDLE);
    MyCls (hStdOut);
    return;
}
void MyCls (HANDLE hConsole)
{
    COORD coord = {0,0};
    SetConsoleCursorPosition(hConsole, coord);
}
void color (int a)
{
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), a);
}
void NoEdit()
{
    HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
    DWORD mode;
    GetConsoleMode(hStdin, &mode);
    mode &= ~ENABLE_QUICK_EDIT_MODE;
    SetConsoleMode(hStdin, mode);
}
bitset<512>down;
bitset<512>pre;
void check (char c)
{
    if (!KEY_DOWN (c)) { down[c] = 0; }
    else { down[c] = 1; }
}
void checks (char c, int vk)
{
    if (!KEY_DOWN (vk)) { down[c] = 0; }
    else { down[c] = 1; }
}
void print_letter (char c)
{
    if (!down[c]) { color (7); }
    else { color (112); }
    printf ("  %c  ", c);
    color (7);
}
void print_spec (char c, const char *s, int sp = 2)
{
    if (!down[c]) { color (7); }
    else { color (112); }
    for (int i = 0; i < sp; i++) { printf (" "); }
    printf ("%s", s);
    for (int i = 0; i < sp; i++) { printf (" "); }
    color (7);
}
void sp (int n)
{
    while (n--) { printf (" "); }
}
const char TAB = 0, CAPS = 1, ENTER = 2, LSHI = 3, RSHI = 4, LCL = 5, RCL = 6, WIN = 7, LAT = 8,
           RAT = 9, INS = 10, HOM = 11, PGUP = 12, DEL = 13, END = 14, PGDN = 15, UP = 16, DN = 17, LT = 18,
           RT = 19, BS = 20, ESC = 21, FPLUS = 21, SL = 34, PS = 35, PAU = 36, NL = 37, SPACE = 38;
void print()
{
    clrscr();
    if(!KEY_DOWN(VK_SHIFT))
    {
        printf ("Keyboard:\n");
        print_spec (ESC, "ESC", 1);
        sp (8);
        print_spec (22, "F1", 1);
        print_spec (23, "F2", 1);
        print_spec (24, "F3", 1);
        print_spec (25, "F4", 1);
        sp (5);
        print_spec (26, "F5", 1);
        print_spec (27, "F6", 1);
        print_spec (28, "F7", 1);
        print_spec (29, "F8", 1);
        sp (5);
        print_spec (30, "F9", 1);
        print_spec (31, "F10", 1);
        print_spec (32, "F11", 1);
        print_spec (33, "F12", 1);
        sp (6);
        print_spec (PS, "PrtSc", 1);
        print_spec (SL, "ScrLk", 1);
        print_spec (PAU, "Pause", 1);
        printf ("\n\n\n");
        print_letter ('`');
        print_letter ('1');
        print_letter ('2');
        print_letter ('3');
        print_letter ('4');
        print_letter ('5');
        print_letter ('6');
        print_letter ('7');
        print_letter ('8');
        print_letter ('9');
        print_letter ('0');
        print_letter ('-');
        print_letter ('=');
        print_spec (BS, "Backspace", 0);
        sp (6);
        print_spec (INS, "INS", 2);
        print_spec (HOM, "HOM", 2);
        print_spec (PGUP, "Pg Up", 1);
        sp (3);
        print_spec (NL, "NumLk", 0);
        print_spec (100, "/", 2);
        print_spec (99, "*", 2);
        print_spec (98, "-", 2);
        printf ("\n\n");
        print_spec (TAB, "Tab", 2);
        print_letter ('Q');
        print_letter ('W');
        print_letter ('E');
        print_letter ('R');
        print_letter ('T');
        print_letter ('Y');
        print_letter ('U');
        print_letter ('I');
        print_letter ('O');
        print_letter ('P');
        print_letter ('[');
        print_letter (']');
        print_spec ('\\', "\\", 3);
        sp (6);
        print_spec (DEL, "DEL", 2);
        print_spec (END, "END", 2);
        print_spec (PGDN, "Pg Dn", 1);
        sp (3);
        print_spec (107, "7", 2);
        print_spec (108, "8", 2);
        print_spec (109, "9", 2);
        print_spec (97, " ", 2);
        printf ("\n");
        sp(119);
        print_spec (97, "+", 2);
        printf ("\n");
        print_spec (CAPS, "CapsLk", 1);
        print_letter ('A');
        print_letter ('S');
        print_letter ('D');
        print_letter ('F');
        print_letter ('G');
        print_letter ('H');
        print_letter ('J');
        print_letter ('K');
        print_letter ('L');
        print_letter (';');
        print_letter ('\'');
        print_spec (ENTER, "Enter", 3);
        sp (30);
        print_spec (104, "4", 2);
        print_spec (105, "5", 2);
        print_spec (106, "6", 2);
        print_spec (97, " ", 2);
        printf ("\n\n");
        print_spec (LSHI, "Shift", 2);
        print_letter ('Z');
        print_letter ('X');
        print_letter ('C');
        print_letter ('V');
        print_letter ('B');
        print_letter ('N');
        print_letter ('M');
        print_letter (',');
        print_letter ('.');
        print_letter ('/');
        print_spec (RSHI, "Shift", 5);
        sp (13);
        print_spec (UP, " ↑", 2);
        sp (7);
        sp (3);
        print_spec (101, "1", 2);
        print_spec (102, "2", 2);
        print_spec (103, "3", 2);
        print_spec (ENTER, " ", 2);
        printf ("\n");
        sp(119);
        print_spec (ENTER, " ", 2);
        printf ("\n");
        print_spec (LCL, "Ctrl", 2);
        print_spec (WIN, "Win", 2);
        print_spec (LAT, "Alt", 2);
        print_spec (SPACE, "SPACE", 17);
        print_spec (RAT, "Alt", 1);
        print_spec (RCL, "Ctrl", 2);
        sp (6);
        print_spec (LT, " ←", 2);
        print_spec (DN, " ↓", 2);
        print_spec (RT, " →", 2);
        sp (3);
        print_spec (110, "0", 4);
        print_spec (111, ".", 2);
        print_spec (ENTER, "NL", 2);
        printf ("\n\n\n\nMouse:\n");
        print_spec (112, "Left", 2);
        print_spec (113, "Mid", 2);
        print_spec (114, "Right", 2);
    }else{
        printf ("Keyboard:\n");
        print_spec (ESC, "ESC", 1);
        sp (8);
        print_spec (22, "F1", 1);
        print_spec (23, "F2", 1);
        print_spec (24, "F3", 1);
        print_spec (25, "F4", 1);
        sp (5);
        print_spec (26, "F5", 1);
        print_spec (27, "F6", 1);
        print_spec (28, "F7", 1);
        print_spec (29, "F8", 1);
        sp (5);
        print_spec (30, "F9", 1);
        print_spec (31, "F10", 1);
        print_spec (32, "F11", 1);
        print_spec (33, "F12", 1);
        sp (6);
        print_spec (PS, "PrtSc", 1);
        print_spec (SL, "ScrLk", 1);
        print_spec (PAU, "Pause", 1);
        printf ("\n\n\n");
        print_spec ('`', "~");
        print_spec ('1', "!");
        print_spec ('2', "@");
        print_spec ('3', "#");
        print_spec ('4', "$");
        print_spec ('5', "%");
        print_spec ('6', "^");
        print_spec ('7', "&");
        print_spec ('8', "*");
        print_spec ('9', "(");
        print_spec ('0', ")");
        print_spec ('-', "_");
        print_spec ('=', "+");
        print_spec (BS, "Backspace", 0);
        sp (6);
        print_spec (INS, "INS", 2);
        print_spec (HOM, "HOM", 2);
        print_spec (PGUP, "Pg Up", 1);
        sp (3);
        print_spec (NL, "NumLk", 0);
        print_spec (100, "/", 2);
        print_spec (99, "*", 2);
        print_spec (98, "-", 2);
        printf ("\n\n");
        print_spec (TAB, "Tab", 2);
        print_letter ('Q');
        print_letter ('W');
        print_letter ('E');
        print_letter ('R');
        print_letter ('T');
        print_letter ('Y');
        print_letter ('U');
        print_letter ('I');
        print_letter ('O');
        print_letter ('P');
        print_spec ('[', "{");
        print_spec (']', "}");
        print_spec ('\\', "|", 3);
        sp (6);
        print_spec (DEL, "DEL", 2);
        print_spec (END, "END", 2);
        print_spec (PGDN, "Pg Dn", 1);
        sp (3);
        print_spec (107, "7", 2);
        print_spec (108, "8", 2);
        print_spec (109, "9", 2);
        print_spec (97, " ", 2);
        printf ("\n");
        sp(119);
        print_spec (97, "+", 2);
        printf ("\n");
        print_spec (CAPS, "CapsLk", 1);
        print_letter ('A');
        print_letter ('S');
        print_letter ('D');
        print_letter ('F');
        print_letter ('G');
        print_letter ('H');
        print_letter ('J');
        print_letter ('K');
        print_letter ('L');
        print_spec (';', ":");
        print_spec ('\'', "\"");
        print_spec (ENTER, "Enter", 3);
        sp (30);
        print_spec (104, "4", 2);
        print_spec (105, "5", 2);
        print_spec (106, "6", 2);
        print_spec (97, " ", 2);
        printf ("\n\n");
        print_spec (LSHI, "Shift", 2);
        print_letter ('Z');
        print_letter ('X');
        print_letter ('C');
        print_letter ('V');
        print_letter ('B');
        print_letter ('N');
        print_letter ('M');
        print_spec (',', "<");
        print_spec ('.', ">");
        print_spec ('/', "?");
        print_spec (RSHI, "Shift", 5);
        sp (13);
        print_spec (UP, " ↑", 2);
        sp (7);
        sp (3);
        print_spec (101, "1", 2);
        print_spec (102, "2", 2);
        print_spec (103, "3", 2);
        print_spec (ENTER, " ", 2);
        printf ("\n");
        sp(119);
        print_spec (ENTER, " ", 2);
        printf ("\n");
        print_spec (LCL, "Ctrl", 2);
        print_spec (WIN, "Win", 2);
        print_spec (LAT, "Alt", 2);
        print_spec (SPACE, "SPACE", 17);
        print_spec (RAT, "Alt", 1);
        print_spec (RCL, "Ctrl", 2);
        sp (6);
        print_spec (LT, " ←", 2);
        print_spec (DN, " ↓", 2);
        print_spec (RT, " →", 2);
        sp (3);
        print_spec (110, "0", 4);
        print_spec (111, ".", 2);
        print_spec (ENTER, "NL", 2);
        printf ("\n\n\n\nMouse:\n");
        print_spec (112, "Left", 2);
        print_spec (113, "Mid", 2);
        print_spec (114, "Right", 2);
    }
    printf("\n\n\n\nControl:\n");
    print_spec (115, "Ctrl", 4);
    sp(3);
    print_spec (117, "Alt", 4);
    sp(3);
    print_spec (116, "Windows", 4);
    sp(3);
    print_spec (118, "Shift", 4);
}
int main()
{
    system("mode con cols=124 lines=23");
    NoEdit();
    print();
    while (1)
    {
        pre = down;
        for (int i = 0; i < 26; i++)
        {
            check (char ('A' + i));
        }
        for (int i = 0; i < 10; i++)
        {
            check (char ('0' + i));
        }
        checks (22, VK_F1);
        checks (23, VK_F2);
        checks (24, VK_F3);
        checks (25, VK_F4);
        checks (26, VK_F5);
        checks (27, VK_F6);
        checks (28, VK_F7);
        checks (29, VK_F8);
        checks (30, VK_F9);
        checks (31, VK_F10);
        checks (32, VK_F11);
        checks (33, VK_F12);
        checks ('`', VK_OEM_3);
        checks ('-', VK_OEM_MINUS);
        checks ('=', VK_OEM_PLUS);
        checks (BS, VK_BACK);
        checks (TAB, VK_TAB);
        checks ('[', VK_OEM_4);
        checks (']', VK_OEM_6);
        checks ('\\', VK_OEM_5);
        checks (CAPS, VK_CAPITAL);
        checks (';', VK_OEM_1);
        checks ('\'', VK_OEM_7);
        checks (',', VK_OEM_COMMA);
        checks ('.', VK_OEM_PERIOD);
        checks ('/', VK_OEM_2);
        checks (ENTER, VK_RETURN);
        checks (LSHI, VK_LSHIFT);
        checks (RSHI, VK_RSHIFT);
        checks (LCL, VK_LCONTROL);
        checks (RCL, VK_RCONTROL);
        checks (LAT, VK_LMENU);
        checks (RAT, VK_RMENU);
        checks (SPACE, VK_SPACE);
        checks (WIN, VK_LWIN);
        checks (INS, VK_INSERT);
        checks (HOM, VK_HOME);
        checks (PGUP, VK_PRIOR);
        checks (PGDN, VK_NEXT);
        checks (END, VK_END);
        checks (DEL, VK_DELETE);
        checks (UP, VK_UP);
        checks (DN, VK_DOWN);
        checks (LT, VK_LEFT);
        checks (RT, VK_RIGHT);
        checks (ESC, VK_ESCAPE);
        checks (SL, VK_SCROLL);
        checks (NL, VK_NUMLOCK);
        checks (PS, VK_SNAPSHOT);
        checks (PAU, VK_PAUSE);
        checks (97, VK_ADD);
        checks (98, VK_SUBTRACT);
        checks (99, VK_MULTIPLY);
        checks (100, VK_DIVIDE);
        checks (101, VK_NUMPAD1);
        checks (102, VK_NUMPAD2);
        checks (103, VK_NUMPAD3);
        checks (104, VK_NUMPAD4);
        checks (105, VK_NUMPAD5);
        checks (106, VK_NUMPAD6);
        checks (107, VK_NUMPAD7);
        checks (108, VK_NUMPAD8);
        checks (109, VK_NUMPAD9);
        checks (110, VK_NUMPAD0);
        checks (111, VK_DECIMAL);
        checks (112, VK_LBUTTON);
        checks (113, VK_MBUTTON);
        checks (114, VK_RBUTTON);
        checks (115, VK_CONTROL);
        checks (116, VK_LWIN);
        checks (117, VK_MENU);
        checks (118, VK_SHIFT);
        if (down != pre) { print(); }
        Sleep (20);
    }
    return 0;
}

感谢@JellyFish

自动打代码

#include<Windows.h>
#include<bits/stdc++.h>
using namespace std;
void p(int v)
{
    keybd_event(v, 0, 0, 0);
    keybd_event(v, 0, KEYEVENTF_KEYUP, 0);
}
void shp(int v)
{
    keybd_event(VK_SHIFT, 0, 0, 0);
    keybd_event(v, 0, 0, 0);
    keybd_event(v, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
void cnp(int v)
{
    keybd_event(VK_CONTROL, 0, 0, 0);
    keybd_event(v, 0, 0, 0);
    keybd_event(v, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
}
void alp(int v)
{
    keybd_event(VK_MENU, 0, 0, 0);
    keybd_event(v, 0, 0, 0);
    keybd_event(v, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
}
//    HEX HIGH     00000000000000001111111111111111222222222222222233333333333333334444444444444444555555555555555566666666666666667777777777777777 
//     HEX LOW     0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
//     ASCII       -------ABTNVFR------------------ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DEL 
const string sh = "00000000000010000000000000000000011111101111000000000000001010111111111111111111111111111110001100000000000000000000000000011110";
const string vk = "        \x08""\x09""\x0D""  \x0D""                   1\xde""3457\xde""908\xbb""\xbc""\xbd""\xbe""\xbf""0123456789\xba""\xba""\xbc""\xbb""\xbe""\xbf""2ABCDEFGHIJKLMNOPQRSTUVWXYZ\xdb""\xdc""\xdd""6\xbd""\xc0""ABCDEFGHIJKLMNOPQRSTUVWXYZ\xdb""\xdc""\xdd""\xc0""\x2e"; 
//     ASCII       -------AB~~~~~T~~~~~N~~~~~VFR~~~~~------------------ !"~~~~~#$%&'~~~~~()*+~~~~~,~~~~~-~~~~~.~~~~~/~~~~~0123456789:~~~~~;~~~~~<~~~~~=~~~~~>~~~~~?~~~~~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[~~~~~\~~~~~]~~~~~^_~~~~~`~~~~~abcdefghijklmnopqrstuvwxyz{~~~~~|~~~~~}~~~~~~~~~~~DEL~ 
//     HEX LOW     012345678~~~~~9~~~~~A~~~~~BCD~~~~~EF0123456789ABCDEF012~~~~~34567~~~~~89AB~~~~~C~~~~~D~~~~~E~~~~~F~~~~~0123456789A~~~~~B~~~~~C~~~~~D~~~~~E~~~~~F~~~~~0123456789ABCDEF0123456789AB~~~~~C~~~~~D~~~~~EF~~~~~0~~~~~123456789ABCDEF0123456789AB~~~~~C~~~~~D~~~~~E~~~~~F~~~ 
//    HEX HIGH     000000000000000000000000000000000000111111111111111122222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333334444444444444444555555555555555555555555555555555555666666666666666666666777777777777777777777777777777777777777
void strp(const string &s, string notice = "\f = press shift once, \n = return, \r = ctrl + return")
{
    notice = "";
    if(GetKeyState(VK_CAPITAL) & 0x01)
    {
        p(VK_CAPITAL);
    }
    for(int i = 0; i < s.length(); i++)
    {
        char u = s[i];
        if(u == '\f')
        {
            p(VK_SHIFT);
        }
        else if(u == '\r')
        {
            cnp(VK_RETURN);
        }
        else if(sh[u] == '1')
        {
            shp(vk[u]);
        }
        else
        {
            p(vk[u]);
        }
    }
}
int main()
{
    Sleep(2000);
    fstream fin(__FILE__);
    stringstream ss;
    ss << fin.rdbuf();
    strp(ss.str());
}

衍生产物

#ifndef _KEYBD_
#define _KEYBD_

#include<Windows.h>
class Keyboard
{
    protected:
        const char *PressShift = "00000000000010000000000000000000011111101111000000000000001010111111111111111111111111111110001100000000000000000000000000011110";
        const char *VirtualKey = "        \x08""\x09""\x0D""  \x0D""                   1\xde""3457\xde""908\xbb""\xbc""\xbd""\xbe""\xbf""0123456789\xba""\xba""\xbc""\xbb""\xbe""\xbf""2ABCDEFGHIJKLMNOPQRSTUVWXYZ\xdb""\xdc""\xdd""6\xbd""\xc0""ABCDEFGHIJKLMNOPQRSTUVWXYZ\xdb""\xdc""\xdd""\xc0""\x2e";
    public:
        const BYTE CTRL = 0x1, ALT = 0x2, SHIFT = 0x4, WIN = 0x8;
        void PressKey(BYTE bVk, BYTE bFlags = 0)
        {
            if(bFlags & CTRL) keybd_event(VK_CONTROL, 0, 0, 0);
            if(bFlags & ALT) keybd_event(VK_MENU, 0, 0, 0);
            if(bFlags & SHIFT) keybd_event(VK_SHIFT, 0, 0, 0);
            if(bFlags & WIN) keybd_event(VK_LWIN, 0, 0, 0);
            keybd_event(bVk, 0, 0, 0);
            keybd_event(bVk, 0, KEYEVENTF_KEYUP, 0);
            if(bFlags & CTRL) keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
            if(bFlags & ALT) keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
            if(bFlags & SHIFT) keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
            if(bFlags & WIN) keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
        }
        void PressStr(const char *s, const char *notice = "\f = press shift once, \n = return, \r = ctrl + return")
        {
            if(GetKeyState(VK_CAPITAL) & 0x01)
            {
                PressKey(VK_CAPITAL);
            }
            for(int i = 0; s[i] != '\0'; i++)
            {
                char u = s[i];
                if(u == '\f')
                {
                    PressKey(VK_SHIFT);
                }
                else if(u == '\r')
                {
                    PressKey(VK_RETURN, CTRL);
                }
                else if(PressShift[u] == '1')
                {
                    PressKey(VirtualKey[u], SHIFT);
                }
                else
                {
                    PressKey(VirtualKey[u]);
                }
            }
        }
        BOOL KeyPressing(BYTE bVk)
        {
            return (GetAsyncKeyState(bVk) & 0x8000 ? 1 : 0);
        }
        BOOL KeyPressed(BYTE bVk)
        {
            return (GetAsyncKeyState(bVk) & 0x8001 ? 1 : 0);
        }
        BOOL KeyLocked(BYTE bVk)
        {
            return (GetKeyState(bVk) & 0x1 ? 1 : 0);
        }
};

#endif

鼠标键

// linker +lib : -lgdi32
#include<Windows.h>
#include<stdio.h>
#define k(a) (GetAsyncKeyState(a) & 0x8000 ? 1 : 0)
#define l(a) (GetAsyncKeyState(a) == -32767)
#define xxxl(x) \
            if(k(VK_NUMPAD##x)) \
            {
#define xxxr(x) \
                if(last == x) \
                { \
                    N[x] += M; \
                } \
                last = x; \
            }
void xxx(int x)
{
    keybd_event(x, 0, 0, 0);
    Sleep(10);
    keybd_event(x, 0, KEYEVENTF_KEYUP, 0);
}
bool test()
{
    keybd_event(VK_SPACE, 0, 0, 0);
    bool ret = GetAsyncKeyState(VK_SPACE) & 0x8000;
    keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
    return ret;
}
int main()
{
    if(!test()) throw;
    int M = 1;
    int last = 0;
    int N[12] = {};
    N[11] = N[1] = N[2] = N[3] = N[4] = N[5] = M;
    N[6] = N[7] = N[8] = N[9] = N[10] = M;
    bool lp = 0, mp = 0, rp = 0;
    printf("Red: Off; Green: On; Blue & Yellow: Press\nstatus\tgks     \tgaks    \n\n");
    int x = GetSystemMetrics(SM_CXSCREEN), y = GetSystemMetrics(SM_CYSCREEN);
    while(1)
    {
        Sleep(1);
        HDC hdc = GetDC(GetDesktopWindow());
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {0, 2});
        printf("%s\t%08X\t%08X\n", GetKeyState(VK_SCROLL) == 1 ? "On" : GetKeyState(VK_SCROLL) == 0 ? "Off" : "Press", GetKeyState(VK_SCROLL), GetAsyncKeyState(VK_SCROLL));
        if((GetKeyState(VK_SCROLL) & 0x81) == 0x81)
        {
            HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(255, 255, 0));
            HBRUSH hBrush = (HBRUSH)CreateSolidBrush(RGB(255, 255, 0));
            SelectObject(hdc, hPen);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, x - 20, y - 20, x - 5, y - 5);
        }
        else if((GetKeyState(VK_SCROLL) & 0x80) == 0x80)
        {
            HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(0, 0, 255));
            HBRUSH hBrush = (HBRUSH)CreateSolidBrush(RGB(0, 0, 255));
            SelectObject(hdc, hPen);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, x - 20, y - 20, x - 5, y - 5);
        }
        else if(GetKeyState(VK_SCROLL) & 0x1)
        {
            HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(0, 255, 0));
            HBRUSH hBrush = (HBRUSH)CreateSolidBrush(RGB(0, 255, 0));
            SelectObject(hdc, hPen);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, x - 20, y - 20, x - 5, y - 5);
            {
                POINT p = {0, 0}, q;
                int scr = 0;
                xxxl(8)
                    p.y -= N[8];
                xxxr(8)
                else xxxl(2)
                    p.y += N[2];
                xxxr(2)
                else xxxl(4)
                    p.x -= N[4];
                xxxr(4)
                else xxxl(6)
                    p.x += N[6];
                xxxr(6)
                else xxxl(7)
                    p.y -= N[7];
                    p.x -= N[7];
                xxxr(7)
                else xxxl(1)
                    p.y += N[1];
                    p.x -= N[1];
                xxxr(1)
                else xxxl(9)
                    p.y -= N[9];
                    p.x += N[9];
                xxxr(9)
                else xxxl(3)
                    p.x += N[3];
                    p.y += N[3];
                xxxr(3)
                else if(k(VK_NUMPAD0))
                {
                    scr += N[11];
                    if(last == 11)
                    {
                        N[11] += M;
                    }
                    last = 11;
                }
                else if(k(VK_DECIMAL))
                {
                    scr -= N[10];
                    if(last == 10)
                    {
                        N[10] += M;
                    }
                    last = 10;
                }
                else
                {
                    last = 0;
                    N[11] = N[1] = N[2] = N[3] = N[4] = N[5] = M;
                    N[6] = N[7] = N[8] = N[9] = N[10] = M;
                }
                GetCursorPos(&q);
                if(last < 10) SetCursorPos(q.x + p.x / 2, q.y + p.y / 2);
                if(l(VK_DIVIDE))
                {
                    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                    lp = 1;
    //              Sleep(500);
                }
                else if(lp)
                {
                    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                    lp = 0;
                }
                if(l(VK_MULTIPLY))
                {
                    mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0);
                    mp = 1;
    //              Sleep(500);
                }
                else if(mp)
                {
                    mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0);
                    mp = 0;
                }
                if(l(VK_SUBTRACT))
                {
                    mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
                    rp = 1;
    //              Sleep(500);
                }
                else if(rp)
                {
                    mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
                    rp = 0;
                }
                if(last == 10 || last == 11)
                {
                    mouse_event(MOUSEEVENTF_WHEEL, 0, 0, scr, 0);
                }
            }
        }
        else
        {
            HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
            HBRUSH hBrush = (HBRUSH)CreateSolidBrush(RGB(255, 0, 0));
            SelectObject(hdc, hPen);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, x - 20, y - 20, x - 5, y - 5);
        }

        ReleaseDC(GetDesktopWindow(), hdc);
    }
}

弹窗恶搞

#include<stdlib.h>
#include<Windows.h>
#include<time.h>
#include<string>
#include<iostream>
using namespace std;
string fn = __FILE__, fff;
void s(const char *ds, int n = 250)
{

    ShellExecuteA(NULL, "open", fn.data(), ds, NULL, SW_HIDE);
    Sleep(n);
}
void st(const char *ds, int n = 200)
{
    ShellExecuteA(NULL, "open", fn.data(), ds, NULL, SW_HIDE);
    Sleep(n);
    cout << ("taskkill /im " + fff).data() << endl;
    system(("taskkill /im " + fff).data());
}
const char *ss[3] = {"e", "w", "i"};
int main(int argc, char **argv)
{
    fn.pop_back();
    fn.pop_back();
    fn.pop_back();
    fn += "exe";
    fff = fn.substr(fn.find_last_of('/') == string :: npos ? (fn.find_last_of('\\') + 1) : (fn.find_last_of('/') + 1));
    while(fff.find('"') != string::npos) fff.erase(fff.find('"'), 1);
    fff = '"' + fff + '"';
    srand(time(NULL));
    if(argc == 2)
    {
        if(argv[1][0] == 'e')
        {
            const char *ss[2] = {"Windows was not installed correctly. Please reinstall Windows.\nError 4 (Windows error 096)", "The application was"};
            MessageBox(NULL, ss[rand() % 2], "Microsoft Windows", MB_ICONHAND);
        }
        if(argv[1][0] == 'w')
        {
            const char *ss[2] = {"Are you sure you want to exist?\nAre you sure you want to exist?\nAre you sure you want to exist?", "Are you sure you want to exist?"};
            MessageBox(NULL, ss[rand() % 2], "Microsoft Windows", MB_ICONWARNING);
        }
        if(argv[1][0] == 'i')
        {
            const char *ss[2] = {"Task failed successfully.", "Something happened."};
            MessageBox(NULL, ss[rand() % 2], "Microsoft Windows", MB_ICONINFORMATION);
        }
        return 0;
    }
    while(!GetAsyncKeyState(VK_ESCAPE))
    {
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        s(ss[rand() % 3]);
        st(ss[rand() % 3]);
    }
    st(ss[rand() % 3]);
}

无聊屏幕校准小游戏

#include<bits/stdc++.h>
#include<Windows.h>
#define N 20
using namespace std;
int eps;
void ClearScreen(int x, int y)
{
    RECT rt = {0, 0, x, y};
    InvalidateRect(GetConsoleWindow(), &rt, true);
}
POINT press1(POINT tar)
{
    HWND hWnd = GetDesktopWindow();
    HDC hdc = GetDC(hWnd);
    POINT old;
    int x = GetSystemMetrics(SM_CXSCREEN), y = GetSystemMetrics(SM_CYSCREEN);
    while(1)
    {
        HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(0, 255, 0));
        HBRUSH hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
        SelectObject(hdc, hPen);
        SelectObject(hdc, hBrush);
        POINT mouse;
        GetCursorPos(&mouse);
//      SetPixel(hdc, mouse.x, mouse.y, RGB(0, 255, 0));
        MoveToEx(hdc, mouse.x - N - N / 2, mouse.y, NULL);
        LineTo(hdc, mouse.x - N + N / 2, mouse.y);
        MoveToEx(hdc, mouse.x + N - N / 2, mouse.y, NULL);
        LineTo(hdc, mouse.x + N + N / 2, mouse.y);
        MoveToEx(hdc, mouse.x, mouse.y - N - N / 2, NULL);
        LineTo(hdc, mouse.x, mouse.y - N + N / 2);
        MoveToEx(hdc, mouse.x, mouse.y + N - N / 2, NULL);
        LineTo(hdc, mouse.x, mouse.y + N + N / 2);
        Ellipse(hdc, mouse.x - N, mouse.y - N, mouse.x + N, mouse.y + N);
        Ellipse(hdc, mouse.x - 1, mouse.y - 1, mouse.x + 1, mouse.y + 1);

        HPEN hPen2 = (HPEN)CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
        HPEN hPenb = (HPEN)CreatePen(PS_SOLID, 3, RGB(0, 0, 255));
        HBRUSH hBrush2 = (HBRUSH)GetStockObject(NULL_BRUSH);
        SelectObject(hdc, hPen2);
        SelectObject(hdc, hBrush2);
        Ellipse(hdc, tar.x - N, tar.y - N, tar.x + N, tar.y + N);
        Ellipse(hdc, tar.x - N / 2, tar.y - N / 2, tar.x + N / 2, tar.y + N / 2);
        Ellipse(hdc, tar.x - 1, tar.y - 1, tar.x + 1, tar.y + 1);
        SelectObject(hdc, hPenb);
        Ellipse(hdc, tar.x - eps, tar.y - eps, tar.x + eps, tar.y + eps);

        Sleep(100);
        cout << '(' << mouse.x << ", " << mouse.y << ")                        \r";
//      if(GetLastError() != 0) return GetLastError();
//      if(GetAsyncKeyState(VK_SPACE) & 0x8000)
        if(mouse.x != old.x || mouse.y != old.y)
        {
            ClearScreen(x, y);
            Sleep(100);
        }
        swap(old, mouse);
        if(GetAsyncKeyState(VK_LBUTTON) & 0x8000)
        {
            return mouse;
        }
    }
    ReleaseDC(hWnd, hdc);
    DeleteDC(hdc);
}
int main()
{
    cin >> eps;
    srand(time(NULL));
    int x = GetSystemMetrics(SM_CXSCREEN), y = GetSystemMetrics(SM_CYSCREEN);
    int cnt = 0;
    while(1)
    {
        POINT tar = {rand() % x, rand() % y};
        HWND hWnd = GetDesktopWindow();
        HDC hdc = GetDC(hWnd);
        HPEN hPenb = (HPEN)CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
        HPEN hPen = (HPEN)CreatePen(PS_SOLID, 3, RGB(0, 0, 255));
        HBRUSH hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
        SelectObject(hdc, hPen);
        SelectObject(hdc, hBrush);
        Ellipse(hdc, tar.x - N, tar.y - N, tar.x + N, tar.y + N);
        Ellipse(hdc, tar.x - N / 2, tar.y - N / 2, tar.x + N / 2, tar.y + N / 2);
        Ellipse(hdc, tar.x - 1, tar.y - 1, tar.x + 1, tar.y + 1);
        SelectObject(hdc, hPenb);
        Ellipse(hdc, tar.x - eps, tar.y - eps, tar.x + eps, tar.y + eps);
        ReleaseDC(hWnd, hdc);
        DeleteDC(hdc);
        POINT get = press1(tar);
        if(abs(get.x - tar.x) < eps && abs(get.y - tar.y) < eps)
        {
            cout << "\nOk." << endl;
            Sleep(1000);
            system("cls");
            cnt++;
            continue;
        }
        else
        {
            cout << "\nOops..." << endl;
            cout << "Good shoots: " << cnt << endl;
            Sleep(1000);
            return 0;
        }
    }
}

Wang Jingtian's Adventure(未完成)

#include<string>
#include<stdio.h>
#include<stdarg.h>
#include<stdlib.h>
#include<Windows.h>

#define GiveBloodBottle -1

#define INF INT_MAX
//#define

#define EnemyFunc(n) ENEMYFUNRET Enemy##n (int x, int y, int CurrSleep, int PlayerX, int PlayerY)
#define BulletFunc(n) BULET Bullet##n (int x, int y, DIR dir, int speed, char bullet, int length)
using std::string;
void dprintf(int ms, const char * format, ...)
{
    char *buf = new char[65536];
    va_list arg;
    va_start(arg, format);
    vsprintf(buf, format, arg);
    string s = buf;
    delete []buf;
    for(int i = 0; i < s.size(); i++)
    {
        putchar(s[i]);
        Sleep(ms);
    }
}
void load()
{
    dprintf(50, "----- Wang Jingtian's Adventure -----\n");
    dprintf(50, "--------- Loading Files ... ---------\n");
    dprintf(50, "   sto                               \r");
         printf("     sto                             \r");
    Sleep(100);
         printf("       sto                           \r");
    Sleep(100);
         printf("         sto                         \r");
    Sleep(100);
         printf("           sto                       \r");
    Sleep(100);
         printf("             sto                     \r");
    Sleep(100);
         printf("               sto                   \r");
    Sleep(100);
         printf("                 sto                 \r");
    Sleep(100);
         printf("                   sto               \r");
    Sleep(100);
         printf("                     sto             \r");
    Sleep(100);
         printf("                       sto           \r");
    Sleep(100);
         printf("                          sto        \r");
    Sleep(100);
         printf("                            sto      \r");
    Sleep(100);
         printf("                              sto    \r");
    Sleep(100);
         printf("                                sto  \n");
    Sleep(1000);
    dprintf(50, "Complete.\n");
    system("cls");
}
struct HAND
{
    string name;
    int harm;
    int crit;
    int length;
    int sleepms;
    int blood;
    int money;
};
HAND hand[] =
{
    {"NULL", INF, 0, INF, 0, INF, 1000},
    {"Cry", 3, INF, INF, 300, 50, 0},
    {"Hand", 5, 5, 2, 100, 0, 0},
    {"Book", 7, 3, 2, 200, 0, 10},
    {"Shoes", 8, 3, 5, 200, 0, 25},
    {"Basketball", 8, 5, 8, 500, 0, 50},
    {"Shi Huo Coin", 8, 3, 9, 500, 10, 60},
    {"Meal Card", 10, 1, 10, 600, 10, 100},
    {"Touch Head", 15, INF, 2, 200, 0, 0},
    {"Toy Sword", 20, 3, 3, 50, 0, 120},
    {"Bomb", 30, INF, 10, 1000, 0, 200},
    {"Mathematics", 50, INF, INF, 0, 0, 250}
};
struct SHIELD
{
    string name;
    int Def100;
    int money;
};
SHIELD shield[] =
{
    {"NULL", 100, 1000},
    {"Wooden Shield", 10, 0},
    {"Iron Shield", 30, 50},
    {"Ice Wall", 50, 100},
    {"Golden Shield", 65, 150},
    {"Diamond Shield", 75, 200},
    {"Ender Shield", 95, 200}
};
enum DIR
{
    UP, DOWN, LEFT, RIGHT
};
struct BULET
{
    int x;
    int y;
    DIR dir;
    char bullet;
    int go;
};
const BULET Terminate = {INF, INF, UP, 0, INF};
bool IsTerminate(BULET a)
{
    return
        a.x == Terminate.x
}
typedef BULET (*SHOOTFUNC)(int, int, DIR, int, char, int); // x, y, dir, speed, bullet, length
struct ENEMYFUNRET
{
    bool bDied;
    bool bShoot;
    int nCurrSleep;
    SHOOTFUNC bulletfn;
};
typedef ENEMYFUNRET (*ENEMYFUNC)(int, int, int, int, int); // x, y, Currsleep, PlayerX, PlayerY
struct ENEMY
{
    string name;
    string type;
    int harm;
    int length;
    int sleepms;
    int hp;
    int money;
    int n;
    ENEMYFUNC func;
};

//////////////////////////////////////////////BulletFunction////////////////////////////////////////////////////////
// BULET Bullet##n (int x, int y, DIR dir, int speed, char bullet, int length)
//
BulletFunc(0)
{
    return {0, 0};
}
BulletFunc(1)
{

}

//////////////////////////////////////////////EnemyFunction/////////////////////////////////////////////////////////
// ENEMYFUNRET Enemy##n (int x, int y, int CurrSleep, int PlayerX, int PlayerY)
EnemyFunc(0)
{
    return {false, false, 0};
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ENEMY enemy[] =
{
    {"NULL", "NULL", 0, 0, 0, 0, 0, 0},
    {"Zhuge Zheng", "告状", 10, 2, 100, 100, 20, 1},
    {"Chicken", "篮球", 25, 3, 1000, 150, 50, 1},
    {"Dormitory Administrator", "砸电脑", 40, 2, 200, 200, 75, 1},
    {"Teacher Liu", "撕小星星", 45, INF, 1000, 100, 90, 1},
    {"Music Game", "崩溃!", 30, 2, 2000, 100, 50, 1},
    {"Chen Ruixiang", "口水攻击", 40, 10, 5000, 100, 75, 1},
    {"Mr. Fu", "破口大骂", 45, 10, 0, 200, 100, 1},
    {"Treasuer Chest", "攻击以进入下一关", GiveBloodBottle, 0, INF, 1, 0, 1},
    {"Mother", "拖鞋", 30, 2, 1000, 250, 0, 1},
    {"Strongbox", "财宝!", 0, 0, 0, 10000, 300, 1},
    {"Treasuer Chest", "攻击以进入下一关", GiveBloodBottle, 0, INF, 1, 0, 1},
    {"Police", "警棍", 45, 2, 1000, 100, 10, 5},
    {"Treasuer Chest", "攻击以进入下一关", GiveBloodBottle, 0, INF, 1, 0, 1},
    {"Li Jing", "塔", 60, 10, 1500, 1000, 150, 1},
    {"Brain Storm", "数学", 75, 10, 2000, 1250, 200, 1},
    {"Treasuer Chest", "攻击以进入下一关", GiveBloodBottle, 0, INF, 1, 0, 1},
    {"Galaxy Ender", "激光", 65, INF, 3000, 1500, 300, 1},
    {"Treasuer Chest", "攻击以进入下一关", GiveBloodBottle, 0, INF, 1, 0, 1},
    {"Cosmic Terminator", "自爆", 80, 5, 4000, 2000, 500, 1},
    {"Treasuer Chest", "攻击以结束游戏", GiveBloodBottle, 0, INF, 1, 0, 1},
};
int main()
{
    load();

}