批处理之家's Archiver

CrLf 发表于 2015-2-26 15:25

hta 实现复制网页内容到剪贴板

[i=s] 本帖最后由 CrLf 于 2015-2-26 15:45 编辑 [/i]

写这么长是为了消除 cookie 提示[code]<!--
复制网址,再双击此文件即可复制文本到剪贴板,示例网址:
http://www.hgamecn.com/htmldata/article/2734.html
-->

<HTA:APPLICATION WINDOWSTATE="minimize" SHOWINTASKBAR="no"/>

<iframe id=copyhtml onload="copyhtml(this)"></iframe>

<script>
var ws=new ActiveXObject('WScript.Shell')
username = ws.ExpandEnvironmentStrings('%username%')
//取得用户名

var sSID = getssid(username)
//取得ssid

var name = 'HKEY_USERS\\'+sSID+'\\'+
                'Software\\Microsoft\\Windows\\CurrentVersion\\'+
                'Internet Settings\\Zones\\3\\1A10'
//取得注册表地址

var bak = readreg(name)
//备份注册表信息

writereg(name,0)
//改写注册表信息,以避免 cookie 提示

var url = clipboardData.getData("text")
//取得剪贴板中的网址

document.getElementById('copyhtml').src = url
//将 iframe 指向该网址

window.onbeforeunload = function(){
        writereg(name,bak)
        //结束时还原注册表信息
}

setTimeout(close,15000)
//15秒后一定会关闭并触发 onbeforeunload

function getssid(username){
        var wbemServices = GetObject('winmgmts:\\\\.')
        var wbemObjectSet = wbemServices.execquery("select sid from win32_userAccount where name='"+username+"'")
        var sSID = wbemObjectSet.ItemIndex(0).sid
        return sSID
}

function readreg(name){
        var ws = new ActiveXObject('WScript.Shell')
        return ws.RegRead(name)
}

function writereg(name,value){
        var ws = new ActiveXObject('WScript.Shell')
        return ws.RegWrite(name,value)
}

function copyhtml(iframe){
        clipboardData.setData('text',iframe.contentWindow.document.documentElement.innerText)
        //将网页内容保存到剪贴板

        close()
        //关闭窗口
}
</script>[/code]

CrLf 发表于 2015-2-26 15:57

得到的结果是纯文本,不带格式

867258173 发表于 2015-2-26 16:07

已测试成功运行,但有个问题,无法保存空行,

比如原网址[code]被称为“天空之城”的天界。居民被称为“天人”。

Caelum Urbs和地上不同,应有尽有。[/code]复制剪切板里的就是:[code]被称为“天空之城”的天界。居民被称为“天人”。
Caelum Urbs和地上不同,应有尽有。[/code]少了空行。能否再修改下,连同这些空行也保存下呢。

CrLf 发表于 2015-2-26 16:28

[i=s] 本帖最后由 CrLf 于 2015-2-26 16:30 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=162979&ptid=34442]3#[/url] [i]867258173[/i] [/b]


    那是通过 margin 设置的间距,不是真正的换行,所以 innerText 读不到

867258173 发表于 2015-2-26 16:39

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=162981&ptid=34442]4#[/url] [i]CrLf[/i] [/b]

这样啊,那就这样吧,有了这个以后直接复制粘贴方便多了。感谢(^-^)

mstsc 发表于 2018-10-14 22:15

怎么弄呢?网址放在哪里呢?

tsqingfeng 发表于 2019-1-2 20:35

如果复制带格式文本到剪贴板,该如何修改?

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.