Archive for the ‘windows’ Category

Microsoft ScriptControl 控件使用指南

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)

一个实例来源

 

Windows找不到msconfig

microsoft_windows

msconfi是微软系统配置工具,随系统附带。主要是用来提供对系统,文件,开机程序,系统服务,ini文件(boot.ini,system.ini)的快速设置。

msconfig可以在运行中输入msconfig开启。有的时候会显示“windows无法找到msconfig”,可能是病毒感染或者是系统注册表,文件系统损坏造成的。

cannot_find_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目录,没有就自己添加,修正成以下样子就可以了:

msconfigexe

[翻译自ghacks]

 

Apache:setup_inherited_listeners(), WSASocket failed to open the inherited socket

几天捣腾Win平台的Apache,启动了也没有看到httpd.exe进程,服务也无法开启,查看logs目录下的error.log内容:

“setup_inherited_listeners(), WSASocket failed to open the inherited socket”

解决方法:
“网络连接”–>”tcp/ip属性”–> “高级”–>”wins”—>去掉”LMHOSTS查询”的勾选。

 

Windows 7自动登陆

本来安装的时候我只建立了一个Administrator管理员用户,但是后来安装了Vmware Workstation 6.5.1 ,查看本地用户(lusrmgr.msc)多了一个__vmware_user__ ,然后系统启动停留在选择用户,而不是自动登陆。

解决办法是开始->运行->control userpasswords2 或者 rundll32 netplwiz.dll,UsersRunDll ,进入“用户帐户”控制,然后去掉“要使用本机,用户必须输入用户名和密码”的勾选,确定。

 

Windows PE环境下硬盘安装Windows 7 beta

  1. 首先到微软Windows 7主页,首先选择你要下载的版本,32bit?64bit? 然后用自己的MSN账号登陆,会给你一个CD-KEY,
    弹出一个ActiveX控件,其实是Windows 7专用的下载器,主要是为了防止你找到iso的URL。
    觉得以上步骤麻烦这里有直接的下载地址:
    32bit / 64bit
  2. 系统安装一个硬盘版的WinPE,基于Server 2003 SP1内核以上,啥,不懂?看图:

    Windows PE是代替以前 用DOS来做系统维护的东东,最大的好处就是内核取自各标准系统,再在其基础上进行精简,可以做到开机把所有系统文件载入内存,机制类似与Linux的LiveCD。
    维基百科中有对各种PE版本的比较,所以要在PE中安装Windows 7版本必须是1.6 or 2.0 or 2.1。
    既然是硬盘安装就没有用光驱的必要,网上好多的Windows PE 2.0都是iso格式,我们需要的是硬盘版,搜了N久发现了一个:网虫2008_PE090126_XPSP3_03SP2_DOS_单双核五合一维护盘.iso
  3. Daemon挂载iso安装的时候一定要选择基于2003那个,然后进入PE,要么解压win 7 iso,要么用ultraiso挂载,运行光盘根目录下的setup.exe
    然后其他的系统安装就不多说了,和Vista类似,多了HomeGroup这个概念。
    然后系统就安装完成,登陆界面不是滚动条了,而是:

    还是挺炫的。
  4. 接下来就是驱动问题,我的配置是AMD Athlon 64 4200+/NF520/ST160G/2G/
    系统设备 NVIDIA nForce PCI System Management 和网卡 Generic Marvell Yukon 88E8056 based Ethernet Controller
    没有识别出来,PCI System那个用以前XP驱动手动安装成功,Marvell网卡手动安装失败,我看了一下驱动目录的oem0.inf有:
    ; INF File for NDIS5.1 Miniport Driver for Windows XP and Server 2003 (x86) YK51X86.sys v10.15.7.3
    于是乎,到Marvell驱动主页下了个For Vista/2008 32bit的驱动,手动安装,雅搭!
  5. 打开Foobar发现没有声音,难道是声卡问题,识别出来是High Definition Audio,我这个主板集成的是Realtek的ALC883声卡芯片,到Realtek下载页面找到High Definition Audio Codecs ,  下了个最新的R204:
    Vista Driver (32/64 bits) Driver only (ZIP file) R2.14 2009/1/9 27225k GO GO GO

    安装后重新启动,设备名识别为Realtek High Definition Audio , 打开Foobar2000还是没有声音,进入控制面板,打开“Realtek高清晰音频管理器”,打开Speaker选项卡,点开右边的“插孔设置”,勾选“禁用前面板插孔设置”,瞬间音乐就迸发鸟出来。

  6. 英文界面看起来头晕的,有两个选择,之前远景做的汉化包还有M$自家简体中文语言包:
    32bit:
    ftp://icmuser:down@ftp.icafemain.com/cn_windows_7_beta_language_pack_dvd_x86_x15-29106.iso

    or
    ftp://icmuser:down@jy.icafemain.cn/cn_windows_7_beta_language_pack_dvd_x86_x15-29106.iso

    64bit:
    ftp://icmuser:down@ftp.icafemain.com/cn_windows_7_beta_language_pack_dvd_x64_x15-29113.iso
    or
    ftp://icmuser:down@jy.icafemain.cn/cn_windows_7_beta_language_pack_dvd_x64_x15-29113.iso
    远景的没有用过,M$的简体包也灰常的水,中英文混杂。

  7. 杀毒软件对系统版本比较敏感,目前没有主流的专门for Win7的杀软,还好,卡巴推出了一个,详情看Kaspersky.com/windows7
    我已经安装了,只有En文版,授权用Active Online的方法,免费申请一个key可以用到2009.4.30。
  8. 评论时间到:
    首先Windows 7内部版本号为6.1.7000 ,Vista为6.0,有点搞不懂M$的意图了。
    Windows 7的驱动和Vista有很大的兼容性,所以如果没有适合Win7的驱动,不妨试试for Vista/2008的驱动。
  9. 有问题欢迎交流。
 

