发布时间 : 星期五 文章pb+api实际应用更新完毕开始阅读
然后就可以在程序中使用这两个函数了,我们在窗体的Form_Load()过程中加入如下代码: MyMenu = GetSystemMenu(handle(this),0)//得到系统菜单的句柄,handle(this)表示当前窗体的句柄
RemoveMenu(MyMenu, 96, MF_BYCOMMAND)//移去“关闭”菜单项,96“关闭”菜单项的命令ID
15、如何获得屏幕保护程序的密码
// 如果屏幕保护程序设置了密码,密码将被加密,然后写到注册表的
“HKEY_CURRENT_USER\\Control Panel\\Desktop\\ScreenSave_Data”位置。屏保密码的最大长度为128位。加密方式是将密码与一特定字符串异或后得到密文,经 过参考有关资料,笔者利用VB成功地破解了屏保的密码。 外部函数声明:
Function long RegOpenKeyEx(long hKey, string lpSubKey, long ulOptions, long samDesired, long phkResult) Library \\
Function long RegCloseKey(long hKey) Library \Function long RegQueryValueEx(long hKey,string lpValueName, long
lpReserved,long lpType,any lpData,long lpcbData) Library \Alias for \
Function long RegSetValueEx(long hKey, string lpValueNames, long
Reserved,long dwType, any lpData, long cbData) Library \Aliasfor \//以上api可以使用powerbuilder提供的注册表函数替代
实例变量声明:
//注释:加密和解密所用的字符串 Constant string Key =
\E31B718D3463EB91C3240FB7C2F8E3B6544C3554E7C94928A385110B2C68FBEE7DF66CE39C2DE47
2C3BB851A123C32E36B4F4DF4A924C8FA78AD23A1E46D9A04CE2BC5B6C5EF935CA885
2B413772FA
574541A1204F80B3D52302643F6CF10F\
Constant long HKEY_CURRENT_USER = 2147483649 Constant long REG_SZ = 1
Constant long KEY_READ = &H20019 窗口自定义函数:
//注释:自定义函数,找到屏保密码 Function string GetScreenSaverPwd()
string EncryptedPassword ,DecryptedPassword,strRetVal,strreturn long lngResult,lngHandle,lngcbData
//注释:从注册表中读取已经加密的屏保密码
RegOpenKeyEx(HKEY_CURRENT_USER, \lngHandle)
RegQueryValueEx(lngHandle, \strRetVal, lngcbData )
strRetVal = Space(lngcbData)
lngResult = RegQueryValueEx(lngHandle, \ByVal strRetVal, lngcbData) RegCloseKey (lngHandle)
EncryptedPassword = strRetVal //注释:解密,得到密码
If Len(EncryptedPassword) <> 1 Then
EncryptedPassword = Left(EncryptedPassword, Len(EncryptedPassword) - 1) //注释:每2位与Key进行异或运算,得到密码 For i = 1 To Len(EncryptedPassword) Step 2 DecryptedPassword =
wf_or(DecryptedPassword,wf_Xor(Mid(EncryptedPassword, i, 2),Mid(Key, i, 2)))//这个是随便写的,可能有问题的:) Next
str_return = DecryptedPassword Else
str_return = \End If
If str_return = \未设置屏保密码。\return str_return
16、设置本地机器的时间 外部函数引用声明:
Function long SetSystemTime(stc_systemtime lpSystemTime) Library \结构声明:
type stc_systemtime from structure integer wyear integer wmonth
integer wdayofweek integer wday integer whour integer wminute integer wsecond
integer wmilliseconds end type 实现代码:
public function boolean of_setsystemtime (datetime adt_datetime); stc_systemtime lstc_systemtime date ld_date time lt_time
ld_date=date(adt_datetime) lt_time=time(adt_datetime)
lstc_systemtime.wyear=year(ld_date)//设置结构变量的年 lstc_systemtime.wmonth=month(ld_date)//设置结构变量的月 lstc_systemtime.wday=day(ld_date)//)//设置结构变量的天
lstc_systemtime.wdayofweek=daynumber(ld_date)//设置结构变量的星期数 lstc_systemtime.whour=hour(lt_time)//设置结构变量的小时 lstc_systemtime.wminute=minute(lt_time)//设置结构的秒数 lstc_systemtime.wsecond=minute(lt_time)//设置结构的分钟数 lstc_systemtime.wmilliseconds=0//设置结构的微秒数
return setsystemtime(lstc_systemtime)<>0//返回是否设置成功 end function
17、调用API函数设计ABOUT窗口
Windows操作系统的许多软件中都包含一个windows 风格的about 窗口,它向用户反映了当前系统的一些基本信息,其中显示有关windows 及其应用软件的版本、版权和系统的工作状态等信息。以下通过调用API 函数设计应用系统的ABOUT 窗口。 外部函数引用声明:
Function long GetWindowWord (long hwnd, long nIndex ) Library \Function long ShellAbout (long hwnd, string szApp , string szOtherStuff, long hIcon) Library \
Function long ExtractIcon (long hinst, string lpszExeFileName, long nIconIndex ) Library \Function long GetDiskFreeSpace (string lpRootPathName, long lpSectorsPerCluster, long lpBytesPerSector , long
lpNumberOfFreeClusters , long lpTotalNumberOfClusters) Library \
function long GetDriveType(string nDrive) Library \for \
Subroutine GetSystemInfo ( SYSTEM_INFO lpSystemInfo) Libaray \
Function long GetSystemMetrics(long nIndex ) Library \定义实例变量:
Constant long GWL_EXSTYLE = -20 Constant long GWL_STYLE = -16 Constant long GWL_WNDPROC = -4 Constant long GWL_HINSTANCE = -6 Constant long SM_CXSCREEN = 0 Constant long SM_CYSCREEN = 1 定义结构system_info
Type SYSTEM_INFO from structure long dwOemID long dwPageSize
long lpMinimumApplicationAddress long lpMaximumApplicationAddress long dwActiveProcessorMask long dwNumberOrfProcessors long dwProcessorType
long dwAllocationGranularity long dwReserved