Posted in windows on 01/19/2010 09:21 下午 by tunpishuang
Microsoft ScriptControl 控件使用指南
随着动态网页的出现,脚本语言已经被越来越多的人认识、接受并撑握。在程序中加入对脚本的支持一方面可以最大限度的扩展程序的应用范围,另一方面也方便程序员利用现有脚本提供的一些特别的功能(如正则表达式等)。下面结合我个人的一点经验谈一谈这方面的应用。
很显然要自己去实现一个脚本解释器是不现实的。好在已经有了可以复用的组件,那就是Microsoft ScriptControl。这是一个ActiveX控件,随Windows2000一起发布,如果要在2000以前的Windows中使用则需要安装该控件(可以到MS的网站上找到)。
ScriptControl接口
属性名称
类型
备注
AllowUI
BOOL
检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面元素不可见。
CodeObject
Object
脚本暴露给宿主调用的对象。只读。
Modules
Modules
宿主提供给脚本的组件库模块。只读。(COM组件通常都是以对象收集的形式向用户提供可以留给用户二次开发的对象集合,每一个收集即一个Modules)
Language
String
设置或获取脚本引擎解释的语言,例如:VBScript、JScript。
Name
String
脚本引擎的名称。只读。
Procedures
Procedures
返回模块中定义的过程的集合
SitehWnd
HWND
在脚本中显示UI的父窗口句柄
State
Enum
设置或返回控件的状态,如果为0,控件只执行语句但不转发事件,为1则为加入的本控件接受的对象转发事件。
Timeout
Long
控件的执行脚本的超时值,-1表示不超时
UseSafeSubset
BOOL
设置或返回宿主程序是否关心安全。宿主程序的安全级别可以从此属性设置
Error
Error
错误对象,发生错误时,此属性返回一个错误对象
方法名称
参数
功能
AddCode
Code As String
往脚本引擎中加入要执行的脚本
AddObject
Name As String, Object As Object, [AddMembers As Boolean = False]
往脚本引擎加入一个对象,以便在脚本中可以使用该对象提供的方法等。
Eval
Expression As String
表达式求值
ExecuteStatement
Statement As String
解释并执行脚本语句
Reset
丢弃所有的对象和代码,将State属性置0。
Run
ProcedureName As String, ParamArray Parameters() As Variant
运行一个指定的过程
事件名称
功能
Error
有错误发生时激发该事件
TimeOut
执行过程超时时发生
一般使用方法
1、在程序中加入ScriptControl
2、定义一个ScriptControl的实例
3、调用AddCode等方法向脚本引擎中加入要执行的脚本。
4、调用Run执行要执行的脚本函数。
宿主与脚本的通讯
1、 宿主调用脚本:这个过程比较简单,只要调用Run就可以将参数传递到脚本。
2、 脚本调用宿主:在初始化过程中调用AddObject接口,将宿主的一个或多个对象暴露给脚本,这时就可以在脚本中调用宿主对象的方法。在VC++中这个对象不是普通的C++类,它必须支持自动化,在脚本中也只能调用对象中自动化接口(在VB中这个个程相对比较简单)。
脚本调试
任何人写的代码都不可能一次就很完美,但是脚本由于执行的位置特殊,调试方法也不一样。首先下载一个脚本调试器(我用的是Microsoft Script Debugger, 在MS网站有下载,另据说其它的如VJ++也可以),安装以后在菜单上没有启动菜单。
调试器的启动
在一般的高级语言中都可以方便的设置断点,但是在启动脚本调试器以前如何开始调试呢?在IE中脚本出错会自动提示是否调试,还可以在脚本中加入中断代码(VBScript: Stop JavaScript: debugger),但是在ScriptControl还需要修改一下注册表才可以,你需要将HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings下的JITDebug的值改为1(默认为0)
一个实例 ,来源 。
Posted in app , windows on 04/12/2009 01:24 上午 by tunpishuang
msconfi是微软系统配置工具,随系统附带。主要是用来提供对系统,文件,开机程序,系统服务,ini文件(boot.ini,system.ini)的快速设置。
msconfig可以在运行中输入msconfig开启。有的时候会显示“windows无法找到msconfig”,可能是病毒感染或者是系统注册表,文件系统损坏造成的。
出现错误一般有两个原因。1,文件并不在默认路径了;2,注册表中把msconfig指向错误位置。
windows xp下msconfig.exe的默认路径是:windows\pchealth\helpctr\binaries, windows vista下的默认路径是windows\system32\
如果在默认的路径没有找到msconfig,可以通过系统盘搞定:
cmd下执行(假设E盘式系统盘):
1
EXPAND -R E:\I386\MSCONFIG.EX_ C:\WINDOWS\PCHEALTH\HELPCTR\BINARIES
如果是vista,执行:
1
EXPAND -R E:\I386\MSCONFIG.EX_ C:\WINDOWS\SYSTEM32
修正msconfig在注册表中的值,进入:
1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
看有没有msconfig.exe目录,没有就自己添加,修正成以下样子就可以了:
[翻译自ghacks ]
Posted in apache , app , windows on 02/28/2009 11:31 下午 by tunpishuang
几天捣腾Win平台的Apache,启动了也没有看到httpd.exe进程,服务也无法开启,查看logs目录下的error.log内容:
“setup_inherited_listeners(), WSASocket failed to open the inherited socket”
解决方法:
“网络连接”–>”tcp/ip属性”–> “高级”–>”wins”—>去掉”LMHOSTS查询”的勾选。
Posted in app , windows on 01/29/2009 05:07 下午 by tunpishuang
本来安装的时候我只建立了一个Administrator管理员用户,但是后来安装了Vmware Workstation 6.5.1 ,查看本地用户(lusrmgr.msc)多了一个__vmware_user__ ,然后系统启动停留在选择用户,而不是自动登陆。
解决办法是开始->运行->control userpasswords2 或者 rundll32 netplwiz.dll,UsersRunDll ,进入“用户帐户”控制,然后去掉“要使用本机,用户必须输入用户名和密码”的勾选,确定。
Posted in app , lingo , windows on 01/01/2009 03:29 下午 by tunpishuang
____操作系统的开机速度通常会引起更多人的关注。一少部分人才会一天启动多次电脑,大多数用户一般一天一次,而且也不关心开机用了30秒还是2分钟。开机速度是人们对操作系统的第一印象,如果开机较慢,也许就有人觉得其他的一切都很慢。
____BootRacer 是一个面向普通Windows用户的开机测评工具。使用这个工具并需要具备专业技术知识。该软件区别于一般的测评软件的功能(得出启动时间结果)在于它会对你的启动时间进行评分,让用户在和别的Windows系统比较时,自己的评分是多少。还有个优点就是可以精确的记录启动到登陆,启动到桌面的时间。
____如果系统启动时间小于1分钟,就会得到最好的评价-Excellent。
____BootRacer可以每次系统启动运行,也可以只运行一次。
____以下是我家里面的机子(P4 1.8G,845G,256RAM,80G,XP SP2)的运行结果,有点雷人-竟然是Not Good。
____该软件版本才1.0还有很多修正的地方,详情可以查看软件目录的帮助文档的Known Issue。
____直接下载点这里:地址1 ,地址2
_____
Gossip:
听说大多PR降了,本站PR升到了2,无所谓,即便是N/A。
Posted in app , windows on 12/04/2008 05:11 下午 by tunpishuang
前面的废话:
这几天,俺的机子出了点问题,经常出现系统启动的时候时儿显示“ntldr is missing” ,时儿显示“ Operation System Not Found”,弄得我很糊涂,难道是微软的服务器系统Server2k3对AMD的U支持不是很友好,就老实的装回了XP,结果还是这样,启动失败,但是比较奇怪的是:从可引导光盘启动到硬盘就没有问题。最后google大半天,我判定是硬盘数据线松动,打开机箱发现灰尘已经有了1cm,遂清洁了一下午,本来想上图的,但是V3的像素实在是不敢恭维.机子好了,Tomato XP就将就用了。
方法:
不过在开IE的时候,工具栏下面有个番茄花园的按钮:
点了直接链接到番茄主站,虽然没有以前的番茄花园工具条暴力,不过我看到起还是很不爽,遂打算把它删除掉.
打开注册表(Win+R,输入regedit),定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions,这个目录下的每个目录对应了工具栏下的一个子菜单,我们把ButtonText的值为“番茄花园”的删除掉就搞定了,如果你机子上还有其他不爽的子菜单都可以用这样的方法搞定:
如果觉得复杂,可以用个软件:Wsyscheck :
进入“安全检查”->“IE安全”,列出的除了Extensions外,还可以自定义IE的右键菜单。
另外就是番茄修改饭 系统安装后:默认的注册到是“番茄花园”,我们修改成自己的:
进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,修改RegisteredOrganization和RegisteredOwner就OK了,这两个值的直接作用到一些软件RegCompany和RegOnwer的两个值,也就是都会自动变成你修改后的字符。
接下来还可以自定义IE7的搜索引擎,转到HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes,默认有Yahoo!,Live Search,Baidu,番茄,Google,不要的就删除,我就只留下Google:
我们可根据这样的原理想番茄一样建立一个自己站点的站点搜索:
首先在SearchScopes目录下建立一个[项],名字随意,然后新建两个字符串,一个名为DisplayNname,值为TechGuru,一个名为URL,值为:http://techguru.cn/?s={searchTerms},这个是根据Wordpress博客搜索的get字符串的规则,{searchTerms}就是你待搜索的关键字,完成后,如图:
测试一下:
Posted in app , windows on 10/06/2008 09:08 下午 by tunpishuang
某些Windows用户习惯自动隐藏任务栏,但是可能有时候会存在任务栏锁死的情况,一般都是和软件发生冲突引起的。 不过还好,这里Kelly‘s Corner 上有个脚本 貌似可以解决这个问题。 运行完了这个vbs之后会自动重启动explorer进程,所有的东西都会欢迎恢复到windows安装时候的初始状态。 重新自定义任务栏也花不到一分钟的时间。 不过这个vbs脚本本来是为windows XP用户编写,还好在Vista下是完全兼容的。 [via ghacks.net ]
Posted in industry , windows on 09/26/2008 11:40 上午 by tunpishuang
微软最近以Extras包的形式发布了一个益智小游戏:Tinker。在游戏中你将操控一个机器人穿越障碍,从A点顺利到达B点。以下是微软对Tinker的一点描述:
游戏区是一个方形面板。移动机器人到红白相间的瓷砖上。面板上有可移动的区域,转换区,移动区,齿轮和其他物体。
这个机器人可以:
移动周面的特定物体。
使用转换器来开启关闭物体。
收集齿轮。
破坏特性物体。
如果操作不善,机器人可能会被困住。
很明显Tinker只能在Vista旗舰版上玩,不过我相信一定有人可以把这款游戏移植到其他Vista版本,甚至XP中。以下是YouTube上找到的相关视频:
Microsoft Tinker 帮助页面
[via cybernetnews.com ]
Posted in industry , windows on 09/24/2008 03:24 下午 by tunpishuang
事实:
cnet新闻 中说道:”Windows Live图片库,Windows Live邮件,博客写作工具Windows Live Writer,MSN和才加入的Window电影制作将会放到live网站 上提供免费下载。将不会在Windows 7系统中捆绑销售。”
原因:
在对Windows Live负责人Brian Hall的采访中说道:“从系统中移除这些软件的主要目的在于让下一代Windows系统发布时间快一点(作者:跳票已经成了微软的惯例了),第二点:可以让系统更简洁,更清爽,系统效率更高,更具有选择性。第三点:可以让微软有选择性的和特定公司合作。”
评论:
这次微软的决定应该是值得称赞的,在大多数人的眼中,Windows的捆绑软件往往给人不好的印象。毕竟每个Windows用户都有自己选择的权利,不然怎么会造就微软如此多的凡垄断的诉讼呢。在lifehacker的评论报道 中,貌似作者把Window的软件看得是一文不值,说道:“IE就是用来下载一个更好的浏览器。”并且和OS X做了一番对比。说道”OS X的软件正好的满足了我们日常的需求,Window移除了常用的日历软件甚至显得有点愚蠢。”不过有一点是不可质疑的,Google早已经在WEB发展中占据了大片疆域,Windows想在上面动土看来实属不易啊。大多数评论都相当的支持微软的这种做法,不知道大家怎么看?(PS:Brian Hall称:windows 7将在2010一月发布,明年可能有个版本发布出来用于用户反馈 )。