Страница 15 из 24 31)---------------------------------------------------------------------------- Q> Как запретить переключение по alt-tab? A> Для MSVC: CMainFrame::CMainFrame() { m_nHotKeyID = 100; BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID, MOD_ALT, VK_TAB); ASSERT(m_isKeyRegistered != FALSE); } //Убираем блокировку при выходе из приложения CMainFrame::~CMainFrame() { BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID); ASSERT(m_isKeyUnregistered != FALSE); } Для BCB: DWORD m_nHotKeyID = 100; void __fastcall TForm1::FormCreate(TObject *Sender) { BOOL m_isKeyRegistered = RegisterHotKey(Form1->Handle, m_nHotKeyID, MOD_ALT, VK_TAB); } void __fastcall TForm1::FormDestroy(TObject *Sender) { BOOL m_iskeyUnregistered = UnregisterHotKey(Form1->Handle, m_nHotKeyID); } 32)---------------------------------------------------------------------------- Q> Как программно нажать клавишу (Num Lock например)? A> Win95/98: { BYTE KeyboardState[ 256 ]; GetKeyboardState( KeyboardState ); KeyboardState[ VK_NUMLOCK ] = KeyboardState[ VK_NUMLOCK ] ^ 1; SetKeyboardState( KeyboardState ); } WinNT: { keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 ); } 33)-------------------------------------------------------------------------- Q> Как соединиться по RAS ? A> #include #include bool DialUp(LPTSTR PhoneNumber,LPTSTR UserName,LPTSTR Password) { RASDIALPARAMS rdParams; rdParams.dwSize = sizeof(RASDIALPARAMS); rdParams.szEntryName[0] = '\0'; lstrcpy( rdParams.szPhoneNumber, PhoneNumber ); rdParams.szCallbackNumber[0] = '\0'; lstrcpy( rdParams.szUserName, UserName ); lstrcpy( rdParams.szPassword, Password ); rdParams.szDomain[0] = '\0'; HRASCONN hRasConn = NULL; DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn ); if ( dwRet == 0 ) return true; char szBuf[256]; if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 ) wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet ); RasHangUp( hRasConn ); MessageBox( (LPSTR)szBuf, "Error", MB_OK | MB_ICONSTOP ); return false; } 34)---------------------------------------------------------------------------- Q> Как определить,имеется ли соединение по RAS? A> BOOL IsInternetConnected () { DWORD nRasDevices = 20; DWORD nSize = 20; RASCONN rasconnected [10]; // Ras Connected struct rasconnected[0].dwSize = sizeof(RASCONN); RasEnumConnections( rasconnected, &nSize, &nRasDevices ); return ( BOOL (nRasDevices) ); } Note:95 считает что соединение произошло,как только модем подымает трубу ;-) |