123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- // maindlg.h : interface of the CMainDlg class
- //
- /////////////////////////////////////////////////////////////////////////////
- #if !defined(AFX_MAINDLG_H__4B488390_CE2F_4798_8415_47500D263534__INCLUDED_)
- #define AFX_MAINDLG_H__4B488390_CE2F_4798_8415_47500D263534__INCLUDED_
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- #include "..\ClientInject\ClientInject.h"
- #include <stdio.h>
- #include <io.h>
- #include <fcntl.h>
- #include <commdlg.h>
- HINSTANCE g_hInst;
- class CMainDlg : public CDialogImpl<CMainDlg>,
- public CMessageFilter
- {
- public:
- enum { IDD = IDD_MAINDLG };
- virtual BOOL PreTranslateMessage(MSG* pMsg)
- {
- return IsDialogMessage(pMsg);
- }
-
- BEGIN_MSG_MAP(CMainDlg)
- MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
- COMMAND_ID_HANDLER(IDOK, OnOK)
- COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
- COMMAND_HANDLER(IDC_BROWSE_CLIENT, BN_CLICKED, OnClickedBrowse_client)
- END_MSG_MAP()
-
- LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
- {
- // center the dialog on the screen
- CenterWindow();
-
- // set icons
- HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
- IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
- SetIcon(hIcon, TRUE);
- HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
- IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
- SetIcon(hIconSmall, FALSE);
-
- // register object for message filtering and idle updates
- CMessageLoop* pLoop = _Module.GetMessageLoop();
- ATLASSERT(pLoop != NULL);
- pLoop->AddMessageFilter(this);
-
- // Lookup saved values in the registry
- CRegKey rk;
- if ( rk.Create ( HKEY_CURRENT_USER, _T( "Software\\AcEmu\\Client" ) ) != ERROR_SUCCESS )
- {
- CloseDialog ( IDCANCEL );
- return FALSE;
- }
-
- TCHAR szServer[ 255 ];
- DWORD dwSize = 255;
-
- enum eFirstFocus { eNone, eServer, eLogin, ePassword, eClientPath };
- eFirstFocus ff = eNone;
-
- if ( rk.QueryValue ( szServer, _T( "Server" ), &dwSize ) == ERROR_SUCCESS )
- SetDlgItemText ( IDC_SERVER, szServer );
- else
- {
- SetDlgItemText ( IDC_SERVER, "Server:IP" );
- ff = eServer;
- }
- TCHAR szUserName[ 255 ];
- DWORD dwUNSize = 255;
-
- if ( rk.QueryValue ( szUserName, _T( "Account" ), &dwUNSize ) == ERROR_SUCCESS )
- SetDlgItemText ( IDC_ACCOUNT, szUserName );
- else if ( ff == eNone )
- ff = eLogin;
-
- TCHAR szPassword[ 255 ];
- DWORD dwPWDSize = 255;
-
- if ( rk.QueryValue ( szPassword, _T( "Password" ), &dwPWDSize ) == ERROR_SUCCESS )
- {
- SetDlgItemText ( IDC_PASSWORD, szPassword );
- CheckDlgButton ( IDC_SAVEPASSWORD, BST_CHECKED );
- }
- else if ( ff == eNone )
- ff = ePassword;
- TCHAR szClientPath[ 255 ];
- DWORD dwCPSize = 255;
-
- if ( rk.QueryValue ( szClientPath, _T( "ClientPath" ), &dwCPSize ) == ERROR_SUCCESS )
- SetDlgItemText ( IDC_CLIENT_PATH, szClientPath );
- else if ( ff == eNone )
- ff = eClientPath;
-
- switch ( ff )
- {
- case eNone:
- case eServer:
- ::SetFocus ( GetDlgItem ( IDC_SERVER ) );
- break;
-
- case eLogin:
- ::SetFocus ( GetDlgItem ( IDC_ACCOUNT ) );
- break;
-
- case ePassword:
- ::SetFocus ( GetDlgItem ( IDC_PASSWORD ) );
- break;
- case eClientPath:
- ::SetFocus ( GetDlgItem ( IDC_CLIENT_PATH ) );
- break;
- }
-
- return FALSE;
- }
-
- in_addr m_addr;
-
- bool verifyHostName ( LPCTSTR szHostName )
- {
- WSADATA wd;
- WSAStartup ( MAKEWORD(2, 0), &wd );
-
- DWORD dwAddr = inet_addr ( szHostName );
- if ( dwAddr != INADDR_NONE )
- {
- m_addr.S_un.S_addr = dwAddr;
-
- WSACleanup ();
- return true;
- }
-
- // Do a DNS Lookup
- hostent *host_lookup = gethostbyname ( szHostName );
-
- bool bRet = ( host_lookup != NULL );
- if ( bRet )
- m_addr.S_un.S_addr = *reinterpret_cast< DWORD * > ( host_lookup->h_addr_list[ 0 ] );
- else
- MessageBox ( _T( "Host not found." ), _T( "Login Client" ), MB_ICONERROR );
-
- WSACleanup ();
- return bRet;
- }
-
- LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
- {
- TCHAR szComputerName[ 255 ];
- GetDlgItemText ( IDC_SERVER, szComputerName, 255 );
-
- if ( szComputerName[ 0 ] == _T( '\0' ) )
- {
- MessageBox ( _T( "Server Name is required." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_SERVER ) );
- return 0;
- }
-
- TCHAR szUserName[ 255 ];
- GetDlgItemText ( IDC_ACCOUNT, szUserName, 255 );
-
- if ( szUserName[ 0 ] == _T( '\0' ) )
- {
- MessageBox ( _T( "Account Name is required." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_ACCOUNT ) );
- return 0;
- }
-
- TCHAR szPassword[ 255 ];
- GetDlgItemText ( IDC_PASSWORD, szPassword, 255 );
-
- if ( szPassword[ 0 ] == _T( '\0' ) )
- {
- MessageBox ( _T( "Password is required." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_PASSWORD ) );
- return 0;
- }
- TCHAR szClientPath[ 255 ];
- GetDlgItemText ( IDC_CLIENT_PATH, szClientPath, 255 );
-
- if ( szPassword[ 0 ] == _T( '\0' ) )
- {
- MessageBox ( _T( "Client Path is required." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_CLIENT_PATH ) );
- return 0;
- }
- DWORD sPort = 0;
- char *szPortArea = strchr(szComputerName,':');
- if (!szPortArea)
- {
- MessageBox ( _T( "Address format is Address:Port." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_PASSWORD ) );
- return 0;
- }
- sscanf(szPortArea+1,"%i",&sPort);
- if ((!sPort) || (sPort > 32767))
- {
- MessageBox ( _T( "Invalid Port." ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_PASSWORD ) );
- return 0;
- }
- /* char tpcheckad[255]; sprintf(tpcheckad, "%s", szClientPath);
- int tpcheck = _open(tpcheckad, _O_RDONLY);
- if (tpcheck == -1)
- {
- //File doesn't exist or other error
- char invpath[255]; sprintf(invpath, "Invalid Client Path: %s", szClientPath);
- MessageBox ( _T( invpath ), _T( "Login Client" ), MB_ICONERROR );
- ::SetFocus ( GetDlgItem ( IDC_CLIENT_PATH ) );
- return 0;
- }
- _close(tpcheck);
- */
- *szPortArea = 0;
-
- // Verify the computer name and convert to IP as neccessary
- {
- // CWaitCursor wc;
- if ( !verifyHostName ( szComputerName ) )
- {
- ::SetFocus ( GetDlgItem ( IDC_SERVER ) );
- return 0;
- }
- }
- *szPortArea = ':';
-
- // Save Settings
- CRegKey rk;
- if ( rk.Create ( HKEY_CURRENT_USER, _T( "Software\\ACEmu\\Client" ) ) == ERROR_SUCCESS )
- {
- rk.SetValue ( szComputerName, _T( "Server" ) );
- rk.SetValue ( szUserName, _T( "Account" ) );
-
- if ( IsDlgButtonChecked ( IDC_SAVEPASSWORD ) == BST_CHECKED )
- rk.SetValue ( szPassword, _T( "Password" ) );
- else
- rk.DeleteValue ( _T( "Password" ) );
- rk.SetValue (szClientPath, _T( "ClientPath" ) );
- }
- else
- MessageBox ( _T( "Could not save settings in registry" ), _T( "Login Client" ), MB_ICONWARNING );
-
- executeClient ( m_addr.S_un.S_addr, szUserName, szPassword, (short) sPort, szClientPath );
- // SetActiveWindow();
-
- CloseDialog(wID);
- return 0;
- }
-
- LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
- {
- CloseDialog(wID);
- return 0;
- }
-
- void CloseDialog(int nVal)
- {
- DestroyWindow();
- ::PostQuitMessage(nVal);
- }
- LRESULT OnClickedBrowse_client(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
- {
- //Add browse client shit...
- OPENFILENAME ofn;
- ZeroMemory(&ofn,sizeof(ofn));
- ofn.lStructSize = sizeof(ofn);
- ofn.hwndOwner = GetActiveWindow();
- ofn.hInstance = g_hInst;
- char Filters[] = "Asheron's Call Client Executables\0*.exe\0\0";
- ofn.lpstrFilter = (char *) &Filters[0];
- ofn.lpstrCustomFilter = NULL;
- //Add default Filename Here!
- ofn.nFilterIndex = 1;
- char FileName[255];
- sprintf(FileName,"c:\\program files\\microsoft games\\asheron's call\\*.exe");
- ofn.lpstrFile = FileName;
- ofn.nMaxFile = 100;
- ofn.lpstrFileTitle = NULL;
- ofn.nMaxFileTitle = NULL;
- // ofn.lpstrInitialDir = ROMDir;
- ofn.lpstrTitle = "Find Client Executable";
- ofn.Flags = OFN_FILEMUSTEXIST;
- ofn.lpstrDefExt = NULL;
- ofn.lCustData = NULL;
- ofn.lpfnHook = NULL;
- ofn.lpTemplateName = NULL;
-
- int tpb = GetOpenFileName(&ofn);
-
- SetDlgItemText ( IDC_CLIENT_PATH, ofn.lpstrFile );
- // MessageBox("Not Implemented Yet", "Login Client", MB_OK);
- return 0;
- }
- };
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif // !defined(AFX_MAINDLG_H__4B488390_CE2F_4798_8415_47500D263534__INCLUDED_)
|