示例#1
0
LRESULT CMainDlg::OnTrayNotification(WPARAM wParam, LPARAM lParam)
{
	if(wParam == IDR_MAINFRAME && 
		(lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN))
		SetTrayIcon();

	if(wParam == IDR_MAINFRAME 
		&& lParam == WM_RBUTTONUP
		&& theApp.m_dwSubWindowCount > 0)
		lParam = WM_LBUTTONDOWN;

	if(wParam == IDR_MAINFRAME && lParam == WM_LBUTTONDOWN)
	{
		if(m_MessageIndex != 0)
		{
			int tmpIndex = m_MessageIndex;
			m_MessageIndex = 0;
			AfxMessageBox(m_OnLine.GetInternet()->m_sMessage[tmpIndex], MB_ICONINFORMATION);
			m_OnLine.GetInternet()->m_sMessage[tmpIndex][0] = 0;
			SetTrayIcon();
			return 0;
		}

		lParam = WM_LBUTTONDBLCLK;
	}

    return m_TrayIcon.OnTrayNotification(wParam, lParam);
}
示例#2
0
void MainDialog::SetTrayIconIndex(int nIndex)
{
	HICON hIcon = NULL;
	if (nIndex < ICON_TRAY_LOGO || nIndex > ICON_COUNT)
		SetTrayIcon(0);
	else
		SetTrayIcon(m_hIcons[nIndex]);
}
示例#3
0
int CheckServiceStatus()
{

  SC_HANDLE schSCManager;
  SC_HANDLE schService;
  SERVICE_STATUS ssStatus; 

    // Open a handle to the SC Manager database. 
    schSCManager = OpenSCManager( 
      NULL,                    // local machine 
      NULL,                    // ServicesActive database 
      SC_MANAGER_CONNECT);     // Connect rights 
   
    if (NULL == schSCManager) {
      o.service_state = service_noaccess;
      SetServiceMenuStatus();
      return(false);
    }

    schService = OpenService( 
      schSCManager,          // SCM database 
      _T("OpenVPNService"),  // service name
      SERVICE_QUERY_STATUS); 
 
    if (schService == NULL) {
      /* open vpn service failed */
      ShowLocalizedMsg(IDS_ERR_OPEN_VPN_SERVICE);
      o.service_state = service_noaccess;
      SetServiceMenuStatus();
      return(false);
    }

    if (!QueryServiceStatus( 
            schService,   // handle to service 
            &ssStatus) )  // address of status information structure
    {
      /* query failed */
      ShowLocalizedMsg(IDS_ERR_QUERY_SERVICE);
      return(false);
    }
 
    if (ssStatus.dwCurrentState == SERVICE_RUNNING) 
    {
        o.service_state = service_connected;
        SetServiceMenuStatus(); 
        SetTrayIcon(connected);
        return(true);
    }
    else 
    { 
        o.service_state = service_disconnected;
        SetServiceMenuStatus();
        SetTrayIcon(disconnected);
        return(false);
    } 
} 
示例#4
0
void
CheckAndSetTrayIcon()
{
    if (o.service_state == service_connected)
    {
        SetTrayIcon(connected);
        return;
    }

    if (CountConnState(connected) != 0)
    {
        SetTrayIcon(connected);
    }
    else
    {
        if (CountConnState(connecting) != 0 || CountConnState(reconnecting) != 0
        ||  CountConnState(resuming) != 0 || o.service_state == service_connecting)
            SetTrayIcon(connecting);
        else
            SetTrayIcon(disconnected);
    }
}
示例#5
0
void CMainDlg::SetLampSelect(BYTE bWorkMode)
{
	if(m_bWorkMode == bWorkMode) return;

	if(theApp.m_pDllIoControl == NULL)
	{
		AfxMessageBox(GUI_ACL_MESSAGE_FUNCTION_NOT_FOUNT);
		return;
	}

	XFILTER_IO_CONTROL ioControl;
	ioControl.Byte = bWorkMode;

	if(theApp.m_pDllIoControl(IO_CONTROL_SET_WORK_MODE, &ioControl) != XERR_SUCCESS)
	{
		AfxMessageBox(GUI_ACL_MESSAGE_SET_WORK_MODE_ERROR);
		return;
	}

	if(theApp.m_pDllIoControl(IO_CONTROL_SET_WORK_MODE, &ioControl) != XERR_SUCCESS)
	{
		AfxMessageBox(ERROR_STRING_FILE_SAVE_ERROR);
	}

	if(m_bWorkMode != 255)
	{
		m_ButtonLamp[m_bWorkMode].SetSelect(FALSE);
	}
	m_ButtonLamp[bWorkMode].SetSelect(TRUE);
	m_bWorkMode = bWorkMode;

	SetTrayIcon(bWorkMode);

	static BOOL bIsFirst = TRUE;
	if(bIsFirst)
	{
		bIsFirst = FALSE;
		return;
	}
	PXACL_HEADER pHeader = theApp.m_AclFile.GetHeader();
	DWORD nPosition = (DWORD)&pHeader->bWorkMode - (DWORD)pHeader;
	if(!theApp.m_AclFile.UpdateFile(nPosition, &m_bWorkMode, sizeof(m_bWorkMode)))
	{
		AfxMessageBox(GUI_ACL_MESSAGE_SET_WORK_MODE_ERROR);
		return;
	}
	pHeader->bWorkMode = m_bWorkMode;

}
示例#6
0
/*
 * Handle a state change notification from the OpenVPN management interface
 * Format <TIMESTAMP>,<STATE>,[<MESSAGE>],[<LOCAL_IP>][,<REMOTE_IP>]
 */
