From: <ha...@us...> - 2003-05-15 06:13:11
|
Update of /cvsroot/decaldev/source/DenAgent In directory sc8-pr-cvs1:/tmp/cvs-serv18202 Modified Files: TrayWnd.cpp Log Message: Shoves LobbyHook into ALL lobbies you open, not just the first now. Index: TrayWnd.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DenAgent/TrayWnd.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TrayWnd.cpp 13 May 2003 07:16:12 -0000 1.5 --- TrayWnd.cpp 15 May 2003 06:13:05 -0000 1.6 *************** *** 22,25 **** --- 22,30 ---- const UINT s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated")); + + // This is for our windows enumeration process + bool g_bFirstEnum; + BOOL CALLBACK EnumerationCallbackProc( HWND, LPARAM ); + ///////////////////////////////////////////////////////////////////////////// // CTrayWnd *************** *** 104,108 **** else { ! m_uiTimer = SetTimer (1, 250, NULL); } --- 109,113 ---- else { ! m_uiTimer = SetTimer (1, 1000, NULL); } *************** *** 162,243 **** void CTrayWnd::OnTimer (UINT_PTR nIDEvent) { ! static HWND s_hLastInject = NULL; ! HWND hLobby = ::FindWindow (_T("ZoneLobbyWindow"), NULL); ! if (hLobby != NULL && hLobby != s_hLastInject) { ! s_hLastInject = hLobby; ! DWORD dwProcessId = 0; ! ::GetWindowThreadProcessId (hLobby, &dwProcessId); ! if (dwProcessId != 0) { CRegKey key; ! HRESULT hr = key.Open (HKEY_LOCAL_MACHINE, _T("Software\\Decal\\Agent"), KEY_READ); ! TCHAR szDllPath [MAX_PATH]; ! ::ZeroMemory (szDllPath, sizeof (szDllPath)); ! if (hr == ERROR_SUCCESS) { DWORD dwChars = MAX_PATH - 1; ! hr = key.QueryStringValue (_T("AgentPath"), szDllPath, &dwChars); ! ! if (hr == ERROR_SUCCESS) ! { ! lstrcat (szDllPath, _T("\\LobbyHook.dll")); ! } else { ! DWORD dwError = ::GetLastError (); char szBuffer[256]; ! ::sprintf (szBuffer, "Couldn't query AgentPath value: 0x%08lx", dwError); ! ::MessageBox (NULL, szBuffer, _T("DenAgent"), MB_OK); } } else { ! DWORD dwError = ::GetLastError (); char szBuffer[256]; ! ::sprintf (szBuffer, "Couldn't open HKLM\\Software\\Decal\\Agent key: 0x%08lx", dwError); ! ::MessageBox (NULL, szBuffer, _T("DenAgent"), MB_OK); } ! if (szDllPath[0]) { ! HMODULE hLib = (HMODULE) ForceLibraryNow (dwProcessId, szDllPath); ! if (hLib == NULL) { ! DWORD dwError = ::GetLastError (); char szBuffer[256]; ! ::sprintf (szBuffer, "ForceLibraryNow failed: 0x%08lx", dwError); ! ::MessageBox (NULL, szBuffer, _T("DenAgent"), MB_OK); } } else { ! DWORD dwError = ::GetLastError (); char szBuffer[256]; ! ::sprintf (szBuffer, "DLL path was blank: 0x%08lx", dwError); ! ::MessageBox (NULL, szBuffer, _T("DenAgent"), MB_OK); } } else { ! DWORD dwError = ::GetLastError (); char szBuffer[256]; ! ::sprintf (szBuffer, "Couldn't get process id: 0x%08lx", dwError); ! ::MessageBox (NULL, szBuffer, _T("DenAgent"), MB_OK); } } } --- 167,268 ---- void CTrayWnd::OnTimer (UINT_PTR nIDEvent) { ! g_bFirstEnum = true; ! ::EnumWindows( EnumerationCallbackProc, (LPARAM) _T("ZoneLobbyWindow") ); ! } ! BOOL CALLBACK EnumerationCallbackProc( HWND hwnd, LPARAM lParam ) ! { ! static HWND shFirst = NULL; ! if( g_bFirstEnum ) // first call { ! shFirst = hwnd; ! g_bFirstEnum = false; ! } ! // if this isn't the first call and the passed hwnd is the first HWND we got, exit enumeration ! else ! if( shFirst == hwnd ) ! return FALSE; ! TCHAR szClassName[64]; ! memset( szClassName, 0, sizeof( szClassName ) / sizeof( szClassName[0] ) ); ! GetClassName( hwnd, szClassName, 64 ); ! if( _tcsicmp( _T( "ZoneLobbyWindow" ), szClassName ) != 0 ) ! return TRUE; ! ! if( hwnd != NULL ) ! { ! DWORD dwProcessId = 0; ! GetWindowThreadProcessId( hwnd, &dwProcessId ); ! ! if( dwProcessId != 0 ) { CRegKey key; ! TCHAR szDllPath[ MAX_PATH ]; ! memset( szDllPath, 0, sizeof( szDllPath ) / sizeof( szDllPath[0] ) ); ! if( key.Open( HKEY_LOCAL_MACHINE, _T( "Software\\Decal\\Agent" ), KEY_READ ) == ERROR_SUCCESS ) { DWORD dwChars = MAX_PATH - 1; ! if( key.QueryStringValue( _T( "AgentPath" ), szDllPath, &dwChars ) == ERROR_SUCCESS ) ! lstrcat( szDllPath, _T( "\\LobbyHook.dll" ) ); else { ! DWORD dwError = GetLastError(); char szBuffer[256]; ! _snprintf( szBuffer, sizeof( szBuffer ), "Couldn't query AgentPath value: 0x%08lx", dwError ); ! MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } + else { ! DWORD dwError = GetLastError(); 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 ); } ! if( szDllPath[0] ) { ! HMODULE hLib = (HMODULE) ForceLibraryNow( dwProcessId, szDllPath ); ! if( hLib == NULL ) { ! DWORD dwError = GetLastError(); char szBuffer[256]; ! _snprintf( szBuffer, sizeof( szBuffer ), "ForceLibraryNow failed: 0x%08lx", dwError ); ! MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } + else { ! DWORD dwError = GetLastError(); char szBuffer[256]; ! _snprintf( szBuffer, sizeof( szBuffer ), "DLL path was blank: 0x%08lx", dwError ); ! MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } } + else { ! DWORD dwError = GetLastError(); char szBuffer[256]; ! _snprintf( szBuffer, sizeof( szBuffer ), "Couldn't get process id: 0x%08lx", dwError ); ! MessageBox( NULL, szBuffer, _T( "DenAgent" ), MB_OK ); } + } + + return TRUE; } |