Autor Téma: sendmessage  (Přečteno 2732 krát)

Nikola

  • Host
sendmessage
« kdy: 18-04-2005, 12:56:00 »
Ahoj,
byl by tu někdo tak laskav a ukázal mi, jak správně použít SENDMESSAGE na jednoduchém příkladě?
Třeba tak, že mám spuštěnou kalkulačku, kde v titulku ne "Kalkulačka" a chci třeba simulovat stisk "ALT + N", aby se rozbalilo monu nápovědy a pak "stisknout" "O", aby se zobrazila hláška "O produktu".

Nikča

Petr Daricek

  • Host
sendmessage
« Odpověď #1 kdy: 18-04-2005, 13:57:00 »
Ahoj,
  pokud se jedna o tvuj program, pak doporucuji pouzit jinou techniku(volej primo tu proceduru). Pokud je to cizi program tak musis zjistit jeho handle, a poslat zpravu WM_KeyDown a WM_KeyUp, v delphi jsou prislusne typy TWMKeyDown, TWMKeyUp, ty naplnis hodnotami a pak posles pres SendMessage.(Aby jsi dostala LPARAM a WPARAM, tak staci pretipovat na TMessage). Ovsem jak simulovat stisk ALT klavesy, to nevim.
                  Petr

JiVi

  • Host
sendmessage
« Odpověď #2 kdy: 18-04-2005, 14:00:00 »
pust si WinSight .. tam si najdi okno Kalkulacky a stiknji klavesy .. uvidis, ktere zpravy se posilaji

pak uz jen

var hadleOkna:HWND;

begin

hadleOkna := FindWindow(nil,'Kalkulaèka');

SendMessage(hadleOkna,WM_SYSKEYDOWN,VK_MENU,0);

SendMessage(hadleOkna,WM_SYSKEYDOWN,78,0);  78 = 'n'

SendMessage(hadleOkna,WM_SYSKEYUP,78,0);

SendMessage(hadleOkna,WM_SYSKEYUP,VK_MENU,0);

Jirka Virt


Nikola

  • Host
sendmessage
« Odpověď #3 kdy: 18-04-2005, 14:14:00 »
Děkuji, přesně takhle jsem to myslela....N.

Rasto-X

  • Host
sendmessage
« Odpověď #4 kdy: 18-04-2005, 14:43:00 »
Pouzi unit sndKey32.pas na instalacnom CD k Delphi.Zastresuje vsetku pracu s posielanim resp.simulovanim klavesnice vratane aktivacie aplikacie.Inak ani pouzitie hladania v tomto fore by obcas nezaskodilo.....

Nikola

  • Host
sendmessage
« Odpověď #5 kdy: 18-04-2005, 16:57:00 »
Rasto-X, tak když si takový chytrák, tak jsem dej odkaz z tohoto fóra, kde to je takhle hezky popsané, jako od pana Virta.....

Rasto-X

  • Host
sendmessage
« Odpověď #6 kdy: 18-04-2005, 17:53:00 »
1.Tak napriklad:
http://forum.builder.cz/read.php?18,120676,120689#msg-120689 a nebolo to prvy krat....
ale tam je aj zdrojak ak by si ho nahodou nedokazala  najst.
2.Vsetko potrebne je popisane v tom zdrojaku takze nevidim dovod k duplicitnemu vyjadrovaniu sa ...ale aj tak:

AppActivate('xxxx'); aktivuje aplikakaciu ktorej chces poslat znaky...
S:='abcdefgh';
SendKeys(@S[1],true);//posle znaky abcdefgh aplikacii xxxx ktora ale musi byt predtym aktivovana cez appactivate;
alebo..
S:='{TAB}{TAB}{LEFT}'
SendKeys(@S[1],true);
posle znaky tab,tab a lava sipka.

JiVi

  • Host
sendmessage
« Odpověď #7 kdy: 18-04-2005, 20:45:00 »
maly poznatek,

 pokud se naucim pouzivat primo volani API, mohu to pouzit I jinde .. trebas

v C, FoxPro,VB atd ...

 pokud se naucim pouzivat zlehcujici unity viz sndkeys, pri prepnuti se do

jineho jazyka budu tapat.

To je jenom takova poznamka

Jirka Virt


Rasto-X

  • Host
sendmessage
« Odpověď #8 kdy: 19-04-2005, 11:46:59 »
tazko budes tapat,lebo si to vzdy mas moznost prepisat do "druheho" jazyka kedze je k tomu aj zdrojak.Navyse tieto uniti sa vytvaraju prave preto aby zlahcili pracu pri programovani a v tomto pripade umoznili posielat viac znakov,vratane prefixov typu CTRL,ALT atd v jednom stringu a nesmuselo sa tym posielat nekonecne mnozstvo comandov typu SendMessage pre pripad klavesnice.AK by sa programatory mali pri vsetkom  riadit tvojou radou tak by aplikaciu nedokoncili ani za desat rokov.

JiVi

  • Host
sendmessage
« Odpověď #9 kdy: 19-04-2005, 12:01:00 »
nevim teda, beru to podle svoji zkusenosti a tak jsem to i

prezentoval.Vetsinou pouzivam svoje funkce a procedury, ktere pak prepisuji

do jinych jazyku ... posilani klaves do jine aplikace asi nebude nejbeznejsi

prace programatora, ne?

to , co je se zdrojem a od vyrobce programovacich jazyku, to vetsinou maji i

nejak podobne navrzene ostatni jazyky. jde o to, ze si sednu a napisu z

hlavy, bez tapani. a pokud bych snad mel napsat 4 radky na posilani neceho

nekam, tak je radsi napisu, nez opisovat celou unitu, ktera je vazana trebas

na dalsi unitu, ktera je vazana na dalsi unitu , ktera ....

Jirka Virt