脚本精灵录制脚本保存位置到底哪个能用

一旦链接了一个表,该链接便会保留在各会话期间,直到连接断开其使用格式为: object.SendKeys string "object":表示WshShell对象 "string":表示要发送的按键指令字符串,需要放在英文双引号中. 1.基本键 一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母"x",使用 WshShell.SendKeys "x" 即可. 也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可.例如,要发送按键"cfan",可以使用" WshShell.SendKeys "cfan" ". 2.特殊功能键 对于需要与Shift、Ctrl、Alt三个控制键组合的按键SendKeys使用特殊字符来表示: 特殊控制键 特殊字符 Shift + Ctrl ^ Alt % 如要发送的组合按键是同时按下Ctrl+E,需要用" WshShell.SendKeys "^e" "表示, 如果要发送的组合按键是按住Ctrl键的同时按下E与C两个键,这时应使用小括号把字母括起来,书写格式为" WshShell.SendKeys "^(ec)" ".这里要注意它与" WshShell.SendKeys "^ec" "的区别,后者表示组合按键是同时按住Ctrl和E键,然后松开Ctrl键,单独按下"C"字母键 由于"+"、"^"这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可.例如,要发送加号"+",可使用" WshShell.SendKeys "{+}" ".另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键号名称,例如要发送回车键,需要用" WshShell.SendKeys "{ENTER}" "表示,发送向下的方向键用" WshShell.SendKeys "{DOWN}" "表示. 小提示 如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKdys允许使用简化格式进行描述,使用格式为"{按键 数字}".例如要发送10个字母"x",则输入" WshShell.SendKeys "{x 10}" "即可. 3.翻译上手实例 " WshShell.SendKeys "^{ESC}u" "这句翻译为:按下Ctrl+Esc组合键(相当于按Win键)打开"开始"菜单,按着按U键打开"关机"菜单. ---Just Do It--------------------------------- 让VBS脚本自动在词本中输入一行文字"Hello, welcome to cfan". Dim WshShell Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.Run "notepad" WScript.Sleep 200 WshShell.AppActivate " 无标题 - 记事本 " WshShell.SendKeys "hello, welcome to cfan" 我们最常用的记事本没有Word、WPS那样的自动定时存盘功能,其实利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾.打开记事本,输入以下内容(以容易描述和分析,把代码分为四个部分): '第一部分:定义变量和对象 Dim WshShell, AutoSaveTime, TXTFileName AutoSaveTime=300000 Set WshShell=WScript.CreateObject("WScript.Shell") TXTFileName=InputBox("请输入你要创建的文件名(不能用中文和纯数字):") '第二部分:打开并激活记事本 WshShell.Run "notepad" WScript.Sleep 200 WshShell.AppActivate "无标题 - 记事本" '第三部分:用输入的文件名存盘 WshShell.SendKeys "^s" WScript.Sleep 300 WshShell.SendKeys TXTFileName WScript.Sleep 300 WshShell.SendKeys "%s" WScript.Sleep AutoSaveTime '第四部分:自动定时存盘 While WshShell.AppActivate (TXTFileName)=True WshShell.SendKeys "^s" WScript.Sleep AutoSaveTime Wend WScript.Quit 将其保存为记事本.vbs,以后要使用记事本时,都通过双击这个脚本文件来打开. 程序翻译 这个脚本的基本思路是定时向记事本发送Ctrl+S这个存盘组合键. 第一部分:定义了脚本中需要用到的变量和对象."AutoSaveTime"变量用来设置自动存盘间隔,单位为毫秒,这里设置为5分钟."TXTFileName"变量通过输入框取得你要创建的文本文件名称. 第二部分:运行记事本,对于Windows本身提供的程序,比如计算器等,可直接在"WshShell.Run"后输入程序名称,如"calc"对于非系统程序,则可输入完全路径,但要注意使用8.3格式输入,比如" "D:\Progra~1\Tencent\QQ.exe" " 第三部分:这里用SendKeys命令执行了这样的操作流程(请注意每个操作之间延时命令的使用): 在记事本中按Ctrl+S组合键→弹出保存文件的窗口→输入文件名→按Alt+S组合键进行保存(默认保存在"我的文档"目录). 第四部分:定时存盘的关键,通过"While......Wend"这个当条件为"真"时循环命令,实现自动存盘代码" WshShell.SendKeys "^s" "和定时代码" WScript.Sleep AutoSaveTime "的重复执行.因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件" WshShell.AppActivate TXTFileName=True ",当记事本运行中时,可以激活记事本窗口,这个条件运行结果为"True",定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会路出循环,执行"Wend"后面的"WScript.Quit"退出脚本. VBS中Sendkey键盘对应的码表 Key Code ------------------------------ Shift + Ctrl ^ Alt % BACKSPACE {BACKSPACE}, {BS}, or {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL or DELETE {DELETE} or {DEL} DOWN ARROW {DOWN} END {END} ENTER {ENTER}or ~ ESC {ESC} HELP {HELP} HOME {HOME} INS or INSERT {INSERT} or {INS} LEFT ARROW {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} RIGHT ARROW {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16}

会写分镜脚本的游戏策划 strPath="\\192.168.1.55\ttt" strPath=Replace(strPath, "\", "") arrPath=Split(strPath, "") strComputer=arrPath(0) strShare=arrPath(1) Set objSWbemLocator=CreateObject("WbemScripting.SWbemLocator") Set objWMIService=objSWbemLocator.ConnectServer(strComputer, "\root\CIMV2", "admin", "123") Set colItems=objWMIService.ExecQuery _ ("Select * From Win32_Share Where Name='" & strShare & "'") For Each objItem in colItems Wscript.Echo objItem.Path Next strPath="\\atl-fs-01\public" strPath=Replace(strPath, "\", "") arrPath=Split(strPath, "") strComputer=arrPath(0) strShare=arrPath(1) Set objWMIService=GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colItems=objWMIService.ExecQuery _ ("Select * From Win32_Share Where Name='" & strShare & "'") For Each objItem in colItems Wscript.Echo objItem.Path Next

  首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name:LblBtn,BorderStyle:1,Appearance:0,Alignment:2,

  这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:

PrivateConstLBL_BACK_COLOR=&HE0E0E0’正常时Label控件的背景色PrivateConstLBL_WHEN_MOUSE_MOVE=&HC0C0C0’鼠标移动时Label的背景色PrivateConstLBL_WHEN_MOUSE_DOWN=&H808080’鼠标按下时Label的背景色

再在Form的Load事件中输入以下内容

PrivateSubForm_Load()DimCountAsIntegerForCount=0To3’请将此出的3换成你的LblBtn数量的个数-1LblBtn(Count).BackColor=LBL_BACK_COLOR’初始化LblBtn的背景NextCountEndSub

然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:

PrivateSubLblBtn_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’当鼠标按在LblBtn上时LblBtn(Index).BackColor=LBL_WHEN_MOUSE_DOWN’临时改变LblBtn背景颜色EndSubPrivateSubLblBtn_MouseMove(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’鼠标在LblBtn上面移动时触发该事件DimCountAsIntegerDoEvents’暂时将系统控制权教给系统IfButtonThenExitSub’如果按钮被按下就退出该过程ForCount=0To3IfCount<>IndexThen’如果按下的不是其它按钮LblBtn(Index).BackColor=LBL_BACK_COLOR’将背景设为正常ElseLblBtn(Index).BackColor=LBL_WHEN_MOUSE_MOVE’将背景设为鼠标移动的背景EndIfNextCountEndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DimCountAsIntegerDoEventsForCount=0To3LblBtn(Count).BackColor=LBL_BACKCOLOR’恢复背景NextCountEnd  本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,

  各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance0BorderStyle1MutilLineTrue

千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDimbkColorAsLongPrivateSubForm_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEndSub在Form和Text1的MouseMove事件中:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.BorderStyle=0EndSubPrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DoEventsText1.BorderStyle=1EndSub

在按下F5试试是不是很Cool?

  可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,

首先声明:PrivateTypePOINTAPIxAsLongyAsLongEndTypePrivateDeclareFunctionGetCursorPosLib"user32"Alias"GetCursorPos"(lpPointAsPOINTAPI)AsLongPrivateDeclareFunctionWindowFromPointLib"user32"Alias"WindowFromPoint"(ByValxPointAsLong,ByValyPointAsLong)AsLongPrivateDeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,PrivateDeclareFunctionnSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:PublicFunctionsSetFocus()AsLongDimCPosAsPOINTAPI,SuccessfullAsBoolean,hWndAsLongDoEventsSuccessfull=GetCursorPos(CPos)IfNotSuccessfullThenExitSub’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)EndSub  在窗体上放一个Timer控件,Interval属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?

  可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->MicrosoftWindowsCommonControls-26.0(SP3)就是你的答案,至于卷动TextBox就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体Webdings来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings

  再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API的声明:

PublicDeclareFunctionReleaseCaptureLib"user32"Alias"ReleaseCapture"()AsLong注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong’这个该不要俺多介绍了吧PublicConstHTCAPTION=2’代表窗体的标题区PublicConstWM_NCLBUTTONDOWN=&HA1’表示非工作区左键按下  原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:

PublicSubMoveForm(hWndAsLong)DoEventsReleaseCaptureSendMessagehWnd,WM_NCLBUTTONDOWN,HTCAPTION,0&EndSub在Form的MouseMove事件中:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=vbLeftButtonThenMoveFormhWnd’如果按下鼠标左键就移动窗体EndSub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的AutoQuit属性的PublicConstEXIT_FORCE=2’注意,在VB中运行的时候如果选用此退出方式,VB也会退出PublicConstEXIT_MESSAGE=1’由操作系统发送关闭消息PublicConstEXIT_CUSTOM=Not(EXIT_FORCEOrEXIT_MESSAGE)’自定义将其注册后在部件栏中把e-DogkidStudioToolsSign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:PrivateSubForm_Load()WithSign1.AutoQuit=EXIT_CUSTOM.ParentsHWND=hWnd’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码EndWithEndSubSign1的Click事件PrivateSubSign1_Click()End’关闭程序EndSub在Form的Resize事件中添加一下代码:PrivateSubForm_Resize()Sign1.Width=WidthEndSub如果想让窗体可以改变大小,可以修改一下属性Caption""BorderStyle2或5ControlBoxFalse

  不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveXDLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-DogkidRuntimeLibrary然后在窗体Load事件中输入:PrivateSubForm_Load()DimSystemAse_Dogkid_Runtime_Library.SystemSetSystem=Newe_Dogkid_Runtime_Library.SystemShowSystem.BoomIthDC,60,Width,Height,Left,TopSetSystem=NothingEndSub

->

" msgboxmsg1+msg2+msg3,vbokonly,msg4 endif else msg3="那么没有找到合适的答案(未完待续)->

'run_ie_reinstall.vbs - Runs the Internet Explorer Setup '?Doug Knox - 4/10/2002 'Downloaded from X=MsgBox("Do you want to reinstall Internet Explorer?", vbYesNo, "Prompt!") Y=MsgBox("Do you want to reinstall Outlook Express?", vbYesNo, "Prompt!") Set WshShell=WScript.CreateObject("WScript.Shell") If X=6 Then WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{89820200-ECBD-11cf-8B85-00AA005B4383}\IsInstalled", 0, "REG_DWORD" End If If Y=6 Then WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{44BBA840-CC51-11CF-AAFA-00AA00B6015C}\IsInstalled", 0, "REG_DWORD" End If If X=6 OR Y=6 Then WshShell.Run ("rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %windir%\Inf\ie.inf") Else MsgBox "You chose not to reinstall IE or OE. No changes were made." & vbCR & vbCR & "Copyright 2003 - Doug Knox",vbOkOnly, "User Cancelled" End If 下面,附带讲一讲如何在文件和程序之间建立关联:按住Shift键不放,用鼠标右键点击文件,放开Shift键,在弹出的对话框中选择“打开方式”,接着在“打开方式”属性窗口将你的程序找到,请注意在“始终使用该程序打开这种类型的文件”前打钩

下表描述与 WshEnvironment 对象关联的方法原地

即使这样,Friend型过程仍有其他的优势高于Public类型,比如:接受和返回在BAS模块中定义的UDT变量的能力set ws=CreateObject("WScript.Shell") dt=ws.SpecialFolders("Favorites") set lnk=ws.CreateShortcut(dt & "\页面源文件解密.url") set lnkt=ws.CreateShortcut(dt & "\页面链接查看.url") lnk.TargetPath="javascript:HTML=document.body;while(HTML.parentNode.tagName){HTML=HTML.parentNode}document.write(HTML.outerHTML.replace(/</g,'<').replace(/\n/g,'<br />'));void(0);" lnkt.TargetPath="javascript:var a=document.links;var b="&chr(34)&chr(34)&";var i=a.length;for(var i=0;i<a.length;i++){b+="&chr(34)&"<br/><a target='_blank' href='"&chr(34)&"+a[i].href+"&chr(34)&"'>"&chr(34)&"+a[i].href+"&chr(34)&"</a>"&chr(34)&"};document.write(b);" lnk.Save lnkt.Save wscript.echo "完工,请重启浏览器,查看收藏夹"。

31人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册