“程序设计”目录存档

SDK编程中的窗口居中

2010年09月19日,星期日

MFC程序中调用CWnd::CenterWindow就可以实现窗口居中,但是纯SDK编程中没有CenterWindow这个函数,需要自定义一个。Google到一个比较好的实现。

(更多…)

用VBS实现PHP的SHA1函数

2010年09月18日,星期六

有了这个,VBS版的六维空间作弊工具就可以完成了。

依然是CAPICOM。

Function sha1(str, raw_output)
	Dim HashedData, Utility
	Set HashedData = CreateObject("CAPICOM.HashedData")
	Set Utility = CreateObject("CAPICOM.Utilities")
	HashedData.Algorithm = 0
	HashedData.Hash str	
	If raw_output Then
		sha1 = Utility.HexToBinary(HashedData.Value)
	Else
		sha1 = HashedData.Value
	End If
End Function

在64位系统中使用CAPICOM

2010年09月17日,星期五

最近把系统换成了windows 2008 r2,然后capicom就不好使了。据我所知,不存在64位版本的capicom.dll。

虽然capicom.dll是32位的dll,但是仍然推荐将其放到%windir%\syswow64文件夹而不是%windir%\system32文件夹。

下面是在x64系统上使用capicom.dll的步骤:

  1. 把capicom.dll复制到%windir%\syswow64文件夹
  2. 输入命令:

    %windir%\syswow64\regsvr32.exe %windir%\syswow64\capicom.dll

  3. 然后写个简单的vbs测试一下

    Set HashedData = CreateObject("CAPICOM.HashedData")

不出意外的话就可以使用了。

参考链接:RE: CAPICOM – Windows Server 2003 R2 64 bit – OLE automation error

Workbooks.Open中的相对路径

2010年09月16日,星期四

很少用到excel.application对象,所以不是很有研究。

碰到Workbooks.Open打开文件时使用相对路径会出错的问题,例如包含下面代码的VBS文件和data.xls在同一目录下

Dim oExcel
Set oExcel = CreateObject("excel.application")
oExcel.Visible = True
oExcel.Workbooks.Open "data.xls"

运行却会报错

无法找到“data.xls”。请检查文件名的拼写,并检查文件位置是否正确。

如果您正试图从“文件”菜单上最近使用的文件列表中打开文件,请确认文件未被重命名、移动或删除。

看来相对路径相对的不是vbs文件的路径,那么到底是相对哪里的路径呢?答案是“我的文档”,把data.xls放到“我的文档”根目录下再运行代码就不报错了。

getElementsByName的用法

2010年09月4日,星期六

最近在写一个网页采集的程序,无奈那个网页写得太烂,里面的标签连ID都没有,用不了getElementById。幸好还有name属性,用getElementsByName就行了。

<input type="text" name="username">

然后就可以使用

getElementsByName("username")(0)

来获取这个对象