pb+api实际应用

发布时间 : 星期五 文章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

联系合同范文客服:xxxxx#qq.com(#替换为@)