[C++] Wykrywanie okna

Czepek221

Użytkownik
Dołączył
Maj 18, 2010
Posty
26
Witam,

Ma ktoś jakiś pomysł na temat wykrywania nowo otwartego okna? (programu) W sensie:

Kod:
// pseudo kod
do
{
ReadString('opis');
}while(foundNewWindow("Gadu-Gadu"));

Podejrzewam, że można użyć funkcji "FindWindowEx(...)" - tylko jak zrobić, żeby automatycznie wykrywało nowe okno, a nie te co już było wcześniej otwarte?

p.s. mam nadzieje, że ktoś to zrozumie, ale piszę to na mega kacu...

Pozdrawiam, Czepek!
 

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Sprawdzanie okna 'wybranego' odpada?
Pobierasz okno, które jest zaznaczone i sprawdzasz czy nie było wcześniej.
 

Czepek221

Użytkownik
Dołączył
Maj 18, 2010
Posty
26
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632595(v=VS.85).aspx

Jest tam wszystko czego potrzebujesz. Sprawdź funkcję IsWindow.

Przecież ta funkcja IsWindow to jest to samo co "FindWindow() != NULL". Może jeszcze raz wytłumaczę.
Odpalam swój program, który działa w pętli sprawdzając, czy po jakimś czasie jest włączony kolejny program (np. Gadu-Gadu), jeżeli jest odczytuje z niego jakąś tam wartość, po czym zapisuję tą wartość w jakiejś tam zmiennej - i tak w kółko.

Pozdrawiam, Czepek!
 

Czepek221

Użytkownik
Dołączył
Maj 18, 2010
Posty
26
Kod:
struct windowHandler
{
	HWND gameHWND;
	DWORD gamePID;
	HANDLE gameHandle;
};

std::list<windowHandler> list;

int main(int argc, char *argv[])
{	
	while(true)
	{
		HWND hWnd = FindWindow("Jakieś tam Twoje Okno", NULL);
		if(hWnd)
		{
			windowHandler h;
			h.gameHWND = hWnd;
			GetWindowThreadProcessId(hWnd, &h.gamePID);
			h.gameHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, h.gamePID);
			list.push_back(h);
   		 }
    
		std::list<windowHandler>::iterator it;
		for(it = list.begin(); it != list.end(); it++)
		{
			if(it->gameHWND == hWnd)
			{
				printf("okno istnieje już\n");
			}
			else
			{
				printf("okno nie istnieje\n");
			}
		}
	}
}

Nie wiem, czy jest jakaś inna metoda, ale zostałem zmuszony do korzystania z tej wyżej wymienionej.

Pozdrawiam, Czepek!
 
Do góry Bottom