| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- #include "stdafx.h"
 
- #include "externalwindowtracker.h"
 
- ExternalWindowTracker::ExternalWindowTracker(void)
 
- {
 
- 	m_activeWnd = NULL;
 
- 	m_focusWnd = NULL;
 
- 	m_iHaveFocus = false;
 
- }
 
- ExternalWindowTracker::~ExternalWindowTracker(void)
 
- {
 
- }
 
- bool ExternalWindowTracker::IsAppWnd( HWND hWnd )
 
- {
 
- 	DWORD dwMyPID = ::GetCurrentProcessId();
 
- 	DWORD dwTestPID;
 
- 	::GetWindowThreadProcessId( hWnd, &dwTestPID );
 
- 	return dwMyPID == dwTestPID;
 
- }
 
- bool ExternalWindowTracker::TrackActiveWnd()
 
- {
 
- 	BOOL fromHook = true;
 
- 	HWND newFocus = NULL;
 
- 	HWND newActive = ::GetForegroundWindow();
 
- 	
 
- 	GUITHREADINFO guiThreadInfo;
 
- 	guiThreadInfo.cbSize = sizeof(GUITHREADINFO);
 
- 	DWORD OtherThreadID = GetWindowThreadProcessId(newActive, NULL);
 
- 	if(GetGUIThreadInfo(OtherThreadID, &guiThreadInfo))
 
- 	{
 
- 		newFocus = guiThreadInfo.hwndFocus;
 
- 	}
 
- 	if(newFocus == 0 || !IsWindow(newFocus) || newActive == 0 || !IsWindow(newActive))
 
- 	{
 
- 		//Log(_T("TargetActiveWindow values invalid"));
 
- 		return false;
 
- 	}
 
- 	if(IsAppWnd(newFocus) || IsAppWnd(newActive))
 
- 	{
 
- 		if(m_iHaveFocus == false)
 
- 		{
 
- 			
 
- 		}
 
- 		m_iHaveFocus = true;
 
- 		return false;
 
- 	}
 
- 	m_focusWnd = newFocus;
 
- 	m_activeWnd = newActive;
 
- 	m_iHaveFocus = false;
 
- 	return true;
 
- }
 
- CString ExternalWindowTracker::WndName(HWND hWnd) 
 
- {
 
- 	TCHAR cWindowText[200];
 
- 	HWND hParent = hWnd;   
 
- 	::GetWindowText(hParent, cWindowText, 100);
 
- 	int nCount = 0;
 
- 	while(wcslen(cWindowText) <= 0)
 
- 	{
 
- 		hParent = ::GetParent(hParent);
 
- 		if(hParent == NULL)
 
- 			break;
 
- 		::GetWindowText(hParent, cWindowText, 100);
 
- 		nCount++;
 
- 		if(nCount > 100)
 
- 		{
 
- 			//Log(_T("GetTargetName reached maximum search depth of 100"));
 
- 			break;
 
- 		}
 
- 	}
 
- 	return cWindowText; 
 
- }
 
 
  |