I: 今天整理了一下,把关于ScreenSaver的 两个未公开的API贴上来.ALL可以把他 加入到自己的ScreenSaver中,实现Password 功能.用VB的话需要自己改写一下或做个DLL. // File : ssave.cpp < Simple screen saver application > // Author: Mr.Huang fei #include #include // .... (其他部分就省略了) // Function declaration UINT VerifyScreenSavePwd( HWND hParentWnd ); UINT ChangeScreenSavePwd( HWND hParentWnd ); // Function types for GetProcAddress #define PwdChangePassword_PROFILE (UINT (__stdcall *)( LPSTR, HWND, DWORD, DWORD)) #define VerifyScreenSavePwd_PROFILE (UINT (__stdcall *)( HWND )) //////////////////////////////////////////////////////////////////////// // Define: UINT ChangeScreenSavePwd( HWND hParentWnd ) // Parameters: hParentWnd --- Handle to parent window // Return: 0 --- Password changed ok // 1 --- User canceled // 2... --- Error happened // // Author: Mr.Huang fei // Time: 5/29/1998 // // Note: the HWND can be NULL. //////////////////////////////////////////////////////////////////////// UINT ChangeScreenSavePwd( HWND hParentWnd ) { UINT ret = 1; // Function address defination UINT (__stdcall * hookPwdChangePassword) ( LPSTR, HWND, DWORD, DWORD ); // Load library HINSTANCE hMod = LoadLibrary( TEXT("MPR.DLL") ); if( hMod == NULL ) return GetLastError(); // Clear pointer hookPwdChangePassword = NULL; // Get address of function hookPwdChangePassword = PwdChangePassword_PROFILE GetProcAddress ( hMod, TEXT("PwdChangePasswordA") ); if( hookPwdChangePassword == NULL ) { FreeLibrary( hMod ); return GetLastError(); } // Call the function ret = hookPwdChangePassword( TEXT("SCRSAVE"), hParentWnd, NULL, NULL ); ret = !ret; FreeLibrary( hMod ); return ret; } //////////////////////////////////////////////////////////////////////// // Define: UINT VerifyScreenSavePwd( HWND hParentWnd ) // Parameters: hParentWnd --- Handle to parent window // Return: 0 --- Password is right // 1 --- User canceled // 2... --- Error happened // // Author: Mr.Huang fei // Time: 6/1/1998 // // Note: the HWND can be NULL. //////////////////////////////////////////////////////////////////////// UINT VerifyScreenSavePwd( HWND hParentWnd ) { UINT ret = 1; // Function address defination UINT (__stdcall * hookVerifyScreenSavePwd)( HWND ); // Load library HINSTANCE hMod = LoadLibrary( TEXT("PASSWORD.CPL") ); if( hMod == NULL ) return GetLastError(); // Clear pointer hookVerifyScreenSavePwd = NULL; // Get address of function hookVerifyScreenSavePwd = VerifyScreenSavePwd_PROFILE GetProcAddress ( hMod, TEXT("VerifyScreenSavePwd") ); if( hookVerifyScreenSavePwd == NULL ) { FreeLibrary( hMod ); return GetLastError(); } // Call the function ret = hookVerifyScreenSavePwd( hParentWnd ); ret = !ret; FreeLibrary( hMod ); return ret; }