Win32 API FAQ
Страница 15.


 

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 считает что соединение произошло,как только модем подымает трубу ;-)

 
« Предыдущая статья   Следующая статья »