阅读:2842回复:13
请教各位大大,修改一个Custim Buttons的按钮,不知道这个想法可行吗?
下面这个按钮是去执行一个程序,我想在执行这个程序之前,
把当前页面的内容复制到粘贴板,就像: Ctrl+A,Ctrl+C那样 如果可以的话,可不可以进一部增强到这样: 先把当前粘贴板的内容(有可能是位图) 先存放到一个临时 然后把当前的页面字符内容(不是页面html源代码)复制到粘贴板, 然后执行这个程序 等待三秒 然后把临时的内容放回到粘贴板? 谢谢各位大大解答!!! 目前使用的按钮代码: var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); file.initWithPath("D:\\All\\MyTools\\ReadWord.exe"); file.launch(); |
|
最新喜欢:infini... |
1楼#
发布于:2013-06-22 11:13
伪代码,参考 https://developer.mozilla.org/en/docs/U ... _Clipboard
var 剪切板cache = {}; 剪切板cahce = 获取剪切板内容对象(); 设置剪切板内容( 获取当前页面字符的函数(content.document) ); 执行程序(); window.setTimeout(function(){ 设置剪切板内容( 剪切板cache ); }, 3000 ); 操作剪切板很麻烦的,OLE对象什么的 你程序支持参数传递的话用下面的方法会简单很多 var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath( 程序路径 ); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); var args = []; args.push( 获取当前页面字符的函数(content.document) ); process.runwAsync(args, args.length, null, false); |
|
|
2楼#
发布于:2013-06-22 11:13
我的程序不支持参数传递。。。。囧
想知道 获取当前页面字符的函数 是什么呢? ^_^,文档实在看不懂。。。 |
|
3楼#
发布于:2013-06-22 11:13
|
|
|
4楼#
发布于:2013-06-22 11:13
嗯嗯,了解了,看来操作粘贴板很困难,伪代码其实我是大概知道怎么回事,但毕竟自己不是编程出身的,当年这个按钮,也是请教高手的。。。。
如果发送页面的Ctrl+A,CTRL+C不太可能, 那是否可以把整个页面的html代码复制到粘贴板呢? |
|
5楼#
发布于:2013-06-22 11:13
pppguest3962:嗯嗯,了解了,看来操作粘贴板很困难,伪代码其实我是大概知道怎么回事,但毕竟自己不是编程出身的,当年这个按钮,也是请教高手的。。。。 操作剪贴板是很简单的,你要等待三秒,然后把临时的内容放回到粘贴板?如果3秒内程序都没开好,剪贴板还是原来的内容。 这种外置的操作如果参数传递不支持,我会用 autohotkey 来解决。 |
|
6楼#
发布于:2013-06-22 11:13
折腾了一个星期,还是未能找到把页面内容复制到粘贴板的方法,
求助各位高手,如何把FF当前页面的全部内容复制到粘贴板? 或者 把FF当前页面的html代码全部复制到粘贴板? |
|
7楼#
发布于:2013-06-22 11:13
仅供参考,写的很简单
(function(){ let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; var ns = { init: function(){ var win = this.getFocusedWindow(); var text = win.document.documentElement.outerHTML; this.copy(text); }, copy: function(aText){ Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper).copyString(aText); }, getFocusedWindow: function() { var win = document.commandDispatcher.focusedWindow; return (!win || win == window) ? content : win; }, }; ns.init(); })(); |
|
8楼#
发布于:2013-06-22 11:13
hzzhaiqi:仅供参考,写的很简单(function(){ let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; var ns = { init: function(){ var win = this.getFocusedWindow(); var text = win.document.documentElement.outerHTML; this.copy(text); }, copy: function(aText){ Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper).copyString(aText); }, getFocusedWindow: function() { var win = document.commandDispatcher.focusedWindow; return (!win || win == window) ? content : win; }, }; ns.init(); })();回到原帖 感谢感谢!!!,我大概理解了一下代码,修改成这样,似乎不能工作, Readword.exe没能执行起来,估计中间三句直接使用似乎不行,呵呵呵,烦请各位高手帮我看看吧,谢谢!! var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); |
|
9楼#
发布于:2013-06-22 11:13
pppguest3962:回到原帖 let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; function getFocusedWindow() { var win = document.commandDispatcher.focusedWindow; return (!win || win == window) ? content : win; } function exec(path, args, blocking){ blocking = typeof(blocking) == 'undefined' ? false : blocking; var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); try { file.initWithPath(path); if (!file.exists()) { Cu.reportError('File Not Found: ' + path); } if (file.isExecutable()) { process.init(file); process.run(blocking, args, args.length); } else { file.launch(); } } catch(e) {} } var win = getFocusedWindow(); var text = win.document.documentElement.outerHTML; Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper).copyString(text); exec("D:\\All\\MyTools\\ReadWord.exe", []); |
|
10楼#
发布于:2013-06-22 11:13
非常感激hzzhaiqi大大的帮助,
代码实现出现问题,可以执行, 能执行到 exec("D:\\All\\MyTools\\ReadWord.exe", []); 这一步没问题的,能把Readword.exe调动起来,Readword的显示粘贴板是空的, 我打开notepad.exe,ctrl+v,没有贴出东西 我打开mspaint.exe,ctrl+v,似乎也没有位图, 我也不知道是不是我环境有问题呢,还是粘贴板的东西还需要转换一下? |
|
11楼#
发布于:2013-06-22 11:13
pppguest3962:非常感激hzzhaiqi大大的帮助, 你怎么调用的?完整代码发出来看看。 |
|
12楼#
发布于:2013-06-22 11:13
你前面贴的代码有错误,不是 aText,是 text
|
|
13楼#
发布于:2013-06-22 11:13
|
|