Využití WINAPI pro odesílání zpráv do jiné aplikace – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Využití WINAPI pro odesílání zpráv do jiné aplikace – C / C++ – Fórum – Programujte.comVyužití WINAPI pro odesílání zpráv do jiné aplikace – C / C++ – Fórum – Programujte.com

 

Stumbik
~ Anonymní uživatel
2 příspěvky
19. 11. 2013   #1
-
0
-

Zdravím,

mám takový problém. Potřebuji odesílat textová data do jiné aplikace pomocí Edit boxu, který je v cílové aplikaci. V této aplikaci není další tlačítko na odeslání Edit boxu, zprávy se odesílají pomocí klávesy ENTER. Po updatu aplikace mi nefunguje odeslání textu (pomocí virtuální klávesy ENTER), text se tam vypíše, ale už se do aplikace neodešle. Nevíte čím by to mohlo být způsobené? Je možné aby aplikace odmítala přijmout virtuálně odeslané klávesy nebo existuje jiná metoda, jak text Edit boxu odeslat do aplikace?

Úryvek kódu:

window = FindWindow(0,"Název okna cílové aplikace"); //Získání handleru k oknu pomocí jeho titulku
edit = GetDlgItem(window, 1005); //Získání handleru na Edit box v aplikaci
SendMessage(edit, WM_SETTEXT, 0, "Text odesílaný do edit boxu"); //Odeslání textu
SetFocus(edit); //Nastavení fokusu na edit (nemusí tu být)
SendMessage(edit, WM_KEYDOWN, VK_RETURN, 0); //Odeslání virtuálního stisknutí tlačítka ENTER

Nevíte kde by mohla být chyba? Nemohu ten edit box za žádnou cenu odeslat.

Děkuji za odpověď.

Nahlásit jako SPAM
IP: 2a00:1028:83c4:512e:25c9:...–
Radek Chalupa
~ Redaktor
+1
Super člen
19. 11. 2013   #2
-
0
-

#1 Stumbik
Místo poslání WM_KEYDOWN použij SendInput.

Ono "odentrování" nevyvolá jen WM_KEYDOWN, ale také WM_KEYUP.

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
Stumbik
~ Anonymní uživatel
2 příspěvky
19. 11. 2013   #3
-
0
-

Děkuji, ale nešlo by to vyřešit přes SendMessage nebo nějakou obdobnou funkcí? Potřeboval bych aby ta klávesa byla odeslána programu na pozadí, ten program nebude pořád aktivní, ale minimalizovaný.

Nahlásit jako SPAM
IP: 2a00:1028:83c4:512e:25c9:...–
Radek Chalupa
~ Redaktor
+1
Super člen
19. 11. 2013   #4
-
0
-

#3 Stumbik
Stisknutí enteru v edit-boxu většinou (pokud je to na dialogu) vyvolá "stisknutí" tzv. defaultního buttonu. Ten má nějaký id (většinou standardní IDOK).

Zkus pomocí Spy++ (nebo něčeho podobného) zjistit jaké zprávy dostane příslušná aplikace, resp. okno po stisku enteru a editu. Možná tam bude WM_COMMAND. A ty zprávy pak zkus posílat.

Jinak po poslání WM_KEYDOWN bys měl poslat následně WM_KEYUP, pokud to chceš dělat přes SendMessage.

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 39 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý