NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Diskuze: Zápis do textového kurzoru ve Win

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Karel
Neregistrovaný
Avatar
Karel:15.9.2013 16:35

Zdravím,

prosím o radu, potřebuji pomocí programu c++ zapsat řetězec na pozici textového kurzoru (karetu) libovolného jiného programu.

neřešil někdo z vás tento příklad?

díky

 
Odpovědět
15.9.2013 16:35
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:16.9.2013 9:55

Ahoj,

myslíš jako zápis do nějakého textového pole, které patří jinému programu? Nebo něco podobného?

Nahoru Odpovědět
16.9.2013 9:55
2 + 2 = 5 for extremely large values of 2
Avatar
Panda38
Tvůrce
Avatar
Panda38:16.9.2013 10:41

Pošleš programu (resp. jeho oknu) PostMessage zprávy WM_KEYDOWN/WM_KE­YUP/WM_CHAR, simulující zápis textu klávesnicí. Nejdříve ale musíš vyhledat handle okna programu pomocí FindWindow - buď znáš název jeho třídy (lze zjistit pomoci Spy++) nebo titulek. Může být někdy nutné vyhledat ještě handle jeho okna editboxu kterému se budou zprávy posílat namísto hlavnímu oknu - enumerovat podokna pomoci FindWIndowEx nebo GetWindow. Handle okna lze vyhledat i ze souřadnice, např. z pozice kurzoru myši, pomocí WindowFromPoint.

 
Nahoru Odpovědět
16.9.2013 10:41
Avatar
Karel
Neregistrovaný
Avatar
Odpovídá na Martin Dráb
Karel:16.9.2013 10:58

Ano, přesně :-)

 
Nahoru Odpovědět
16.9.2013 10:58
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:16.9.2013 12:27

Co se týče zasílaných zpráv, nevím, zda se neliší ta posloupnost podle typu cílového "okna"; zda-li tato sekvence není jiná pro klasické textové pole či třeba RichEdit. Ale jinak má Panda38 pravdu. Pokud byste chtěl ta okna nějak zjišťovat systematičněji, tak ještě existují další funkce:
EnumWindows - vrací seznam top-level oken,
EnumChildWindows vrací seznam podoken daného top-level okna,
GetWindowsThre­adProcessId vrací PID procesu a TID vlákna, kterým dané okno patří.

Nahoru Odpovědět
16.9.2013 12:27
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.