• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    使用vbs脚本实现自动打字祝福与搞笑实现代码

    发布者: 皮3591 | 发布时间: 2025-8-14 04:01| 查看数: 94| 评论数: 0|帖子模式

    概述
    听说抖音上流行一种用代码做程序表白的东西,,,,
    当然我也不是要表白,,,,
    但是好像蛮有意思的,,,,
    于是,又学了一下vbs脚本,做了几个很不错的祝福脚本,不懂代码的可以直接戳传送门下载,但是想自己改内容的话,下面有讲
    效果示范
    <iframe height=498 width=510 src='http://player.youku.com/embed/XMzk4Nzk4NDE5Ng==' frameborder=0 'allowfullscreen'>

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

    3. Function say(AutoTime)
    4. End Function
    复制代码
    什么?就这么点吗?当然不是!!!这部分的代码有上千上,内容就在function中间,当然你也看出这是个函数了,那我们的内容也是模拟键盘输入,所以,你觉得怎么搞这部分呢?
    用数组存字符串,然后模拟键盘输出吗?
    试过很多次了,都失败了,貌似只能一个一个敲
    然后,写一个字母的代码量,,,,大概是40个字母
    当然,不可能真的一个字一个字敲啊,为什么不写一个程序出来,专门写vb的模拟键盘输入代码呢?
    C++实现英文转vbs模拟键盘输入代码
    1. #include<iostream>
    2. #include<fstream>
    3. using namespace std;
    4. int main() {
    5.   ifstream ifile;
    6.   ifile.open("D:\\in.txt");
    7.   ofstream ofile;
    8.   ofile.open("D:\\out.txt");
    9.   char str[100];
    10.   while (ifile.getline(str, 100)) {
    11.     if (str[0] == '\0') {
    12.       ofile << "WS.SendKeys "{ENTER}"" << endl << endl<<endl;
    13.     }
    14.     else {
    15.       for (int i(0); i < strlen(str); i++) {
    16.         ofile << "WScript.Sleep AutoTime" << endl;
    17.         ofile << "WS.SendKeys "" << str[i] << """ << endl;
    18.       }
    19.       ofile << "WScript.Sleep 1000" << endl;
    20.       ofile << "WS.SendKeys "{ENTER}"" << endl << endl << endl;
    21.     }
    22.   }
    23.   ofile.close();
    24.   ifile.close();
    25.   return 0;
    26. }
    复制代码
    两个文件,in.txt,你要显示的英文,可以空行,可以逗号问好,但是,必须用英文输入法
    对,就像这样,对吧,很容易,然后就会生成一个1k多行的out.txt
    把里面内容全选复制,然后放在function say 的中间,这一步就完成了
    AutoTime是每个字的间隔,可以自己定义,75效果就蛮好的
    4)祝福网页
    又是一个在脚本里没出现的功能,
    1. Function link()
    2. Set Seven = WScript.CreateObject("WScript.Shell")
    3. strDesktop = Seven.SpecialFolders("Desktop")
    4. set oShellLink = Seven.CreateShortcut(strDesktop & "\Titordong.url")
    5. oShellLink.TargetPath = "https://www.cnblogs.com/Titordong/"
    6. oShellLink.Save
    7. Set oShellLink=Nothing
    8. strDesktop = Seven.SpecialFolders(4)
    9. mypath=strDesktop&"\Titordong.url"
    10. Seven.run mypath
    11. End Function
    复制代码
    如果你有博客,或者你有自己写的网页,甚至你自己的qq空间也行,把链接复制,然后oShellLink.TargetPath = "https://www.cnblogs.com/Titordong/"里面的后面引号里替换,就ok
    效果就是可以再桌面建立一个快捷方式链接,然后自动打开你指向的这个链接,当然这个在程序里要调用的话,要在say(AutoTime)后面加一行link()
    后记
    vbs脚本功能很强(好像之前说过),切记每行只能有一个语句哦!而且,用英文输入法写,包括代码,也包括英文的祝福&搞笑,至于为什么不用中文,,,键盘上也没有中文按键啊~

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表