程序员花式拜年脚本

Posted titordong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员花式拜年脚本相关的知识,希望对你有一定的参考价值。

程序员花式拜年脚本

目标

vbs脚本实现模拟键盘输出13种语言拜年,朗读拜年语音,之后打开浏览器显示支付宝收钱码,索要红包(厚脸皮
vbs拜年文件直接下载传送门,喜欢干货的可以直接出发了

准备

玩vbs有一段时间了,对原理感兴趣的可以看一下我上一篇vbs的博客,这篇我会讲的快一点,没有基础的话可能理解有点困难,上一篇传送门

  • 记事本

    老规矩了,记事本写vbs
  • 模拟键盘代码生成器

    vbs的模拟键盘功能至今没有找到方便的方法,只能一个字母一个字母去模拟,但是我们可以用自己写程序的方法,把想说的话,转化成vbs模拟键盘代码,这次更深入了解模拟键盘的一些小细节以后,更新了vbs模拟代码生成器的代码,如下:
#include<iostream>
#include<fstream>
using namespace std;
int main() {
    ifstream ifile;
    ifile.open("D:\\in.txt");
    ofstream ofile;
    ofile.open("D:\\out.txt");
    char str[100];
    while (ifile.getline(str, 100)) {
        if (str[0] == '') {
            ofile << "WS.SendKeys "{ENTER}"" << endl << endl<<endl;
        }
        else {
            for (int i(0); i < strlen(str); i++) {              
                ofile << "WScript.Sleep AutoTime" << endl;
                if(str[i] == '{') {
                    ofile << "WS.SendKeys "";
                    do{
                        ofile << str[i];
                    } while (str[i++] != '}');
                    ofile <<"""<<endl;
                    i--;
                }
                else {
                    ofile << "WS.SendKeys "";
                    if (str[i] == '"')
                        ofile << """"" << endl;
                    else if (str[i] == '(' || str[i] == ')')
                        ofile << '{' << str[i] << '}' << """ << endl;
                    else ofile << str[i] << """ << endl;
                }
            }
            ofile << "WScript.Sleep 1000" << endl;
            ofile << "WS.SendKeys "{ENTER}"" << endl << endl << endl;
        }
    }
    ofile.close();
    ifile.close();
    return 0;
}

AutoTime是两个键之间的敲击间隔,可以自由设置,具体看下文

开工

  • 创建vbs文件,做初步准备

    在桌面创建记事本文件,改扩展名为vbs,不会改后缀名的请去百度,键入以下代码
CreateObject("SAPI.SpVoice").Speak"过年好啊,我要用13种语言给您拜年啦"
Dim AutoTime
AutoTime = 50
Set WS=WScript.CreateObject("WScript.Shell")
WS.run("notepad"),3
WScript.Sleep 500
WS.AppActivate("notepad")
WS.SendKeys "+"

第一行朗读拜年内容,可以自己设置,从第二行到最后都是为了模拟键盘输入做准备,建立对象,设置间隔变量AutoTime,打开记事本,停顿0.5s,获取记事本焦点(这个非常重要),切换输入法为英文WS.SendKeys "+"这个是模拟键盘按shift的意思,因为我们要用代码拜年,开头就是用英文写的

  • 生成模拟键盘vbs代码

    懂c++的同学可能已经注意到了,上面的“模拟键盘代码生成器”中涉及到了一个in.txt文件和一个out.txt文件,in就是要显示的文件,而out用来存放根据in生成的vbs代码,接下来在D盘创建in.txt(out.txt程序会自动生成,不用手动创建),键入以下内容,保存关闭
print_r('+xinniankuaile1+');
var_dump('+xinniankuaile1+');
NSLog(@"+xinniankuaile1+");
System.out.println("+xinniankuaile1+");
console.log("+xinniankuaile1+");
print("+xinniankuaile1+");
printf("+xinniankuaile1+");
cout<<"+xinniankuaile1+"<< endl;
Console.WriteLine("+xinniankuaile1+"); 
fmt.Println("+xinniankuaile1+");
Response.Write("+xinniankuaile1+");
alert("+xinniankuaile1+")
echo"+xinniankuaile1+"

顺便说一下,我们要显示的东西时这样子的

print_r('新年快乐');
var_dump('新年快乐');
NSLog(@"新年快乐");
System.out.println("新年快乐");
console.log("新年快乐");
print("新年快乐");
printf("新年快乐");
cout<<"新年快乐"<< endl;
Console.WriteLine("新年快乐"); 
fmt.Println("新年快乐");
Response.Write("新年快乐");
alert("新年快乐")
echo"新年快乐"

以第一行in的文件为例print_r(‘+xinniankuaile1+‘);,括号中出现的+号如上文所说,代表shift键,前面已经切成了英文输入法,现在再切回去,打xinniankuaile,因为输入法自带的联想词语功能,新年快乐就出现在了第一个(按说谁的输入法都会这样,按说,,,),然后按1就正好打出了汉字“新年快乐”,在上一篇博客已经说过了,vbs是不能直接模拟键盘输入中文的,因为键盘上没有中文键(什么沙雕逻辑),所以只能用这种看起来符合日常习惯的方法进行模拟输入,把新年快乐敲出来以后再一个+,把输入法切回英文,下面的同理
保存以后运行“模拟键盘代码生成器”,这时候D盘就多了out.txt文件,打开以后出现的7,8百行代码就是我们需要的东西(对,就是这么多,你以为呢),把这个文件中的所有代码复制,粘贴到我们上一步新建立的vbs文件中

  • 打开支付宝二维码网页,索要红包(

    这之前首先先说几句祝福的话,再要钱啊,跟着上面的内容,键入以下内容
CreateObject("SAPI.SpVoice").Speak"祝您猪年诸事大吉,身体健康,万事如意,恭喜发财,红包拿来,扫码即可哦"
WScript.Sleep 200

Sleep 是暂停,暂停200ms,给系统一点反应时间,不然会出bug,下面我们做支付宝收钱码链接
先把收钱码上传到图床(可以把自己的图片挂在网上)上面,图床传送门
根据提示上传好后,保存链接备用
技术图片
继续,跟着上面的内容,键入以下代码

link()
Function link()
Set Seven = WScript.CreateObject("WScript.Shell")
strDesktop = Seven.SpecialFolders("Desktop")
set oShellLink = Seven.CreateShortcut(strDesktop & "Titordong.url")
oShellLink.TargetPath = "https://ww1.sinaimg.cn/large/007i4MEmgy1fzviwg4l7uj30u01aoag3.jpg"
oShellLink.Save
Set oShellLink=Nothing
strDesktop = Seven.SpecialFolders(4)
mypath=strDesktop&"Titordong.url"
Seven.run mypath
End Function

第一句是调用函数,后面是函数的内容,用来实现,在桌面创建一个快捷方式并自动打开,显示你的支付宝收钱码,注意这行
oShellLink.TargetPath = "https://ww1.sinaimg.cn/large/007i4MEmgy1fzviwg4l7uj30u01aoag3.jpg"
这后面的链接,是我的收钱码在图床上的链接,这时候就把刚才保存的你自己的收钱码链接替换上去,就成自己的了!
搞定收工,保存退出,双击运行即可,记得在运行时鼠标不要点击任何地方,会出bug,学会的小伙伴们,可以拿去给别人拜年收钱了(233

后记

模拟键盘输入科技感十足,有一小部分小伙伴电脑不能运行,呜呜,没办法了,正常情况下windows都可以直接运行的
2019/2/5 15:42:19

以上是关于程序员花式拜年脚本的主要内容,如果未能解决你的问题,请参考以下文章

b站2022年拜年祭单品动画成本分析思考

50 种编程语言来拜年

AI贺新年,开发者的虎年这样过才有意思

程序员的七夕如何花式表白!自嘲:实惨

程序员的七夕如何花式表白!自嘲:实惨

如何将 utf-8 花式引号转换为中性引号