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