脚本祝福礼物
##概述
听说抖音上流行一种用代码做程序表白的东西,,,,
当然我也不是要表白,,,,
但是好像蛮有意思的,,,,
于是,又学了一下vbs脚本,做了几个很不错的祝福脚本,不懂代码的可以直接戳[传送门](https://pan.baidu.com/s/154pM4ilCFPlWKNuMPkpdWw)下载,但是想自己改内容的话,下面有讲
##效果示范

貌似不能看,只能点进去看,好吧,,,
##思路
目前这个脚本分成了4个板块的功能,想自己改的可以通过下面的讲解自己改内容,或者启动我原来没有启动的功能
首先,把程序下载以后,拖到桌面上,右键用记事本打开,对!用记事本打开,vbs脚本不需要花里胡哨的编辑器云云,直接暴力记事本打开,查看源码
###1)开篇交互对话框
``` vbs
Dim a,cut,b,Str,flag
flag=false
cut=1
a=Inputbox("你相信这世界上存在圣诞老人吗?",,"相信")
MsgBox "..."
MsgBox "其实我就是圣诞老人"
MsgBox "虽然我没有礼物给你"
MsgBox "呜呜,你是不是生气啦"
MsgBox "那我给你变个魔术好不好"
a=Inputbox("要不要变魔术?",,"要")
If a"要" Then
MsgBox "呜呜,真的不给机会吗?"
Do
b=InputBox(Str+"试一下吧",,"不")
Str=Str&"请"
If b"不"Then
flag=true
Exit Do
Else cut=cut+1
End If
If cut=5 Then
MsgBox "那好吧,再见!"
Exit Do
End If
Loop
Else flag=true
End If
```
Dim关键字用来声明变量,当然在vbs里变量不声明也可以用,但是退出那个块以后变量就释放掉了,所有最好还是前面声明一下,之后的程序应该比较好看懂,有输入对话框,显示对话框,提示输入,inputbox的输入对话框第2个参数省略了,第3个参数是默认的输入框里的内容,这里面的素有双引号内的东西都可以自己改,在选择是否变魔术那里,选5次否,脚本退出
###2)打开记事本,念打油诗
```
If flag=true Then
Set WS=WScript.CreateObject("WScript.Shell")
WS.run("notepad"),3
WScript.Sleep 500
WS.AppActivate("notepad")
WS.SendKeys "+"
arr=Array("听","说","你","被","拐","卖","真","的","把","我","吓","坏","你","虽","从","小","痴","呆","却","对","社","会","无","害","谁","人","如","此","大","胆","竟","敢","拿","你","去","卖","我","真","替","他","担","心","卖","得","掉","才","怪","")
f(arr)
WScript.Sleep 3000
For i=0 To 90
WScript.Sleep 30
WS.SendKeys "{BS}"
Next
arr=Array("好","啦","好","啦","不","逗","你","了","")
Clipboard="MsHta vbscript:ClipBoardData.setData(""Text"","""&str1&""")(Window.Close)"
WS.Run(Clipboard)
For i=0 To 8
WScript.Sleep 200
Clipboard="MsHta vbscript:ClipBoardData.setData(""Text"","""&arr(i)&""")(Window.Close)"
WS.Run(Clipboard)
WS.SendKeys"^v"
Next
WScript.Sleep 3000
For i=0 To 90
WScript.Sleep 30
WS.SendKeys "{BS}"
Next
```
以及f函数的实现
```
Function f(a)
Dim str1
Clipboard="MsHta vbscript:ClipBoardData.setData(""Text"","""&str1&""")(Window.Close)"
WS.Run(Clipboard)
For i=0 To 47
WScript.Sleep 200
Clipboard="MsHta vbscript:ClipBoardData.setData(""Text"","""&a(i)&""")(Window.Close)"
WS.Run(Clipboard)
WS.SendKeys"^v"
If i>0 Then
If(i Mod 6=0) Then
WScript.Sleep 400
WS.SendKeys "{ENTER}"
End If
End IF
Next
End Function
```
下载了vbs脚本以后就会发现,这一部分其实并没与启动,因为虽然这部分代码有,但是关键部分都被我注释掉了,如你所见'在vbs脚本中就是注释(大号字体标注),也就是英文的单引号,如果想启动,就把这一部分的注释全部去掉,这部分的原理就是把汉字数组的每个字依次传到剪贴板,然后偶模拟键盘Ctrl+V,由于频繁操作剪贴板,这部分执行可能会导致缺字打印(电脑缓不过来),之后进行模拟键盘的删除操作,把写好的打油诗删除,准备下面的英语正文。
###3)接着上面的记事本,写英文
这是整个脚本的重点,写出像视频中的效果那样,一个字母一个字母敲的效果,先上一段代码:
```
AutoTime=75
say(AutoTime)

Function say(AutoTime)

End Function

什么?就这么点吗?当然不是!!!这部分的代码有上千上,内容就在function中间,当然你也看出这是个函数了,那我们的内容也是模拟键盘输入,所以,你觉得怎么搞这部分呢?
用数组存字符串,然后模拟键盘输出吗?
试过很多次了,都失败了,貌似只能一个一个敲
然后,写一个字母的代码量,,,,大概是40个字母
当然,不可能真的一个字一个字敲啊,为什么不写一个程序出来,专门写vb的模拟键盘输入代码呢?
**C++**实现英文转vbs模拟键盘输入代码

include

include

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] == '\0') {

ofile << "WS.SendKeys "{ENTER}"" << endl << endl<<endl;

}

else {

for (int i(0); i < strlen(str); i++) {

ofile << "WScript.Sleep AutoTime" << endl;

ofile << "WS.SendKeys "" << str[i] << """ << endl;

}

ofile << "WScript.Sleep 1000" << endl;

ofile << "WS.SendKeys "{ENTER}"" << endl << endl << endl;

}

}

ofile.close();

ifile.close();

return 0;

}

两个文件,in.txt,你要显示的英文,可以空行,可以逗号问好,但是,必须用英文输入法
![](https://i.imgur.com/VC7jk52.png)
对,就像这样,对吧,很容易,然后就会生成一个1k多行的out.txt
把里面内容全选复制,然后放在function say 的中间,这一步就完成了
AutoTime是每个字的间隔,可以自己定义,75效果就蛮好的
###4)祝福网页
又是一个在脚本里没出现的功能,

Function link()

Set Seven = WScript.CreateObject("WScript.Shell")

strDesktop = Seven.SpecialFolders("Desktop")

set oShellLink = Seven.CreateShortcut(strDesktop & "\Titordong.url")

oShellLink.TargetPath = "https://www.cnblogs.com/Titordong/"

oShellLink.Save

Set oShellLink=Nothing

strDesktop = Seven.SpecialFolders(4)

mypath=strDesktop&"\Titordong.url"

Seven.run mypath

End Function

如果你有博客,或者你有自己写的网页,甚至你自己的qq空间也行,把链接复制,然后`oShellLink.TargetPath = "https://www.cnblogs.com/Titordong/"`里面的后面引号里替换,就ok
效果就是可以再桌面建立一个快捷方式链接,然后自动打开你指向的这个链接,当然这个在程序里要调用的话,要在say(AutoTime)后面加一行link() ##后记
vbs脚本功能很强(好像之前说过),切记每行只能有一个语句哦!而且,用英文输入法写,包括代码,也包括英文的祝福&搞笑,至于为什么不用中文,,,键盘上也没有中文按键啊~
2019/1/1 1:47:30

vbs脚本实现自动打字祝福&搞笑的更多相关文章

  1. 自动删除超过30天文件的vbs脚本【转发】

    利用代码制作自动删除超过30天的文件及文件夹的vbs脚本,定期清理文件夹中长时间无用文件. 1.首先在新建一个文本文档,粘贴代码(代码可通过添加微信公众号vbs_edit(VBS脚本之家)回复018获 ...

  2. VBS脚本和HTML DOM自动操作网页

    VBS脚本和HTML DOM自动操作网页 2016-06-16 10:24 1068人阅读 评论(0) 收藏 举报  分类: Windows(42)  版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. 2.如何实现使用VBS脚本程序对直播间自动评论

    前言:本文使用的是VBS脚本,实现了对繁星直播自动登录,自动进入房间并且自动评论. 前提准备:把需要刷的评论放到mysql中,再使用vbs读出评论 -------------------------- ...

  4. Vbs脚本经典教材(转)

    Vbs脚本经典教材(最全的资料还是MSDN) —为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改 ...

  5. VBS脚本病毒特点及如何防范3(转)

    5.Vbs病毒生产机的原理介绍 所谓病毒生产机就是指可以直接根据用户的选择产生病毒源代码的软件.在很多人看来这或许不可思议,其实对脚本病毒而言它的实现非常简单. 脚本语言是解释执行的.不需要编译,程序 ...

  6. VBS脚本随笔

    1.定时运行程序与关闭程序的VBS处理方法: do set ws=createobject("wscript.shell") ws.run"你要运行的程序的路径(比如说d ...

  7. 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01

    最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...

  8. 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型

    说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...

  9. 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门

    很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...

随机推荐

  1. python2编码问题

    前言:python3解决了编码的问题,但python2还存在很多编码问题,用P2写爬虫爬了网页,解析时常有不同字符混着编码,导致解码问题成为爬虫程序员的噩梦... 但咱们要用robot framewo ...

  2. [经验交流] 影响 kubernetes 稳定性的因素

    使用k8s已有近一年的时间,版本从1.2到1.5.1.6.1.7,期间出现并解决了不少问题,下面是我总结的影响k8s集群稳定性的因素: 1. 安装环境 *kubelet版本最好与kube-apiser ...

  3. put your hands up PHPLFI +CVE

    当时做了''一年'',都没做出来,hint了一个PHPLFI,我就懵了,任意文件上传怎么和PHPLFI结合呢,还是要看的多,做的多,才有那种感觉. 习惯性查看源码 CVE-2017-12615,PUT ...

  4. WPF入门之一APP.XAML

    WPF运行之后,App.xaml是应用的声明起始点. 一.指定入口 通过指定Application 的StartupUri属性,指示了启动应用的时候,加载哪个窗口或网页. 最常见的就是将默认的Main ...

  5. Ubuntu如何安装vncserver

    Ubuntu上安装和配置vncserver,然后通过客户端进行连接,就能够使用图像界面的方式来运行上面的软件了. 1.使用apt-cache search vncserver命令搜索可以用来安装vnc ...

  6. java - day004 - 数组排序,插入,冒泡

    // 判断string 是否相等不能用 == 使用 equal 方法 Arrays.sort(数组);  数组排序算法 对基本类型. 优化的快速排序算法 对引用类型, 优化的合并排序算法

  7. selenium自动化测试在富文本中输入信息的方法

    第一次用selenium+python编写自动测试脚本,因为页面中插入了富文本编辑,开始怎么都无法输入进去,度娘好多方法都无效,分享踩坑的经历一是为了记录一下自己的成长,二是为了给同样摸索seleni ...

  8. mybatis的xml中sql语句中in的写法(迭代遍历)

    这里使用 foreach标签 <foreach  item="item" collection="listTag" index="index&q ...

  9. asp.net table/gridview 合并列

    public void MergeCell(TableRow trow) { TableCell currentCell = trow.Cells[0]; TableCell prevCell = n ...

  10. WPF管理系统自定义分页控件 - WPF特工队内部资料

    最近做一个演示的管理系统项目,需要用到分页控件,在网上找了很多,依然找到与UI模版匹配的,最后干脆自己写一个. 分页控件分析: 1.分页控件分简单显示和复杂显示两种: 2.包含上一页.下一页以及页码明 ...