Windows开机速度测评软件-BootRacer

____操作系统的开机速度通常会引起更多人的关注。一少部分人才会一天启动多次电脑,大多数用户一般一天一次,而且也不关心开机用了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。

 

清除IE中番茄花园按钮

前面的废话:

这几天,俺的机子出了点问题,经常出现系统启动的时候时儿显示“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}就是你待搜索的关键字,完成后,如图:

测试一下:

 

修复Windows任务栏自动隐藏

某些Windows用户习惯自动隐藏任务栏,但是可能有时候会存在任务栏锁死的情况,一般都是和软件发生冲突引起的。 不过还好,这里Kelly‘s Corner上有个脚本貌似可以解决这个问题。 运行完了这个vbs之后会自动重启动explorer进程,所有的东西都会欢迎恢复到windows安装时候的初始状态。 重新自定义任务栏也花不到一分钟的时间。 不过这个vbs脚本本来是为windows XP用户编写,还好在Vista下是完全兼容的。 [via ghacks.net]

 

微软新推出Vista旗舰版Extras: Microsoft Tinker

tinker


微软最近以Extras包的形式发布了一个益智小游戏:Tinker。在游戏中你将操控一个机器人穿越障碍,从A点顺利到达B点。以下是微软对Tinker的一点描述:

游戏区是一个方形面板。移动机器人到红白相间的瓷砖上。面板上有可移动的区域,转换区,移动区,齿轮和其他物体。

这个机器人可以:

  • 移动周面的特定物体。
  • 使用转换器来开启关闭物体。
  • 收集齿轮。
  • 破坏特性物体。

如果操作不善,机器人可能会被困住。

很明显Tinker只能在Vista旗舰版上玩,不过我相信一定有人可以把这款游戏移植到其他Vista版本,甚至XP中。以下是YouTube上找到的相关视频:

Microsoft Tinker 帮助页面

[via cybernetnews.com]

 

Windows 7将停止捆绑邮件,图片编辑,视频制作软件

事实:

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一月发布,明年可能有个版本发布出来用于用户反馈 )。