标题: [问题求助] [已解决]VBS如何自动复制文本并保存 [打印本页]
作者: xgda 时间: 2013-8-28 11:13 标题: [已解决]VBS如何自动复制文本并保存
本帖最后由 xgda 于 2013-8-29 09:00 编辑
求两个VBS
①一般来说,在网页中用鼠标任意选取一段内容
然后按ctrl+c就能将所选取的内容复制到剪切板上
想求一vbs,此vbs放在C盘,然后发送到桌面快捷方式,设此快捷方式的快捷键为(Num -)
当在网页中选取一段文字后,直接按(Num -)一个按键就能将所选取的内容复制下来并保存在C:\log.txt里面
C:\log.txt里只保存上一次复制的内容即可,或者说每次运行此VBS时先删除C:\log.txt再新建一个C:\log.txt都行
.
②另外一个VBS同样放C盘,然后发送到桌面快捷方式,设此快捷方式的快捷键为(Num +)
当按下(Num +)时,改VBS读取C:\log.txt内容,然后用
Set a=Wscript.CreateObject("Wscript.Shell")
a.SendKeys "abcdefg"
的方式发送出文字。 "abcdefg"为字母加数字不会超过20位,不含汉字或其他特殊字符
(一定不能用ctrl+v的方式,因为所要输入的文本框对ctrl+v免疫!!)
多谢!!!!
有没有论坛捐助什么的,本人要赞助 20圆
作者: Batcher 时间: 2013-8-28 14:49
我的签名里面有链接
作者: czjt1234 时间: 2013-8-28 15:04
本帖最后由 czjt1234 于 2013-8-28 15:09 编辑
1 要求选择后先ctrl + C复制- Dim objFSO, objTextStream, Form, TextBox
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objTextStream = objFSO.OpenTextFile("C:\log.txt", 2, True)
- Set Form = CreateObject("Forms.Form.1")
- Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
- TextBox.MultiLine = True
- If TextBox.CanPaste Then
- TextBox.Paste
- objTextStream.Write TextBox.Text
- objTextStream.Close()
- End If
复制代码
2- Dim objFSO, objTextStream, objWshShell, strS, i
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objTextStream = objFSO.OpenTextFile("C:\log.txt", 1, False)
- strS = objTextStream.ReadLine()
- Set objWshShell = CreateObject("Wscript.Shell")
- For i = 1 To Len(strS)
- objWshShell.SendKeys Mid(strS, i, 1)
- Next
复制代码
作者: xgda 时间: 2013-8-28 15:48
1 要求选择后先ctrl + C复制2
czjt1234 发表于 2013-8-28 15:04
第一个说的意思不是先ctrl + C复制,是直接按(Num -)一个按键就能将所选取的内容复制下来
就是由(Num -)一个按键代替ctrl + C两个按键
第二个当我按下(Num +)时,貌似当前操作的对象就不是要输入的文本框了
按之前光标在闪
按之后光标不在了
用
Set a=Wscript.CreateObject("Wscript.Shell")
a.SendKeys "%{TAB}"
为什么也不能切换
作者: xgda 时间: 2013-8-28 15:50
怎样用类似
Set a=Wscript.CreateObject("Wscript.Shell")
a.SendKeys "%{TAB}"
的方法将操作的对象返回到文本框里?
作者: czjt1234 时间: 2013-8-28 17:26
- Set objWshShell = CreateObject("Wscript.Shell")
- objWshShell.AppActivate "我的电脑" '激活指定标题栏
- Wscript.Sleep 500 '延时半秒,防止反应不过来
复制代码
第一个要求做不到,因为不能固定标题栏
否则倒可以激活标题栏,再发送Ctrl + C
作者: xgda 时间: 2013-8-28 18:45
第一个要求做不到,因为不能固定标题栏
否则倒可以激活标题栏,再发送Ctrl + C
czjt1234 发表于 2013-8-28 17:26
如果只在一个网页里复制的话是不是能行呢?
设该网页为 “批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Windows Interent Explorer"
第一个改怎么改呢
作者: xgda 时间: 2013-8-28 18:50
我的签名里面有链接
Batcher 发表于 2013-8-28 14:49
【论坛捐助】http://www.bathome.net/thread-10403-1-1.html
链接还打不开啊
您无权进行当前操作,原因如下:
对不起,本帖要求阅读权限高于 10 才可浏览,请返回。
作者: Batcher 时间: 2013-8-28 20:19
回复 8# xgda
现在应该可以了
作者: zz100001 时间: 2013-8-29 12:53
这样就叫已解决??
我可以明确的告诉你,这两个目的只用系统自带的vbs都是完全可以搞定的。
前提是你要把实际的应用环境列出来,
第一个,是什么浏览器,chrome和firefox没法弄,但是ie内核的完全可以;
第二个,到底是要按键发送到一个什么东西里面,如果是确定的程序,那也是完全可以的,谁告诉你必须固定标题栏才能激活窗口?
作者: xgda 时间: 2013-8-30 06:28
回复 10# zz100001
浏览器为系统自带的IE6,要发送的目标也是一个ie网页的输入框
作者: xgda 时间: 2013-8-30 06:40
这个ie网页的输入框貌似给嵌了一个applet的小程序,要输入的数据就是一些条码,必须用条码枪扫出来,不能直接手动输入,手动输入的话该输入框就会把输入的数据给清空,你输多快它就清多快,当然也不能用Ctrl V。
其实如果有什么方法能不加载那个applet的话也可以的
作者: xgda 时间: 2013-8-30 06:46
用上面的方法确实解决了不能在那个输入框手动输数据的难题
作者: zz100001 时间: 2013-8-30 09:57
我周围已经找不到ie6了............
贴第一个的代码吧,我在ie9和ie10上面试了可以,第二个没有具体的网页也没法写了- For Each w In CreateObject("Shell.Application").Windows
- If TypeName(w.document) = "HTMLDocument" Then
- s = w.document.selection.createRange().text
- If Not s = "" Then
- CreateObject("Scripting.FileSystemObject") _
- .CreateTextFile("C:\log.txt", True) _
- .Write s
- Exit For
- End If
- End If
- Next
复制代码
作者: xgda 时间: 2013-8-30 10:50
回复 14# zz100001
刚在自己电脑上试了,真的可以!!!
不过是要拿到公司电脑上用的,晚上上班再试一下,谢谢...
作者: czjt1234 时间: 2013-8-30 11:11
学习一下~~~
作者: xgda 时间: 2013-9-2 21:00
回复 14# zz100001
自从接触BAT,VBS脚本以来,我都认为是不区分大小写的;
这次我真的错了,这个脚本弄了两个晚上了,因为公司车间不允许带存储设备,所以代码都是手打上去的。
但是那脚本死活不起作用,反复核对,也没有什么差错啊,想了好久才想起来是不是和大小写有关系?
于是就试了一下,脚本第二行"HTMLDocument"那几个字母必须要大写,没想到运气真好啊,只试了一次就好了哈
PS:本人语文老师死得早
作者: zz100001 时间: 2013-9-3 18:25
BAT 和 VBS 的确是不区分大小写的,但是,这是针对语法中那些关键字和变量名或属性名方法名而言的。
引号里面具体的变量值当然是要区分大小写了,bat 的 if 比较都有 /i 参数来控制是否严格区分大小写。
vbs里面如果想要避免这种严格匹配的,可以用 UCase 或者 LCase 函数把变量值转换大小写之后进行比较。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |