Board logo

标题: [问题求助] [已解决]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复制
  1. Dim objFSO, objTextStream, Form, TextBox
  2. Set objFSO = CreateObject("Scripting.FileSystemObject")
  3. Set objTextStream = objFSO.OpenTextFile("C:\log.txt", 2, True)
  4. Set Form = CreateObject("Forms.Form.1")
  5. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  6. TextBox.MultiLine = True
  7. If TextBox.CanPaste Then
  8.     TextBox.Paste
  9.     objTextStream.Write TextBox.Text
  10.     objTextStream.Close()
  11. End If
复制代码
2
  1. Dim objFSO, objTextStream, objWshShell, strS, i
  2. Set objFSO = CreateObject("Scripting.FileSystemObject")
  3. Set objTextStream = objFSO.OpenTextFile("C:\log.txt", 1, False)
  4. strS = objTextStream.ReadLine()
  5. Set objWshShell = CreateObject("Wscript.Shell")
  6. For i = 1 To Len(strS)
  7.     objWshShell.SendKeys Mid(strS, i, 1)
  8. 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

  1. Set objWshShell = CreateObject("Wscript.Shell")
  2. objWshShell.AppActivate "我的电脑"    '激活指定标题栏
  3. 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上面试了可以,第二个没有具体的网页也没法写了
  1. For Each w In CreateObject("Shell.Application").Windows
  2.     If TypeName(w.document) = "HTMLDocument" Then
  3.         s = w.document.selection.createRange().text
  4.         If Not s = "" Then
  5.             CreateObject("Scripting.FileSystemObject") _
  6.                 .CreateTextFile("C:\log.txt", True) _
  7.                     .Write s
  8.             Exit For
  9.         End If
  10.     End If
  11. 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