DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: liangjiping168
今日帖子: 12
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/24 13:17:11
标题:
编译64位的exe无法使用ms自带的ScriptControl 浏览:3452
加入我的收藏
楼主:   
var
 jsExe: OleVariant;
begin
  jsExe := CreateOleObject('ScriptControl'); // 创建组件

  jsExe.Language := 'JavaScript'; // 指 定组件所使用的语言,也可以是VBScript
end;

这句话,编译成win32没有问题;
但是编译成win64却却报错,
提示:

 
没有注册类, ProgID: "ScriptControl"
 

不知道如何处理,可能64位默认不支持微软的script了
----------------------------------------------
青云论坛
作者:
男 gmxyb (gmxyb) ★☆☆☆☆ -
普通会员
2019/4/24 13:23:59
1楼: 支持64位,只是有一些接口(不是所有的)的 GUID 要用另一套,32/64 是不同的。

还有一些函数的参数类型也要做调整。。

至于具体是那些,网上能搜到。
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/24 15:50:19
2楼: 多谢楼上提醒;
我尝试了半天;没搞定;
直接导入了(也就是您说的两套中的win64这套):

unit MSScriptControl_TLB;
 

// Type Lib: C:\Windows\SysWOW64\msscript.ocx (1)
// LIBID: {0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}
// LCID: 0

.....

怎么弄都不行;



算了,还是把程序退回到32位了;
----------------------------------------------
青云论坛
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/24 16:16:36
3楼: 其他JavaScript的方法我也试过,但是他们其实都不是真正的js解析器;

很多标准的语法,解析不了;
----------------------------------------------
青云论坛
作者:
男 kkkmmm (KKKMMM) ★☆☆☆☆ -
普通会员
2019/4/24 16:19:56
4楼: SysWOW64中的是32位的, SYSTEM32中的才是64位的,不要轻易放弃,再试试 ;)
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/24 17:06:27
5楼: https://www.baidu.com/link?url=e7Fji8jvN4C0VbRDwHx5zWQ3s7QxcPwe_hWdh-u086mQbdiZ7hu7XtkYVp6EmVrY&wd=&eqid=dce1be4100060f4d000000065cc0261f

上面这个帖子说到:

另外这个ScriptControl仅仅有32位的,在64位Windows上的system32里面并没有这个DLL,仅仅在SysWow64中才有.也就是说如果你要开发64位Windows程序就不能用了.当然如果是在64位Windows中运行的32位程序则没问题.


---
ysWOW64中的是32位的, SYSTEM32中的才是64位的,不要轻易放弃,再试试 ;)

全局搜索后,只有这个一个地方有这个ocx:
 C:\Windows\SysWOW64\msscript.ocx
----------------------------------------------
青云论坛
作者:
男 138soft (138soft) ★☆☆☆☆ -
盒子活跃会员
2019/4/24 21:22:29
6楼: 1、下载https://github.com/tablacus/TablacusScriptControl/releases/download/1.0.9.0/tsc64_1090.cab,安装即可。

2、源码:https://github.com/tablacus/TablacusScriptControl.git
----------------------------------------------
是你上错了车,还是我下错了站?
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2019/4/24 22:49:47
7楼: 我都不好意思回答。那是武哥的专利。
让武哥来回答你的问题吧。
----------------------------------------------
武汉天气不好
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/25 8:36:26
8楼: 这个不错:

  1、下载https://github.com/tablacus/TablacusScriptControl/releases/download/1.0.9.0/tsc64_1090.cab,安装即可。

2、源码:https://github.com/tablacus/TablacusScriptControl.git
---------- 

使用说明说的也很清楚:


Script Control for 64-bit platforms
Tablacus Script Control 64

Alternate MSScript.ocx

* Install & Uninstall

Run setup.exe

or

* Install
Run as administrator
regsvr32 tsc64.dll

* Uninstall
Run as administrator
regsvr32 /u tsc64.dll

Binary file is here.
https://tablacus.github.io/scriptcontrol_en.html

Build
Visual C++ 2010 Express Edition SP1
Windows SDK v7.1
----------------------------------------------
青云论坛
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/25 8:47:33
9楼: 厉害啊!

就用上面tsc64.dll 搞定了!

可是微软为什么自带的只能支持32位;说明微软本身也想放弃这个功能了
----------------------------------------------
青云论坛
作者:
男 gmxyb (gmxyb) ★☆☆☆☆ -
普通会员
2019/4/26 19:51:14
10楼: 首先,微软自带的js引擎肯定是支持 64 位的,只不过可能不提供msscript.ocx这种控件方式了。如果你熟悉com编程,直接用底层的Com接口是可以的(不同于msscript.ocx的脚本接口)。

那个 tsc64.dll 也只是把微软64位的js引擎封装了一下,模拟了一个64位的msscript.ocx

我在一楼说的那几个不同的 GUID 在 tsc64.dll 的源码中就有。
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/4/30 9:19:50
11楼: 多谢gmxyb;
  要是有直接底层的com的delphi代码,就更好了;网上搜了一下,好像没找到;

这样就变成纯绿色了;
----------------------------------------------
青云论坛
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2019/4/30 10:37:49
12楼: 其他JavaScript的方法我也试过,但是他们其实都不是真正的js解析器;

很多标准的语法,解析不了;

-----> 这话从何说起 。。。 msscript才是很老的了。。许多新的js写法解析不了
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/5/1 11:48:02
13楼: 是的 msscript是很老了;我也不太想用这个; 
能否推荐一个其他的:)
----------------------------------------------
青云论坛
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2019/5/2 21:41:06
14楼: 给你推荐一个纯Pascal写的JavaScript,而且它执行的时候会用JIT编译成X86或X64本地代码再执行,而不是一行行解释,效率极高。
你去找一下besen,以前在GoogleCode上,现在Github上。
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2019/9/22 8:47:06
15楼:
你去找一下besen,以前在GoogleCode上,现在Github上。

--找到了;
https://github.com/BeRo1985/besen

稍后就研究一下;
----------------------------------------------
青云论坛
作者:
男 gmxyb (gmxyb) ★☆☆☆☆ -
普通会员
2019/9/22 15:27:39
16楼: besen比较小众,项目貌似不太活跃,代码也挺晦涩难懂。。

如果想要个比较好的js脚本引擎,推荐:
https://github.com/tondrej/chakracore-delphi
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行476.5625毫秒 RSS