Strona 1 z 1

Umieszczanie obcego programu, oraz przechwytywanie komunikat

Nowy postNapisane: poniedziałek, 23 maja 2011, 09:22
przez mate006
Witam

Muszę napisać program który podczas uruchamiania systemu uruchomi konkretny program, a następnie umieści go w moim programie, dokładnie tak jak to jest w poradzie ► patrz serwis: Cyfrowy Baron -> API -> Umieszczanie okna obcego programu w programie własnym.

Zrobiłem tak jak jest to w poradzie, jednak jest problem takiego typu że nie zawsze umieści go, próbowałem z użyć timer'a do opóźnienia umieszczania jednak nadal jest błąd.

co może być powodem tego błędu?

To pierwsza sprawa druga sprawa jest takiego typu, że ten program co jakiś czas uruchamia okno z reklamami, i chodzi mi o taką rzecz, żeby przechwycić ten moment wyskoczenia okna, pobrać do niego uchwyt i go zamknąć. Wiem że to jest do zrobienia za pomocą ► patrz serwis: Cyfrowy Baron -> API -> Keyloger, czyli przechwytywanie wciśnięcia klawiszy we wszystkich programach. Tylko nie wiem czego użyć zamiast WM_KEYDOWN.

Jeśli ktoś ma jakiś pomysł co do mojego problemu, bardzo byłbym wdzięczny za pomoc

P.S.
Dodam że nie posiadam pliku pomocy w Kompilatorze. I nie wiem gdzie mógłbym go znaleźć

Re: Umieszczanie obcego programu, oraz przechwytywanie komunikat

Nowy postNapisane: poniedziałek, 23 maja 2011, 15:06
przez Cyfrowy Baron
mate006 napisał(a):Zrobiłem tak jak jest to w poradzie, jednak jest problem takiego typu że nie zawsze umieści go,


Czyli kod działa. W tym przypadku należy ustalić w jakich sytuacjach to nie działa, bo przecież nie dzieje się to z powodu widzi mi się komputera.



mate006 napisał(a):To pierwsza sprawa druga sprawa jest takiego typu, że ten program co jakiś czas uruchamia okno z reklamami, i chodzi mi o taką rzecz, żeby przechwycić ten moment wyskoczenia okna, pobrać do niego uchwyt i go zamknąć.


Przede wszystkim trzeba pobrać uchwyt do tego okna programu i wysłać komunikat WM_CLOSE. Momentu wyskoczenia okna nie możesz przechwycić żadnym komunikatem, gdyż program nie wysyła do systemu żadnego komunikatu. Program uruchamia okno z reklama i zwyczajnie nie informuje nikogo o tym, więc nie ma czego przechwytywać. Musisz po prostu użyć zegara TTimer i sprawdzać czy okno komunikatu już się pojawiło, coś w tym stylu:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 HWND hWnd = FindWindow(NULL, L"Nazwa okna");

 if(hWnd != NULL)
 {
  SendMessage(hWnd, WM_CLOSE, 0, 0);
 }
}

Re: Umieszczanie obcego programu, oraz przechwytywanie komunikat

Nowy postNapisane: wtorek, 24 maja 2011, 13:56
przez mate006
Myślałem o tym żeby użyć Timera do sprawdzania czy wyskoczyło okno, jednak to nie jest zbytnio możliwe gdyż tytuł jest różny i jest zależny od tego co jest przedmiotem reklamy, jedynie co jest stałe to nazwa klasy, i z pomocą przychodzi mi porada ► patrz serwis: Cyfrowy Baron -> API -> Pobieranie tytułu i uchwytu do okna lub obiektu w oknie wskazywanego przez kursor.
Jednak to strasznie obciąża procesor.

A co do umieszczania programu we własnym programie, to na razie będę obserwował w jakich okolicznościach nie chce się umieszczać, bo to tylko czasami.