long UpdateConsole( char *szBuff, long nErr ) { UpdateConsole( szBuff ); if ( !nErr ) { char *lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, nErr, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPTSTR) &lpMsgBuf, 0, NULL ); UpdateConsole( lpMsgBuf ); LocalFree( lpMsgBuf ); } else UpdateConsole( "success.\r\n\r\n" ); return nErr; }
int BurnUpdateProgress(float fProgress, const char* pszText, bool bAbs) { #if defined (_XBOX) || defined (SN_TARGET_PS3) UpdateConsole(pszText); #else if (BurnExtProgressUpdateCallback) return BurnExtProgressUpdateCallback(fProgress, pszText, bAbs); #endif return 1; }
void LoadAvatarTextureList() { char *pbuf; DWORD dwSize; HRSRC hRSRC; HGLOBAL hGlobal; hRSRC = FindResource( g_hInstance, MAKEINTRESOURCE( IDR_BINDATA ), "BINARY" ); if( hRSRC == NULL ) UpdateConsole( " FindResource", GetLastError( ) ); dwSize = SizeofResource( g_hInstance, hRSRC ); hGlobal = LoadResource( g_hInstance, hRSRC ); if( hGlobal == NULL ) UpdateConsole( " LoadResource", GetLastError( ) ); pbuf = (char*)LockResource( hGlobal ); if( pbuf == NULL ) UpdateConsole( " LockResource", GetLastError( ) ); CopyMemory(g_wAvatarTexturesList, pbuf, sizeof( g_wAvatarTexturesList ) ); CopyMemory(g_wAvatarTexturesBaldList, pbuf + sizeof( g_wAvatarTexturesList ), sizeof( g_wAvatarTexturesBaldList ) ); }
BOOL CALLBACK DlgConsoleProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: hDialogHwnd = hwnd; RegisterHotKey(hwnd, TOGGLE, MOD_CONTROL | MOD_ALT, 'Z'); GetAllWindow(); Cout("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: CHAR text[4068], list[4068]; Clear(); getInput(text); //console(text); //UpdateConsole(); WindowsList.getSimilarIdList(text, list); // Cout(list); UpdateConsole(); break; } break; case WM_HOTKEY: //char text[50]; //wsprintf(text, "wParam: %x lParam:%x", wParam, lParam); //MessageBox(hwnd, text, NULL, MB_OK); switch(wParam) { case TOGGLE: if (flag) { ShowWindow(hDialogHwnd, SW_HIDE); flag = 0; }else{ ShowWindow(hDialogHwnd, SW_SHOW); SetFocus(GetDlgItem(hDialogHwnd, IDC_EDIT_LINE)); flag = 1; } break; } break; case WM_MOUSEMOVE: echo("hello key down"); break; case WM_SETFOCUS: // MessageBox(hwnd, (LPCSTR)"WM_SETFOCUS", NULL, MB_OK); break; case WM_CLOSE: EndDialog(hwnd, 0); break; case WM_DESTROY: FreeLibrary(hRichEdit); PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return TRUE; }
int CALLBACK MainWindowProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { static HWND hWndStart; static HWND hWndClearObjs; static HWND hWndDiscAll; static HWND hWndDBTYPE; static HWND hWndDBIP; static HWND hWndDBNAME; static HWND hWndDBUSER; static HWND hWndDBPASSWORD; static HWND hWndCONFIG; static HWND hWndACCESSFILE; static HWND hWndPrivate; static HWND hWndUpdate; static HWND hWndSettings[30]; static BOOL fExit = FALSE; static HWND hWndExit; static UINT s_uTaskbarRestart; static BOOL fMinimized = FALSE; switch ( msg ) { case WM_INITDIALOG: { HICON hIcon; hIcon = LoadIcon( g_hInstance, MAKEINTRESOURCE( IDI_ICON ) ); SendMessage( hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon ); SendMessage( hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon ); DeleteObject( hIcon ); s_uTaskbarRestart = RegisterWindowMessage( TEXT( "TaskbarCreated" ) ); g_hWndConsole = GetDlgItem( hWnd, IDC_CONSOLE ); g_hWndHelpTitle = GetDlgItem( hWnd, IDC_HELP_TITLE ); g_hWndHelp = GetDlgItem( hWnd, IDC_HELP_TEXT ); hWndDBTYPE = GetDlgItem( hWnd, IDC_DBTYPE ); hWndDBIP = GetDlgItem( hWnd, IDC_DBIP ); hWndDBNAME = GetDlgItem( hWnd, IDC_DBNAME ); hWndDBUSER = GetDlgItem( hWnd, IDC_DBUSER ); hWndDBPASSWORD = GetDlgItem( hWnd, IDC_DBPASSWORD ); hWndACCESSFILE = GetDlgItem( hWnd, IDC_ACCESS_FILE ); hWndCONFIG = GetDlgItem( hWnd, IDC_CONFIG ); hWndPrivate = GetDlgItem( hWnd, IDC_SERVER ); hWndUpdate = GetDlgItem( hWnd, IDC_BTN_UPDATE ); hWndSettings[0] = GetDlgItem( hWnd, IDC_STATIP ); hWndSettings[1] = GetDlgItem( hWnd, IDC_STATCP ); hWndSettings[2] = GetDlgItem( hWnd, IDC_STATWP ); hWndSettings[3] = GetDlgItem( hWnd, IDC_STATDBIP ); hWndSettings[4] = GetDlgItem( hWnd, IDC_STATDBN ); hWndSettings[5] = GetDlgItem( hWnd, IDC_STATDBU ); hWndSettings[6] = GetDlgItem( hWnd, IDC_STATDBPASS ); hWndSettings[7] = GetDlgItem( hWnd, IDC_LOCALIP ); hWndSettings[8] = GetDlgItem( hWnd, IDC_CHARPORT ); hWndSettings[9] = GetDlgItem( hWnd, IDC_WORLDPORT ); hWndSettings[10] = GetDlgItem( hWnd, IDC_MYSQL_DB ); hWndSettings[11] = GetDlgItem( hWnd, IDC_MSSQL_DB ); hWndSettings[12] = GetDlgItem( hWnd, IDC_ACCESS_DB ); hWndSettings[13] = GetDlgItem( hWnd, IDC_SETTING_FRAME ); hWndSettings[14] = GetDlgItem( hWnd, IDC_FRAME_DB ); hWndSettings[15] = GetDlgItem( hWnd, IDC_STAT_MAXUSERS ); hWndSettings[16] = GetDlgItem( hWnd, IDC_MAX_USERS ); hWndSettings[17] = GetDlgItem( hWnd, IDC_STAT_SNAME ); hWndSettings[18] = GetDlgItem( hWnd, IDC_ED_SNAME ); WSADATA wsaData; struct hostent *host; USHORT wVersionRequested = 0x0202; UpdateConsole( " Initializing Winsock 2.0 ... ", !WSAStartup( wVersionRequested, &wsaData ) ); host = NULL; /* ////////// Read in Data FILE *pcStatConfig = fopen( "status.ini","rt" ); if ( pcStatConfig ) { char line[100]; while ( !feof( pcStatConfig ) ) { fgets( line, 100, pcStatConfig ); char temp[100]; char strData[50]; char value[50]; memcpy(temp,line,sizeof(line)); char* pszSepTemp = strchr(temp, (int)'='); if(pszSepTemp == NULL) { } else { *pszSepTemp = '\0'; sprintf(strData,"%s",temp); } char* pszSep = strchr(line, (int)'='); if(pszSep == NULL) { // No data } else { *pszSep = '\0'; ++pszSep; char* pszValue = strchr(pszSep, (int)';'); if(pszValue == NULL){ } else { *pszValue = '\0'; } sprintf(value,"%s",pszSep); if (lstrcmpi(strData,"Server") == 0) { if( lstrcmpi(value,"Private") == 0) { UpdateConsole(" Server: Private\r\n"); cMasterServer::cStatus->m_fPrivate = 1; } else { UpdateConsole(" Server: Public\r\n"); cMasterServer::cStatus->m_fPrivate = 0; } } else if(lstrcmpi(strData,"Host") == 0) { if(isalpha(value[0])) { //Do DNS Lookup for IP host = gethostbyname(value); memcpy(cMasterServer::cStatus->m_strHost,inet_ntoa(*(struct in_addr *) host->h_addr_list[0]),16); } else { memcpy(cMasterServer::cStatus->m_strHost,value,sizeof(value)); } } else if(lstrcmpi(strData,"Port") == 0) { cMasterServer::cStatus->m_sPort = atoi(value); } else if(lstrcmpi(strData,"Path") == 0) { memcpy(cMasterServer::cStatus->m_strHTTP,value,sizeof(value)); } else if(lstrcmpi(strData,"ID") == 0) { cMasterServer::cStatus->m_sID = atol(value); } else if(lstrcmpi(strData,"Serial") == 0) { memcpy(cMasterServer::cStatus->m_sSer,value,sizeof(value)); } else if(lstrcmpi(strData,"Key") == 0) { memcpy(cMasterServer::cStatus->m_sKey,value,sizeof(value)); } else if(lstrcmpi(strData,"Client") == 0) { memcpy(cMasterServer::cStatus->m_cVersion,value,sizeof(value)); } else if(lstrcmpi(strData,"MaxUsers") == 0) { cMasterServer::cStatus->m_dwMax = atol(value); } else { // UpdateConsole("Error in status.ini %s\r\n", strData); } } } fclose( pcStatConfig ); } else { cMasterServer::cStatus->m_fPrivate = true; } */ cMasterServer::cStatus->m_fPrivate = true; ////////////////// SetDlgItemText( hWnd, IDC_VERSIONTEXT, SERVERVERSION); SetDlgItemText( hWnd, IDC_VERSIONTEXT2, STRFILEVER); DWORD dwLength; DWORD dwType = REG_SZ; char szTemp[5]; char szDBType[2]; char szStatusTemp[20]; char szHostTemp[64]; HKEY hKey; RegCreateKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\UAS", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL ); //////////////////////// // Server Status Settings dwLength = sizeof( szStatusTemp ); if ( ( RegQueryValueEx( hKey, "Private", NULL, &dwType, (BYTE*)&szStatusTemp, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { cMasterServer::cStatus->m_fPrivate = atoi(szStatusTemp); CheckDlgButton( hWnd, IDC_SERVER, cMasterServer::cStatus->m_fPrivate ); } else { CheckDlgButton( hWnd, IDC_SERVER, 1 ); cMasterServer::cStatus->m_fPrivate = 1; } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Status Host", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { if(isalpha(szHostTemp[0])) { //Do DNS Lookup for IP host = gethostbyname(szHostTemp); memcpy(cMasterServer::cStatus->m_strHost,inet_ntoa(*(struct in_addr *) host->h_addr_list[0]),16); SetDlgItemText( hWnd, IDC_ED_HOST, szHostTemp ); } else { memcpy(cMasterServer::cStatus->m_strHost,szHostTemp,sizeof(szHostTemp)); SetDlgItemText( hWnd, IDC_ED_HOST, szHostTemp ); } } else { SetDlgItemText( hWnd, IDC_ED_HOST, "127.0.0.1" ); memcpy(cMasterServer::cStatus->m_strHost,"127.0.0.1",10); } dwLength = sizeof( szTemp ); if ( ( RegQueryValueEx( hKey, "HTTP Port", NULL, &dwType, (BYTE*)&szTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_PORT, szTemp ); cMasterServer::cStatus->m_sPort = atoi(szTemp); } else { SetDlgItemText( hWnd, IDC_ED_PORT, "80" ); cMasterServer::cStatus->m_sPort = 80; } dwLength = sizeof( szTemp ); if ( ( RegQueryValueEx( hKey, "Server ID", NULL, &dwType, (BYTE*)&szTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_ID, szTemp ); cMasterServer::cStatus->m_sID = atol(szTemp); } else { SetDlgItemText( hWnd, IDC_ED_ID, "0" ); cMasterServer::cStatus->m_sID = 0; } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Server Serial", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_SERIAL, szHostTemp ); memcpy(cMasterServer::cStatus->m_sSer,szHostTemp,sizeof(szHostTemp)); } else { SetDlgItemText( hWnd, IDC_ED_SERIAL, "0" ); memcpy(cMasterServer::cStatus->m_sSer,"0",2); } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Server Key", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_KEY, szHostTemp ); memcpy(cMasterServer::cStatus->m_sKey,szHostTemp,sizeof(szHostTemp)); } else { SetDlgItemText( hWnd, IDC_ED_KEY, "000000" ); memcpy(cMasterServer::cStatus->m_sKey,"000000",7); } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Client Support", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_CLIENT, szHostTemp ); memcpy(cMasterServer::cStatus->m_cVersion,szHostTemp,sizeof(szHostTemp)); } else { SetDlgItemText( hWnd, IDC_ED_CLIENT, "53" ); memcpy(cMasterServer::cStatus->m_cVersion,"53",3); } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "HTTP Path", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ED_URL, szHostTemp ); memcpy(cMasterServer::cStatus->m_strHTTP,szHostTemp,sizeof(szHostTemp)); } else { SetDlgItemText( hWnd, IDC_ED_URL, "/" ); memcpy(cMasterServer::cStatus->m_strHTTP,"/",2); } //////////////////////// // Server Settings // Server Name dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Server Name", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_STAT_NAME, szHostTemp ); SetDlgItemText( hWnd, IDC_ED_SNAME, szHostTemp ); memcpy(cMasterServer::m_szServerName,szHostTemp,sizeof(szHostTemp)); } else { SetDlgItemText( hWnd, IDC_ED_SNAME, "World Name" ); SetDlgItemText( hWnd, IDC_STAT_NAME, "World Name" ); sprintf(cMasterServer::m_szServerName,"World Name" ); } dwLength = sizeof( szHostTemp ); if ( ( RegQueryValueEx( hKey, "Max Clients", NULL, &dwType, (BYTE*)&szHostTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_MAX_USERS, szHostTemp ); cMasterServer::cStatus->m_dwMax = atol(szHostTemp); } else { SetDlgItemText( hWnd, IDC_MAX_USERS, "0" ); cMasterServer::cStatus->m_dwMax = 0x0L; } //Character Server Port dwLength = sizeof( szTemp ); if ( ( RegQueryValueEx( hKey, "CharPort", NULL, &dwType, (BYTE*)&szTemp, &dwLength) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_CHARPORT, szTemp ); else SetDlgItemText( hWnd, IDC_CHARPORT, "9002" ); // World Server Port dwLength = sizeof( szTemp ); if ( ( RegQueryValueEx( hKey, "WorldPort", NULL, &dwType, (BYTE*)&szTemp, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_WORLDPORT, szTemp ); else SetDlgItemText( hWnd, IDC_WORLDPORT, "9004" ); ///////////// // Database Settings dwLength = sizeof( szDBType ); if ( ( RegQueryValueEx( hKey, "DBType", NULL, &dwType, (BYTE*)&szDBType, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { // Set Radio button depending on Value SetDlgItemText( hWnd, IDC_DBTYPE, szDBType ); g_DBType = szDBType[0] - 0x30; switch(g_DBType) { case 1: { CheckDlgButton( hWnd, IDC_ACCESS_DB, 1 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 0 ); // Disable dialog boxes EnableWindow( hWndDBIP, FALSE ); EnableWindow( hWndDBNAME, FALSE ); EnableWindow( hWndDBUSER, FALSE ); EnableWindow( hWndDBPASSWORD, FALSE ); break; } case 2: { CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 1 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 0 ); // Enable dialog boxes EnableWindow( hWndDBIP, TRUE ); EnableWindow( hWndDBNAME, TRUE ); EnableWindow( hWndDBUSER, TRUE ); EnableWindow( hWndDBPASSWORD, TRUE ); break; } case 3: { CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 1 ); // Enable dialog boxes EnableWindow( hWndDBIP, TRUE ); EnableWindow( hWndDBNAME, TRUE ); EnableWindow( hWndDBUSER, TRUE ); EnableWindow( hWndDBPASSWORD, TRUE ); break; } default: { CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 1 ); // Enable dialog boxes EnableWindow( hWndDBIP, TRUE ); EnableWindow( hWndDBNAME, TRUE ); EnableWindow( hWndDBUSER, TRUE ); EnableWindow( hWndDBPASSWORD, TRUE ); break; } } } else { // DBType = Default -- MySQL db CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 1 ); } dwLength = sizeof( g_szDBIP ); if ( ( RegQueryValueEx( hKey, "DBIP", NULL, &dwType, (BYTE*)&g_szDBIP, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_DBIP, g_szDBIP ); else SetDlgItemText( hWnd, IDC_DBIP, "0.0.0.0" ); dwLength = sizeof( g_szDBNAME ); if ( ( RegQueryValueEx( hKey, "DBNAME", NULL, &dwType, (BYTE*)&g_szDBNAME, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_DBNAME, g_szDBNAME ); else SetDlgItemText( hWnd, IDC_DBNAME, "uas2" ); dwLength = sizeof( g_szDBUSER ); if ( ( RegQueryValueEx( hKey, "DBUSER", NULL, &dwType, (BYTE*)&g_szDBUSER, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_DBUSER, g_szDBUSER ); else SetDlgItemText( hWnd, IDC_DBUSER, "uas2" ); dwLength = sizeof( g_szDBPASSWORD ); if ( ( RegQueryValueEx( hKey, "DBPASSWORD", NULL, &dwType, (BYTE*)&g_szDBPASSWORD, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_DBPASSWORD, g_szDBPASSWORD ); else SetDlgItemText( hWnd, IDC_DBPASSWORD, "" ); ////////////////////////////////////////////////////////////////// // Local IP dwLength = sizeof( g_szLocalIP ); if ( ( RegQueryValueEx( hKey, "LocalIP", NULL, &dwType, (BYTE*)&g_szLocalIP, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) SetDlgItemText( hWnd, IDC_LOCALIP, g_szLocalIP ); else { char szLocalHostName[80]; DWORD dwSize = sizeof( szLocalHostName ); if ( GetLocalAddress( szLocalHostName, &dwSize ) == 0 ) SetDlgItemText( hWnd, IDC_LOCALIP, szLocalHostName ); else SetDlgItemText( hWnd, IDC_LOCALIP, "127.0.0.1" ); } // Access Database char szDirBuff[MAX_PATH+1]; dwLength = sizeof( cWorldManager::g_szAccessFile ); if ( ( RegQueryValueEx( hKey, "ACCESSMDB", NULL, &dwType, (BYTE*)&cWorldManager::g_szAccessFile, &dwLength ) == ERROR_SUCCESS ) && ( dwLength > 0 ) ) { SetDlgItemText( hWnd, IDC_ACCESS_FILE, cWorldManager::g_szAccessFile ); } else { int index = GetCurrentDirectory(MAX_PATH, szDirBuff); sprintf(cWorldManager::g_szAccessFile,"%s\\UAS2.mdb", szDirBuff ); SetDlgItemText( hWnd, IDC_ACCESS_FILE,cWorldManager::g_szAccessFile ); } RegCloseKey( hKey ); hWndStart = GetDlgItem( hWnd, IDB_START ); hWndClearObjs = GetDlgItem( hWnd, IDB_CLEAROBJECTS ); hWndDiscAll = GetDlgItem( hWnd, IDB_DISC_ALL ); hWndExit = GetDlgItem( hWnd, IDB_EXIT ); /////// Server Status Data /////////////////////////////////////////////// char szPort[5]; char szTempIP[16]; SOCKADDR_IN saServer; GetDlgItemText( hWnd, IDC_LOCALIP, szTempIP, sizeof( szTempIP ) ); saServer.sin_addr.s_addr = inet_addr( szTempIP ); cMasterServer::cStatus->m_bServer[0] = saServer.sin_addr.S_un.S_un_b.s_b1; cMasterServer::cStatus->m_bServer[1] = saServer.sin_addr.S_un.S_un_b.s_b2; cMasterServer::cStatus->m_bServer[2] = saServer.sin_addr.S_un.S_un_b.s_b3; cMasterServer::cStatus->m_bServer[3] = saServer.sin_addr.S_un.S_un_b.s_b4; GetDlgItemText( hWnd, IDC_CHARPORT, szPort, sizeof( szPort ) ); cMasterServer::cStatus->m_ServerPort = atoi( szPort ); /////////////////////////////////////////////////////////////////////////// MoveWindow( hWnd,0 , 0 , CONSOLE_WIDTH_NORM ,CONSOLE_HEIGHT_NORM , TRUE ); cMasterServer::cStatus->ServerLoad(); break; // case WM_INITDIALOG } case WM_GETMINMAXINFO: { LPMINMAXINFO( lParam )->ptMinTrackSize.x = 340; LPMINMAXINFO( lParam )->ptMinTrackSize.y = CONSOLE_HEIGHT_NORM;//150 break; // case WM_GETMINMAXINFO } case WM_SIZE: { MoveWindow( g_hWndConsole, 8, 95, LOWORD( lParam ) - 15, HIWORD( lParam ) - 100, TRUE ); if( wParam == SIZE_MINIMIZED ) { SystrayAdd( hWnd ); ShowWindow( hWnd, SW_HIDE ); fMinimized = TRUE; } else if( wParam == SIZE_RESTORED ) { SystrayDelete( hWnd ); fMinimized = FALSE; } break; // case WM_SIZE } case WM_NOTIFY: { break; // case WM_NOTIFY } case WM_COMMAND: { switch ( GET_WM_COMMAND_ID( wParam, lParam ) ) { case IDC_LOCALIP: { UpdateHelpTitle( "Local IP:\r\n"); UpdateHelp( "The IP address or DNS name of the hosting server. The default value is the IP address 127.0.0.1 (the loopback IP address).\r\n"); break; } case IDC_SERVER: { UpdateHelpTitle( "Private Server Checkbox:\r\n"); UpdateHelp( "When checked, server will not send updates to the status website. The option does not affect how the server operates.\r\n"); break; } case IDC_CHARPORT: { UpdateHelpTitle( "Character Server Port:\r\n"); UpdateHelp( "The number of the TCP or UDP port used to connect to the Character Server. The default value is 9002.\r\n"); break; } case IDC_MAX_USERS: { UpdateHelpTitle( "Maximum Clients:\r\n"); UpdateHelp( "The maximum number of clients the server allows. Not implemented.\r\n"); break; } case IDC_WORLDPORT: { UpdateHelpTitle( "World Server Port:\r\n"); UpdateHelp( "The number of the TCP or UDP port used to connect to the World Server. The default value is 9004.\r\n"); break; } case IDC_ED_SNAME: { UpdateHelpTitle( "World Name:\r\n"); UpdateHelp( "The name used to identify the world hosted by this server. Appears in the MOTD during login process.\r\n"); break; } case IDC_ACCESS_FILE: { UpdateHelpTitle( "Microsoft Access File:\r\n"); UpdateHelp( "The full path to the UAS2 Microsoft Access (.mdb) database file. The default path is the working directory.\r\n"); break; } case IDC_DBIP: { UpdateHelpTitle( "Database IP:\r\n"); UpdateHelp( "The IP address of the database server. The value must be an IP address and not a DNS name.\r\n"); break; } case IDC_DBNAME: { UpdateHelpTitle( "Database Name:\r\n"); UpdateHelp( "The name of the UAS2 database.\r\n"); break; } case IDC_DBUSER: { UpdateHelpTitle( "Database User:\r\n"); UpdateHelp( "A username with permission to access the database.\r\n"); break; } case IDC_DBPASSWORD: { UpdateHelpTitle( "Database Password:\r\n"); UpdateHelp( "The password for the corresponding username.\r\n"); break; } case IDC_ED_HOST: { UpdateHelpTitle( "State Website Host:\r\n"); UpdateHelp( "The IP address or DNS name of the website hosting the server status pages.\r\n"); break; } case IDC_ED_URL: { UpdateHelpTitle( "URL Path:\r\n"); UpdateHelp( "The URL path to the server status webpage. Must start with '/' and end with '/'.\r\n"); break; } case IDC_ED_PORT: { UpdateHelpTitle( "Access Port:\r\n"); UpdateHelp( "The number of the TCP or UDP port used to access the server status website. The default port number is 80 (HTTP).\r\n"); break; } case IDC_ED_ID: { UpdateHelpTitle( "Server ID:\r\n"); UpdateHelp( "The server ID for the server status listing. Supplied by the host website during registration.\r\n"); break; } case IDC_ED_KEY: { UpdateHelpTitle( "Key ID:\r\n"); UpdateHelp( "The key ID for the server status listing. Supplied by the host website during registration.\r\n"); break; } case IDC_ED_CLIENT: { UpdateHelpTitle( "Client Version:\r\n"); UpdateHelp( "Specifies which client(s) are supported with this server. Supplied by the host website during registration.\r\n"); break; } case IDC_ED_SERIAL: { UpdateHelpTitle( "Serial Code:\r\n"); UpdateHelp( "The serial code for your server to use when connecting to the server status host website. Supplied by the host website during registration.\r\n"); break; } case IDC_WBBOX: { UpdateHelpTitle( "World Broadcast:\r\n"); UpdateHelp( "A message that may be sent to all users presently connected to the world.\r\n"); break; } case IDB_EXIT: { UpdateConsole( "\r\n Exiting server. Please wait ...\r\n" ); cMasterServer::cStatus->ServerOffline(); PostMessage( hWnd, WM_CLOSE, 0, 0 ); EnableWindow( hWndExit, FALSE ); break; // case IDB_EXIT } case IDB_CLEAROBJECTS: if ( g_fStarted ) { cMasterServer::ClearAllObjects( ); UpdateConsole( " All spawned objects cleared!\r\n" ); break; } break; case IDB_DISC_ALL: { if( g_fStarted ) { cMasterServer::DisconnectAllClients( ); UpdateConsole( " All clients disconnected!\r\n" ); break; } break; } //Karki case IDC_WB: if ( g_fStarted ) { UpdateConsole( " World broadcast sent!\r\n" ); char szWBTemp[255]; GetDlgItemText( hWnd, IDC_WBBOX, szWBTemp, sizeof( szWBTemp ) ); cMasterServer::ServerMessage( ColorGreen, NULL, "%s", szWBTemp ); } break; case IDB_START: { if ( g_fStarted ) { EnableWindow( hWndStart, FALSE ); EnableWindow( hWndClearObjs, FALSE ); EnableWindow( hWndDiscAll, FALSE ); g_fStarted = !cMasterServer::Unload( ); if( ( fExit ) && ( !g_fStarted ) ) { SystrayDelete( hWnd ); DestroyWindow( hWnd ); PostQuitMessage( 0 ); } SetWindowText( hWndStart, "&Start Server" ); EnableWindow( hWndStart, TRUE ); } else { g_fStarted = TRUE; char szTemp[5]; GetDlgItemText( hWnd, IDC_LOCALIP, g_szLocalIP, sizeof( g_szLocalIP ) ); GetDlgItemText( hWnd, IDC_DBTYPE, szTemp, sizeof( szTemp ) ); g_DBType = szTemp[0] - 0x30; GetDlgItemText( hWnd, IDC_DBIP, g_szDBIP, sizeof( g_szDBIP ) ); GetDlgItemText( hWnd, IDC_DBNAME, g_szDBNAME, sizeof( g_szDBNAME ) ); GetDlgItemText( hWnd, IDC_DBUSER, g_szDBUSER, sizeof( g_szDBUSER ) ); GetDlgItemText( hWnd, IDC_DBPASSWORD, g_szDBPASSWORD, sizeof( g_szDBPASSWORD ) ); GetDlgItemText( hWnd, IDC_ACCESS_FILE, cWorldManager::g_szAccessFile, sizeof( cWorldManager::g_szAccessFile ) ); SetDlgItemText( hWnd, IDB_START, "&Stop Server"); GetDlgItemText( hWnd, IDC_CHARPORT, szTemp, sizeof( szTemp ) ); g_nCharPort = atoi( szTemp ); GetDlgItemText( hWnd, IDC_WORLDPORT, szTemp, sizeof( szTemp ) ); g_nWorldPort = atoi( szTemp ); cDatabase::SetupDB(g_DBType,g_szDBIP,g_szDBNAME,g_szDBUSER,g_szDBPASSWORD); cMasterServer::Load( ); EnableWindow( hWndClearObjs, TRUE ); EnableWindow( hWndDiscAll, TRUE ); } break; // case IDB_START } case ID_SYSTRAY_ACE: { ShowWindow( hWnd, SW_RESTORE ); SetForegroundWindow( hWnd ); SendMessage( hWnd, WM_ACTIVATEAPP, ( WPARAM )TRUE, ( LPARAM )NULL ); break; } case ID_SYSTRAY_EXIT: { PostMessage( hWnd, WM_CLOSE, 0, 0 ); break; } case IDC_CONFIG: { if(g_fConfig == FALSE) { UpdateHelpTitle("Configuration Settings:\r\n"); UpdateHelp("Changes will not take effect until the server program is restarted.\r\n"); MoveWindow( hWnd,0 , 0 , CONSOLE_WIDTH_OPT ,CONSOLE_HEIGHT_OPT , TRUE ); ShowWindow( hWndDBIP, SW_SHOW ); ShowWindow( hWndDBNAME, SW_SHOW ); ShowWindow( hWndDBUSER, SW_SHOW ); ShowWindow( hWndDBPASSWORD, SW_SHOW ); ShowWindow( hWndACCESSFILE, SW_SHOW ); ShowWindow( hWndPrivate, SW_SHOW ); SetWindowText( hWndCONFIG, "Status" ); for(int i = 0; i< 30;i++) { ShowWindow( hWndSettings[i], SW_SHOW ); } ShowWindow( g_hWndConsole, SW_HIDE ); g_fConfig = TRUE; } else { MoveWindow( hWnd,0 , 0 , CONSOLE_WIDTH_NORM ,CONSOLE_HEIGHT_NORM , TRUE ); ShowWindow( hWndDBIP, SW_HIDE ); ShowWindow( hWndDBNAME, SW_HIDE ); ShowWindow( hWndDBUSER, SW_HIDE ); ShowWindow( hWndDBPASSWORD, SW_HIDE ); ShowWindow( hWndACCESSFILE, SW_HIDE ); ShowWindow( hWndPrivate, SW_HIDE ); SetWindowText( hWndCONFIG, "Settings" ); for(int i = 0; i< 30;i++) { ShowWindow( hWndSettings[i], SW_HIDE ); } ShowWindow( g_hWndConsole, SW_SHOW ); g_fConfig = FALSE; } break; } case IDC_ACCESS_DB: { // Disable Dialog boxes EnableWindow( hWndDBIP, FALSE ); EnableWindow( hWndDBNAME, FALSE ); EnableWindow( hWndDBUSER, FALSE ); EnableWindow( hWndDBPASSWORD, FALSE ); EnableWindow( hWndACCESSFILE, TRUE ); CheckDlgButton( hWnd, IDC_ACCESS_DB, 1 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 0 ); SetDlgItemText( hWnd, IDC_DBTYPE, "1" ); UpdateHelpTitle( "Microsoft Access:\r\n"); UpdateHelp( "A relational database management system supported by the server. Requires the use of a Microsoft Access (.mdb) database file.\r\n"); break; } case IDC_MSSQL_DB: { // Enable Dialog boxes EnableWindow( hWndDBIP, TRUE ); EnableWindow( hWndDBNAME, TRUE ); EnableWindow( hWndDBUSER, TRUE ); EnableWindow( hWndDBPASSWORD, TRUE ); EnableWindow( hWndACCESSFILE, FALSE ); CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 1 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 0 ); SetDlgItemText( hWnd, IDC_DBTYPE, "2" ); UpdateHelpTitle( "MS SQL:\r\n"); UpdateHelp( "A relational database management system supported by the server. Requires access to an MS SQL database.\r\n"); break; } case IDC_MYSQL_DB: { // Enable Dialog boxes EnableWindow( hWndDBIP, TRUE ); EnableWindow( hWndDBNAME, TRUE ); EnableWindow( hWndDBUSER, TRUE ); EnableWindow( hWndDBPASSWORD, TRUE ); EnableWindow( hWndACCESSFILE, FALSE ); CheckDlgButton( hWnd, IDC_ACCESS_DB, 0 ); CheckDlgButton( hWnd, IDC_MSSQL_DB, 0 ); CheckDlgButton( hWnd, IDC_MYSQL_DB, 1 ); SetDlgItemText( hWnd, IDC_DBTYPE, "3" ); UpdateHelpTitle( "MySQL:\r\n"); UpdateHelp( "A relational database management system supported by the server. Requires access to a MySQL database.\r\n"); break; } case IDC_BTN_UPDATE: { char szTemp[5]; char szDBType[2]; char szDBTemp[20]; HKEY hKey; RegCreateKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\UAS", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL); GetDlgItemText( hWnd, IDC_LOCALIP, g_szLocalIP, sizeof( g_szLocalIP ) ); RegSetValueEx( hKey, "LocalIP", NULL, REG_SZ, (BYTE*)g_szLocalIP, lstrlen( g_szLocalIP ) ); GetDlgItemText( hWnd, IDC_CHARPORT, szTemp, sizeof( szTemp ) ); RegSetValueEx( hKey, "CharPort", NULL, REG_SZ, (BYTE*)szTemp, lstrlen( szTemp ) ); GetDlgItemText( hWnd, IDC_WORLDPORT, szTemp, sizeof( szTemp ) ); RegSetValueEx( hKey, "WorldPort", NULL, REG_SZ, (BYTE*)szTemp, lstrlen( szTemp ) ); // Database Settings ////////////////////////////////////////////////////////////// GetDlgItemText( hWnd, IDC_DBTYPE, szDBType, sizeof( szDBType ) ); RegSetValueEx( hKey, "DBTYPE", NULL, REG_SZ, (BYTE*)szDBType, lstrlen( szDBType ) ); GetDlgItemText( hWnd, IDC_DBIP, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBIP", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBNAME, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBNAME", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBUSER, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBUSER", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBPASSWORD, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBPASSWORD", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); char szAccessTemp[MAX_PATH+20]; GetDlgItemText( hWnd, IDC_ACCESS_FILE, szAccessTemp, sizeof( szAccessTemp ) ); RegSetValueEx( hKey, "ACCESSMDB", NULL, REG_SZ, (BYTE*)szAccessTemp, lstrlen( szAccessTemp ) ); /////////////////////////////////////////////////////////////////////////////////// // Status Server Settings char szHostTemp[64]; int nState; nState = IsDlgButtonChecked( hWnd, IDC_SERVER); sprintf(szDBTemp,"%d",nState); RegSetValueEx( hKey, "Private", NULL, REG_SZ, (BYTE*)szDBTemp, sizeof(szDBTemp) ); GetDlgItemText( hWnd, IDC_ED_HOST, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Status Host", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_PORT, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "HTTP Port", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_ED_ID, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "Server ID", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_ED_SNAME, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Name", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); memcpy(cMasterServer::m_szServerName,szHostTemp,sizeof(szHostTemp)); GetDlgItemText( hWnd, IDC_ED_SERIAL, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Serial", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_KEY, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Key", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_URL, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "HTTP Path", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_CLIENT, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Client Support", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_MAX_USERS, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Max Clients", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); ///////////////////////////////////////////////////////////////////////////////////// RegCloseKey( hKey ); break; } default: break; // case default } break; // case WM_COMMAND } case MYWM_NOTIFYICON: { switch (lParam) { case WM_LBUTTONDOWN: { ShowWindow( hWnd, SW_RESTORE ); SetForegroundWindow( hWnd ); SendMessage( hWnd, WM_ACTIVATEAPP, ( WPARAM )TRUE, ( LPARAM )NULL ); break; } case WM_RBUTTONUP: { HMENU hTrayMenu; HMENU hMenu; POINT point; SetForegroundWindow( hWnd ); hTrayMenu = LoadMenu( g_hInstance, MAKEINTRESOURCE( ID_SYSTRAY ) ); hMenu = GetSubMenu( hTrayMenu, 0 ); GetCursorPos( &point ); TrackPopupMenu( hMenu, TPM_RIGHTBUTTON, point.x, point.y, 0, hWnd, NULL ); DestroyMenu( hMenu ); DestroyMenu( hTrayMenu ); PostMessage( hWnd, WM_NULL, 0, 0 ); break; } } break; } case WM_CLOSE: { char szTemp[5]; HKEY hKey; RegCreateKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\UAS", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL); GetDlgItemText( hWnd, IDC_LOCALIP, g_szLocalIP, sizeof( g_szLocalIP ) ); RegSetValueEx( hKey, "LocalIP", NULL, REG_SZ, (BYTE*)g_szLocalIP, lstrlen( g_szLocalIP ) ); GetDlgItemText( hWnd, IDC_CHARPORT, szTemp, sizeof( szTemp ) ); RegSetValueEx( hKey, "CharPort", NULL, REG_SZ, (BYTE*)szTemp, lstrlen( szTemp ) ); GetDlgItemText( hWnd, IDC_WORLDPORT, szTemp, sizeof( szTemp ) ); RegSetValueEx( hKey, "WorldPort", NULL, REG_SZ, (BYTE*)szTemp, lstrlen( szTemp ) ); // Database Settings ////////////////////////////////////////////////////////////// char szDBType[2]; char szDBTemp[20]; GetDlgItemText( hWnd, IDC_DBTYPE, szDBType, sizeof( szDBType ) ); RegSetValueEx( hKey, "DBTYPE", NULL, REG_SZ, (BYTE*)szDBType, lstrlen( szDBType ) ); GetDlgItemText( hWnd, IDC_DBIP, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBIP", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBNAME, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBNAME", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBUSER, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBUSER", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_DBPASSWORD, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "DBPASSWORD", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); char szAccessTemp[MAX_PATH+20]; GetDlgItemText( hWnd, IDC_ACCESS_FILE, szAccessTemp, sizeof( szAccessTemp ) ); RegSetValueEx( hKey, "ACCESSMDB", NULL, REG_SZ, (BYTE*)szAccessTemp, lstrlen( szAccessTemp ) ); /////////////////////////////////////////////////////////////////////////////////// // Status Server Settings char szHostTemp[64]; int nState; nState = IsDlgButtonChecked( hWnd, IDC_SERVER); sprintf(szDBTemp,"%d",nState); RegSetValueEx( hKey, "Private", NULL, REG_SZ, (BYTE*)szDBTemp, sizeof(szDBTemp) ); GetDlgItemText( hWnd, IDC_ED_HOST, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Status Host", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_PORT, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "HTTP Port", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_ED_ID, szDBTemp, sizeof( szDBTemp ) ); RegSetValueEx( hKey, "Server ID", NULL, REG_SZ, (BYTE*)szDBTemp, lstrlen( szDBTemp ) ); GetDlgItemText( hWnd, IDC_ED_SNAME, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Name", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_SERIAL, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Serial", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_KEY, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Server Key", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_URL, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "HTTP Path", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_ED_CLIENT, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Client Support", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); GetDlgItemText( hWnd, IDC_MAX_USERS, szHostTemp, sizeof( szHostTemp ) ); RegSetValueEx( hKey, "Max Clients", NULL, REG_SZ, (BYTE*)szHostTemp, lstrlen( szHostTemp ) ); ///////////////////////////////////////////////////////////////////////////////////// RegCloseKey( hKey ); if ( g_fStarted ) { fExit = TRUE; SendMessage( hWnd, WM_COMMAND, IDB_START, TRUE ); } else { WSACleanup(); SystrayDelete( hWnd ); DestroyWindow( hWnd ); PostQuitMessage( 0 ); } break; // case WM_CLOSE } default: if( ( msg == s_uTaskbarRestart ) && ( fMinimized ) ) { SystrayDelete( hWnd ); SystrayAdd( hWnd ); break; } } return FALSE; }