void
OnStateChange(connection_t *c, char *data)
{
    char *pos, *state, *message;

    pos = strchr(data, ',');
    if (pos == NULL)
        return;
    *pos = '\0';

    state = pos + 1;
    pos = strchr(state, ',');
    if (pos == NULL)
        return;
    *pos = '\0';

    message = pos + 1;
    pos = strchr(message, ',');
    if (pos == NULL)
        return;
    *pos = '\0';

    if (strcmp(state, "CONNECTED") == 0)
    {
        /* Run Connect Script */
        if (c->state == connecting || c->state == resuming)
            RunConnectScript(c, false);

        /* Save the local IP address if available */
        char *local_ip = pos + 1;
        pos = strchr(local_ip, ',');
        if (pos != NULL)
            *pos = '\0';

        /* Convert the IP address to Unicode */
        MultiByteToWideChar(CP_ACP, 0, local_ip, -1, c->ip, _countof(c->ip));

        /* Show connection tray balloon */
        if ((c->state == connecting   && o.show_balloon != 0)
        ||  (c->state == resuming     && o.show_balloon != 0)
        ||  (c->state == reconnecting && o.show_balloon == 2))
        {
            TCHAR msg[256];
            LoadLocalizedStringBuf(msg, _countof(msg), IDS_NFO_NOW_CONNECTED, c->config_name);
            ShowTrayBalloon(msg, (_tcslen(c->ip) ? LoadLocalizedString(IDS_NFO_ASSIGN_IP, c->ip) : _T("")));
        }

        /* Save time when we got connected. */
        c->connected_since = atoi(data);
        c->failed_psw_attempts = 0;
        c->state = connected;

        SetMenuStatus(c, connected);
        SetTrayIcon(connected);

        SetDlgItemText(c->hwndStatus, ID_TXT_STATUS, LoadLocalizedString(IDS_NFO_STATE_CONNECTED));
        SetStatusWinIcon(c->hwndStatus, ID_ICO_CONNECTED);

        /* Hide Status Window */
        ShowWindow(c->hwndStatus, SW_HIDE);
    }
    else if (strcmp(state, "RECONNECTING") == 0)
    {
        if (strcmp(message, "auth-failure") == 0
        ||  strcmp(message, "private-key-password-failure") == 0)
            c->failed_psw_attempts++;

        if (strcmp(message, "auth-failure") == 0 && (c->flags & FLAG_SAVE_AUTH_PASS))
            SaveAuthPass(c->config_name, L"");
        else if (strcmp(message, "private-key-password-failure") == 0 && (c->flags & FLAG_SAVE_KEY_PASS))
            SaveKeyPass(c->config_name, L"");

        c->state = reconnecting;
        CheckAndSetTrayIcon();

        SetDlgItemText(c->hwndStatus, ID_TXT_STATUS, LoadLocalizedString(IDS_NFO_STATE_RECONNECTING));
        SetStatusWinIcon(c->hwndStatus, ID_ICO_CONNECTING);
    }
}