Board logo

标题: [原创] 批处理、VBS/JS写入剪切板改进 [打印本页]

作者: broly    时间: 2011-10-26 00:14     标题: 批处理、VBS/JS写入剪切板改进

大家先看此贴:
zqz版主的批处理、VBS剪贴板操作专题
http://bbs.bathome.net/viewthread.php?tid=8329&fromuid=25503

注意到原文的这部分:
  2、将文本写到剪贴板


其中:
  1. mshta.exe "javascript:clipboardData.setData('text', 'www.bathome.net');close();"
复制代码
上面这种是用批处理写入文本到剪贴板
  1. Set ws = CreateObject("WScript.Shell")
  2. ws.run "mshta ""javascript:clipboardData.setData('text', 'www.bathome.net');close();""", 0, true
  3. '最好设置等待标志为true,等待操作完成,保证后续语句能得到正确结果
  4. WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")
复制代码
上面这种是用VBS写入文本到剪贴板

我先来不说这两种方法那里不妥先,大家先来测试下面的代码:
d盘下放一文本test.txt:
  1. lineOne
  2. lineTwo
  3. lineThree
复制代码
然后运行下面的JS代码
  1. var wsh = new ActiveXObject("WScript.Shell");
  2. var fso = new ActiveXObject("Scripting.FileSystemObject")
  3. var f = fso.OpenTextFile("d:\\test.txt", 1, false);
  4. var str = f.ReadAll();
  5. f.Close();
  6. wsh.run("mshta \"javascript:clipboardData.setData('text','" + str + "');close();\"",0);
  7. wsh = null;
  8. fso = null;
  9. f = null;
复制代码
运行结束说明已成功写入剪贴板了(有的人的电脑在运行过程中会出现提示,运行即可)

然后大家随便建一个记事本,粘贴,看有什么情况发生。
如果没有其他意外的话,你得到的文本应该是这样的:
  1. lineOnelineTwolineThree
复制代码
没错,就是粘贴后没有换行的。现在我稍微把代码改进了:
  1. var wsh = new ActiveXObject("WScript.Shell");
  2. var fso = new ActiveXObject("Scripting.FileSystemObject")
  3. var f = fso.OpenTextFile("d:\\test.txt", 1, false);
  4. var str = new String(f.ReadAll());
  5. f.Close();
  6. wsh.run("mshta \"javascript:clipboardData.setData('text','" + str.replace(/\n/g,"\\r\\n") + "');close();\"",0);
  7. wsh = null;
  8. fso = null;
  9. f = null;
复制代码
现在试试如何?
作者: wc726842270    时间: 2011-10-26 19:49

本帖最后由 wc726842270 于 2011-10-26 19:52 编辑

这应该是浏览器的原因吧,用WORD试一下吧
Word 版,读剪贴板:
  1. Dim objWord
  2. Set objWord = CreateObject("Word.Application")
  3. 'objWord.Visible = True
  4. Set wdDoc = objWord.Documents.Add
  5. objWord.Selection.PasteAndFormat (wdFormatPlainText)
  6. objWord.Selection.WholeStory
  7. strBuf = objWord.Selection.Text
  8. objWord.Quit False
  9. Set objWord = Nothing
  10. WScript.Echo strBuf
复制代码
  Word 版,写剪贴板:
  1. Dim objWord
  2. Set objWord = CreateObject("Word.Application")
  3. 'objWord.Visible = True
  4. Set wdDoc = objWord.Documents.Add
  5. objWord.Selection.Text = "UMU WSH 30_SetClipData_Word.vbs"
  6. objWord.Selection.Copy
  7. objWord.Quit False
  8. Set objWord = Nothing
复制代码
原文:http://hi.baidu.com/umu618/blog/ ... 113bddb7fd487e.html
作者: zhangop9    时间: 2011-11-19 23:54

这个学习一下




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2