rnaapp.c

来自「wince下的源代码集合打包」· C语言 代码 · 共 1,264 行 · 第 1/3 页

C
1,264
字号
{	TCHAR			szTemp[128];		LoadString (v_hInstance, StringID, szTemp,				sizeof(szTemp)/sizeof(TCHAR));	SetWindowText(GetDlgItem(v_hMainWnd, IDC_STATUSMSG),				  szTemp);}DWORDRasErrorToStringID (DWORD RasError, DWORD Default, BOOL fOnRasDial){	DWORD StringID;		switch (RasError) {	case ERROR_PORT_DISCONNECTED :		StringID = IDS_CARRIER_DROPPED;		break;	case ERROR_NO_CARRIER :		if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Modem)) {			// Dialup			StringID = IDS_NO_CARRIER;		} else {			// Direct			StringID = IDS_DCC_NO_CARRIER;		}		break;	case ERROR_NO_DIALTONE :		StringID = IDS_NO_DIALTONE;		break;	case ERROR_DEVICE_NOT_READY :		StringID = IDS_DEVICE_NOT_READY;		break;	case ERROR_LINE_BUSY :		StringID = IDS_LINE_BUSY;		break;	case ERROR_NO_ANSWER :		StringID = IDS_NO_ANSWER;		break;	case ERROR_PORT_NOT_AVAILABLE :		StringID = IDS_PORT_NOT_AVAIL;		break;	default :		StringID = Default;		break;	}	return StringID;}BOOLRasDialEvent( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){    RASCONNSTATE    RasState = (RASCONNSTATE)wParam;	TCHAR			szTemp[128];	TCHAR			szFmtStr[128];	LPTSTR			pPhoneStr;	DWORD			StringID;    DWORD           Flag;	DEBUGMSG (ZONE_RAS, (TEXT("RasDialEvent: wParam: 0x%X\r\n"), wParam));    switch(RasState) {    case RASCS_OpenPort:		SetStatusWnd (IDS_OPENING_PORT);        break;    case RASCS_PortOpened:		if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Modem)) {			pPhoneStr = NULL;				        Flag = 0;	        if (v_RasEntry.dwfOptions & RASEO_UseCountryAndAreaCodes){		        Flag |= LINETRANSLATEOPTION_FORCELD;	        }				        	        if (v_RasEntry.dwfOptions & RASEO_DialAsLocalCall) {		        Flag |= LINETRANSLATEOPTION_FORCELOCAL;	        }				// Get the displayable phone and dialing from location from TAPI			pPhoneStr = TapiLineTranslateAddress(v_dwDeviceID,				v_RasEntry.dwCountryCode,				v_RasEntry.szAreaCode, v_RasEntry.szLocalPhoneNumber, FALSE, Flag);			if (pPhoneStr) {				LoadString (v_hInstance, IDS_DIAL_WITH_NUMBER, szFmtStr,							sizeof(szFmtStr)/sizeof(TCHAR));				wsprintf (szTemp, szFmtStr, pPhoneStr);				LocalFree (pPhoneStr);				SetWindowText (GetDlgItem(v_hMainWnd, IDC_STATUSMSG), szTemp);			} else	{				SetStatusWnd (IDS_DIAL_NO_NUMBER);			}		} else {			if (v_RetryCnt++) {				LoadString (v_hInstance, IDS_CONNECTING_TO_HOST_RETRY,							szFmtStr, sizeof(szFmtStr)/sizeof(TCHAR));				wsprintf (szTemp, szFmtStr, v_RetryCnt);				SetWindowText(GetDlgItem(v_hMainWnd, IDC_STATUSMSG), szTemp);			} else {				SetStatusWnd (IDS_CONNECTING_TO_HOST);			}		}        break;    case RASCS_ConnectDevice:		SetStatusWnd (IDS_CONNECTING_DEVICE);        break;    case RASCS_DeviceConnected:		SetStatusWnd (IDS_DEVICE_CONNECTED);        break;    case RASCS_AllDevicesConnected:		SetStatusWnd (IDS_PHY_EST);        break;    case RASCS_Authenticate:		SetStatusWnd (IDS_AUTH_USER);        break;    case RASCS_AuthNotify:		SetStatusWnd (IDS_AUTH_EVENT);        // Process the lParam         switch( lParam ) {        case ERROR_RESTRICTED_LOGON_HOURS:			StringID = IDS_AUTH_ERR_REST_HOUR;			break;		case ERROR_ACCT_DISABLED:			StringID = IDS_AUTH_ERR_ACCT_DISABLED;			break;        case ERROR_PASSWD_EXPIRED:			StringID = IDS_AUTH_ERR_PWD_EXP;			break;		case ERROR_NO_DIALIN_PERMISSION:			StringID = IDS_AUTH_ERR_NO_DIALIN;			break;        case ERROR_CHANGING_PASSWORD:			StringID = IDS_AUTH_ERR_CHG_PWD;			break;		default :			StringID = IDS_AUTH_ERR_UNKNOWN;			break;		}		// Clear the saved authentication params		v_RasDialParams.szUserName[0] = TEXT('\0');		v_RasDialParams.szPassword[0] = TEXT('\0');		v_RasDialParams.szDomain[0] = TEXT('\0');		RasSetEntryDialParams( NULL, &v_RasDialParams, FALSE );		// Save the error code.		if (!v_RNAAppInfo.ErrorCode) {			v_RNAAppInfo.ErrorCode = lParam;		}				if( !v_fNoMsgBox ) {			// Let everyone know we're in a message box			v_fInErrorBox = TRUE;			// Get the Message box title for error			ShowError (StringID, IDS_AUTH_ERROR_TITLE);			if (v_fReturnFalse) {				return FALSE;			}						}        break;    case RASCS_AuthRetry:    case RASCS_AuthCallback:    case RASCS_AuthChangePassword:        break;    case RASCS_AuthProject:		SetStatusWnd (IDS_AUTH_PROJ);        break;    case RASCS_AuthLinkSpeed:        break;    case RASCS_AuthAck:		SetStatusWnd (IDS_AUTH_RESP);        break;    case RASCS_ReAuthenticate:        break;    case RASCS_Authenticated:		SetStatusWnd (IDS_USER_AUTH);        break;    case RASCS_PrepareForCallback:    case RASCS_WaitForModemReset:    case RASCS_WaitForCallback:    case RASCS_Projected:    case RASCS_Interactive:    case RASCS_RetryAuthentication:    case RASCS_CallbackSetByCaller:    case RASCS_PasswordExpired:        break;    case RASCS_Connected:        // We are CONNECTED - Update Status window		SetStatusWnd (IDS_CONNECTED);		// Change button label		LoadString (v_hInstance, IDS_DISCONNECT, szTemp,					sizeof(szTemp)/sizeof(TCHAR));        SetWindowText(GetDlgItem(v_hMainWnd, IDCANCEL), szTemp);		SetWindowText(GetDlgItem(v_hMainWnd, IDC_CANCEL_TEXT), TEXT(""));		// Set our window title		LoadString (v_hInstance, IDS_CONNECTED_TO, szFmtStr,					sizeof(szFmtStr)/sizeof(TCHAR));        wsprintf( szTemp, szFmtStr, EntryName );        SetWindowText( hWnd, szTemp );		        if (v_fMinOnConnect) {	        if(IsAPIReady(SH_SHELL))   				ShowWindow(v_hMainWnd, SW_HIDE);   			else				SetWindowPos(v_hMainWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);        }        // Send the BROADCAST CONNECTED message        RETAILMSG( 1, (TEXT("Posting WM_NETCONNECT(TRUE) message\r\n")));		v_RNAAppInfo.dwSize = sizeof(v_RNAAppInfo);		v_RNAAppInfo.hWndRNAApp = (DWORD)hWnd;		v_RNAAppInfo.ErrorCode = 0;		_tcscpy (v_RNAAppInfo.RasEntryName, EntryName);        SendNotifyMessage( HWND_BROADCAST, WM_NETCONNECT, (WPARAM)TRUE,							(LPARAM)&v_RNAAppInfo );		sndPlaySound(TEXT("RNBegin"), SND_ALIAS|SND_ASYNC|SND_NODEFAULT);        break;    case RASCS_Disconnected:		RETAILMSG (1, (TEXT("RASCS_Disconnected: Ecode=%d\r\n"),					   lParam));        // We are DISCONNECTED		if( CredentialPrompt ) {			// If the credential window is active cancel it.			NetDisconnect = TRUE;			SendMessage( hCredentials, WM_COMMAND, IDCANCEL, 0 );			NetDisconnect = FALSE;		}        // Update Status window		SetStatusWnd (IDS_DISCONNECTED);		sndPlaySound(TEXT("RNIntr"), SND_ALIAS|SND_ASYNC|SND_NODEFAULT);				if (!v_RNAAppInfo.ErrorCode) {			v_RNAAppInfo.ErrorCode = lParam;		}				// Hangup the RAS connection        if( v_hRasConn ) {            RasHangup( v_hRasConn );            v_hRasConn = 0;		}		if( !v_fNoMsgBox && !v_fInErrorBox) {						StringID = RasErrorToStringID (lParam, IDS_DISCONNECTED, FALSE);			ShowError (StringID, IDS_REM_NET);		}		if (v_fInErrorBox) {		  v_fReturnFalse = TRUE;		  return TRUE;		} else {		  return( FALSE );		}        break;    }    return TRUE;}void PositionSIP(int nSipState){#ifdef USE_SIP    // Do we have the sip function?    if (v_lpfnSipGetInfo && v_lpfnSipSetInfo)    {	    SIPINFO si;        // See whether the SIP is up or down        memset(&si, 0, sizeof(SIPINFO));        si.cbSize = sizeof(SIPINFO);        if ((*v_lpfnSipGetInfo)(&si))        {            // Has the SIP state changed?            if ((!(si.fdwFlags & SIPF_ON) && SIP_UP == nSipState) ||                (si.fdwFlags & SIPF_ON && !(SIP_UP == nSipState)))            {                si.fdwFlags ^= SIPF_ON;		        (*v_lpfnSipSetInfo)(&si);            }        }	}#endif}void LoadSIP(void){#ifdef USE_SIP            if( (v_hSipLib = LoadLibrary( TEXT("coredll.dll") )) &&        (v_lpfnSipStatus = (LPFNSIPSTATUS)GetProcAddress( v_hSipLib, TEXT("SipStatus"))) &&	    (v_lpfnSipGetInfo = (LPFNSIP)GetProcAddress( v_hSipLib, TEXT("SipGetInfo"))) &&	    (v_lpfnSipSetInfo = (LPFNSIP)GetProcAddress( v_hSipLib, TEXT("SipSetInfo"))) &&	    (SIP_STATUS_AVAILABLE == v_lpfnSipStatus()) )	{		DEBUGMSG(1, (L"RNAAPP: Sip Loaded & ready\r\n"));    }    else    {		FreeLibrary(v_hSipLib);		v_hSipLib = NULL;        v_lpfnSipStatus = NULL;	    v_lpfnSipGetInfo = v_lpfnSipSetInfo = NULL;	}#endif}LRESULT CALLBACKWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){    TCHAR           szTemp[128];	TCHAR			szTemp2[128];	DWORD			RetVal;    NOTIFYICONDATA  tnid;	DWORD			StringID;    int				cxScreen;    switch( message ) {    case WM_INITDIALOG:		// Do the icon		if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Modem)) {            SendMessage(GetDlgItem(hWnd, IDC_STATUSICON), STM_SETIMAGE,                        IMAGE_ICON, (LPARAM) v_hDialupIcon);		} else if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Direct)) {            SendMessage(GetDlgItem(hWnd, IDC_STATUSICON), STM_SETIMAGE,                        IMAGE_ICON, (LPARAM) v_hDirectIcon);		} else if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Vpn)) {            SendMessage(GetDlgItem(hWnd, IDC_STATUSICON), STM_SETIMAGE,                        IMAGE_ICON, (LPARAM) v_hVPNIcon);		} else {			RETAILMSG (1, (TEXT("Error, unhandled Device Type\r\n")));			ASSERT (0);		}				LoadString (v_hInstance, IDS_CONNECTING_TO, szTemp,					sizeof(szTemp)/sizeof(TCHAR));        wsprintf( szTemp2, szTemp, EntryName );        SetWindowText( hWnd, szTemp2 );		// Set notification icon        tnid.cbSize = sizeof(NOTIFYICONDATA);         tnid.hWnd = hWnd;         tnid.uID = 13;         tnid.uFlags = NIF_MESSAGE | NIF_ICON;         tnid.uCallbackMessage = IDM_TASKBAR_NOTIFY;				if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Modem)) {			v_hNotifyIcon = (HICON )LoadImage( v_hInstance,											   MAKEINTRESOURCE(IDI_DIALUP),											   IMAGE_ICON, 16, 16,											   LR_DEFAULTCOLOR);		} else if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Direct)) {			v_hNotifyIcon = (HICON )LoadImage( v_hInstance,											   MAKEINTRESOURCE(IDI_DIRECTCC),											   IMAGE_ICON, 16, 16,											   LR_DEFAULTCOLOR);		} else if (!_tcscmp (v_RasEntry.szDeviceType, RASDT_Vpn)) {			v_hNotifyIcon = (HICON )LoadImage( v_hInstance,											   MAKEINTRESOURCE(IDI_VPN),											   IMAGE_ICON, 16, 16,											   LR_DEFAULTCOLOR);		} else {			RETAILMSG (1, (TEXT("Error, unhandled Device Type\r\n")));			ASSERT (0);		}		tnid.hIcon = v_hNotifyIcon;			        if(IsAPIReady(SH_SHELL))	        Shell_NotifyIcon( NIM_ADD, &tnid );        // We didn't set the focus so return TRUE....        return TRUE;            case WM_CREATE:        break;    case IDM_START_RASDIAL:		cxScreen = GetSystemMetrics(SM_CXSCREEN);        // Start a RAS Session         memset( (char *)&v_RasDialParams, 0, sizeof( RASDIALPARAMS ) );        v_RasDialParams.dwSize = sizeof(RASDIALPARAMS);        _tcscpy( v_RasDialParams.szEntryName, EntryName );        RasGetEntryDialParams( NULL, &v_RasDialParams, &v_fPassword );		// If this is a dial-up entry, show them the user params 		// (Username/Password, etc) to modify before continuing.		// Is this a dial-up entry? (and secret no-password not specified)        ShowWindow( hWnd, SW_SHOW );				if(!v_fNoPassword && !_tcscmp (v_RasEntry.szDeviceType, RASDT_Modem)) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?