Skocz do zawartości
giron

wyslanie wiadomosci do okna programu z ktorego byl start !

Rekomendowane odpowiedzi

czesc, mam taki problem, pisze programik do grafiki ktory ma szybko sie uruchamiac i rownie szybko po zrobieniu swojego zamykac sie. Jednak po zamknieciu programu i zwroceniu focusa ma wpisac w to okno do ktorego wroci jakis tekst. W kazdym razie program uruchamia sie w kazdym momencie, poprzez klawisz skrotu - windowsowa opcja, dla elementow z pulpitu.

Przyklad pisze sobie cos w notatniku, nagle uruchamiam program klawiszem skrotu, program robi swoje i po wyjsciu z niego, jak focus wroci do notatnika, a dokladnie jego okna Edit ma wypisac tekst.

Do tej pory udalo mi sie najpierw dobrac do Notatnika, pobierajac w programie okno -> GetWindow(GW_HWNDNEXT) i nastepnie jego child -> GetWindow(GW_CHILD). I dzialalo ok, tylko ze nie kazdy program ma taka strukture okien. Inny sposob ktory uzylem: sprawdzenie wszystkich dzieci tego programu, np. notatnika. I w ten sposob udalo sie wyslac tekst do Notatnika, Visuala, czy programu UltraEdit (program typu MDI, z dokumentami). Tekst wysylam funkcja PostMessage(). najpierw robilem za pomoca WM_CHAR, teraz jako WM_KEYDOWN i WM_KEYUP, bo to pierwsze nie wszedzie hulalo.

W kazdym razie nie podoba mi sie ten drugi sposob, chyba przekombinowany, i nie daje rady wszystkim programom, a pierwszy niewystarczajacy (dzialal tylko na Notatnik, z tych na ktorych testowalem).

Szukam funkcji API, MFC, lub lepszego sposobu - (pisze w VisualStudio 6), ktore pozwola mi "latwo i przyjemnie" uzyskac wskaznik, dostep do tego okna (Edita) w ktorym potem bede mogl wpisac tekst, czyli okno majace ostatni focus, ale nie jako program (Notatnik) tylko konkretne okno. Czyli najlepiej jakby istniala funkcja typu

 

pobranie okna z ktorego startowalem, np. notatnika

CWnd* wnd GetWindow(GW_HWNDNEXT); <- to stosuje

 

i cos jak:

CWnd* wnd_poszukawane = wnd->GetLastActiveWindow(); <- z tym ze takiej nie ma w MFC

 

prosze o pomoc i dzieki,

pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie za bardzo kumam o co Ci chodzi, czy ten napis wyświetlany w oknie głównym ma być jakiś konkretny - zwiazany z wynikiem dialoga czy po prostu ma sygnalizowac tylko zakończenie pracy dialoga, z przesyłaniem informacji miedzy okienkami mozesz posłuzyc sie jakąs zmienną statyczną, lub uzyc stałej GWL_USERDATA bodajze, albo jak sie chcesz bardzo bawic to mozesz to zrobic przez schowek :lol:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...