From: <no...@us...> - 2003-06-23 05:59:43
|
Log Message: ----------- No more millions of popups on injection failures. Modified Files: -------------- /cvsroot/decaldev/source/DenAgent: TrayWnd.cpp TrayWnd.h Revision Data ------------- Index: TrayWnd.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DenAgent/TrayWnd.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- TrayWnd.cpp 20 Jun 2003 06:41:19 -0000 1.14 +++ TrayWnd.cpp 23 Jun 2003 05:59:42 -0000 1.15 @@ -25,6 +25,7 @@ // This is for our windows enumeration process BOOL CALLBACK EnumerationCallbackProc( HWND, LPARAM ); +CTrayWnd* CTrayWnd::s_pWnd = NULL; ///////////////////////////////////////////////////////////////////////////// // CTrayWnd @@ -32,10 +33,12 @@ CTrayWnd::CTrayWnd() : m_pDialog( NULL ), m_uiTimer( NULL ) { + s_pWnd = this; } CTrayWnd::~CTrayWnd() { + s_pWnd = NULL; } BEGIN_MESSAGE_MAP(CTrayWnd, CWnd) @@ -129,14 +132,14 @@ else { g_bOldInject = false; - m_uiTimer = SetTimer (1, 1000, NULL); + m_uiTimer = SetTimer( 1, 1000, NULL ); } } else { g_bOldInject = false; - m_uiTimer = SetTimer (1, 1000, NULL); + m_uiTimer = SetTimer( 1, 1000, NULL ); } } } @@ -217,10 +220,18 @@ return TRUE; } - if( hwnd != NULL ) + if( CTrayWnd::s_pWnd != NULL ) + return CTrayWnd::s_pWnd->OnEnum( hwnd ); + else + return FALSE; +} + +BOOL CTrayWnd::OnEnum( HWND hWndLobby ) +{ + if( hWndLobby != NULL ) { DWORD dwProcessId = 0; - GetWindowThreadProcessId( hwnd, &dwProcessId ); + GetWindowThreadProcessId( hWndLobby, &dwProcessId ); if( dwProcessId != 0 ) { @@ -263,7 +274,7 @@ char szBuffer[256]; _snprintf( szBuffer, sizeof( szBuffer ), "Couldn't query AgentPath value: 0x%08lx", dwError ); - MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } @@ -273,7 +284,7 @@ char szBuffer[256]; _snprintf( szBuffer, sizeof( szBuffer ), "Couldn't open HKLM\\Software\\Decal\\Agent key: 0x%08lx", dwError ); - MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } if( szDllPath[0] ) @@ -284,24 +295,28 @@ DWORD dwError = GetLastError(); char szBuffer[256]; -// _snprintf( szBuffer, sizeof( szBuffer ), "ForceLibraryNow (ForceLibrary.dll) failed: 0x%08lx", dwError ); -// MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); - _snprintf( szBuffer, sizeof( szBuffer ), "ForceLibraryNow (LobbyHook.dll) has failed( 0x%08lx )\nDo you want to switch to old style injection?\nIf Decal is loading in AC properly answer no.", dwError ); - int iRet = MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_YESNO ); + + // Kill timer to avoid 1000 popups + KillTimer( m_uiTimer ); + m_uiTimer = 0; + + int iRet = ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_YESNO ); if( iRet == IDYES ) { RegKey key; key.Create( HKEY_LOCAL_MACHINE, _T( "SOFTWARE\\Decal" ) ); key.SetDWORDValue("OldInjection", 0x1L); - MessageBox( NULL, "You must restart DenAgent for this option to take effect!", "DenAgent", MB_OK ); - ::PostQuitMessage( 0 ); + g_bOldInject = true; + ::InjectEnable(); } else // no { - MessageBox( NULL, "Restart DenAgent to enable Decal again.", "DenAgent", MB_OK ); - ::PostQuitMessage( 0 ); + //g_bOldInject = false; + //m_uiTimer = SetTimer( 1, 1000, NULL ); + _snprintf( szBuffer, sizeof( szBuffer ), "Lobby Injection halted... restart DenAgent to try again." ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } @@ -315,24 +330,28 @@ DWORD dwError = GetLastError(); char szBuffer[256]; -// _snprintf( szBuffer, sizeof( szBuffer ), "ForceLibraryNow (LobbyHook.dll) failed: 0x%08lx", dwError ); -// MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); - _snprintf( szBuffer, sizeof( szBuffer ), "ForceLibraryNow (LobbyHook.dll) has failed( 0x%08lx )\nDo you want to switch to old style injection?\nIf Decal is loading in AC properly answer no.", dwError ); - int iRet = MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_YESNO ); + + // Kill timer + KillTimer( m_uiTimer ); + m_uiTimer = 0; + + int iRet = ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_YESNO ); if( iRet == IDYES ) { RegKey key; key.Create( HKEY_LOCAL_MACHINE, _T( "SOFTWARE\\Decal" ) ); key.SetDWORDValue("OldInjection", 0x1L); - MessageBox( NULL, "You must restart DenAgent for this option to take effect!", "DenAgent", MB_OK ); - ::PostQuitMessage( 0 ); + g_bOldInject = true; + ::InjectEnable(); } else // no { - MessageBox( NULL, "Restart DenAgent to enable Decal again.", "DenAgent", MB_OK ); - ::PostQuitMessage( 0 ); + //g_bOldInject = false; + //m_uiTimer = SetTimer( 1, 1000, NULL ); + _snprintf( szBuffer, sizeof( szBuffer ), "Lobby Injection halted... restart DenAgent to try again." ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } } @@ -343,7 +362,7 @@ char szBuffer[256]; _snprintf( szBuffer, sizeof( szBuffer ), "DLL path was blank: 0x%08lx", dwError ); - MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } @@ -353,7 +372,7 @@ char szBuffer[256]; _snprintf( szBuffer, sizeof( szBuffer ), "Couldn't get process id: 0x%08lx", dwError ); - MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); + ::MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } Index: TrayWnd.h =================================================================== RCS file: /cvsroot/decaldev/source/DenAgent/TrayWnd.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- TrayWnd.h 13 May 2003 07:16:12 -0000 1.4 +++ TrayWnd.h 23 Jun 2003 05:59:42 -0000 1.5 @@ -40,6 +40,9 @@ void UpdateXMLFiles(); + BOOL OnEnum( HWND hWndLobby ); + static CTrayWnd* s_pWnd; + // Generated message map functions protected: //{{AFX_MSG(CTrayWnd) |