Czy da się w C++ symulować przyciskanie klawiszy albo ruchy myszki, a jeśli tak, to w jaki sposób można to zrobić?
Czy da się w C++ symulować przyciskanie klawiszy albo ruchy myszki, a jeśli tak, to w jaki sposób można to zrobić?
Podejrzewam że choodzi Ci o Windowsa, więc zapoznaj się z WinAPI
http://nikowek.blogspot.com/
Zbrojne Ramię Pingwina!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
G+ e- h! r% y?
------END GEEK CODE BLOCK------
Nikow, "WinAPI" nie brzmi zbyt konkretnie, ale dzięki, już znalazłem.
SetCursorPos do gryzonia
keybd_event do klawiatury
Gdzieś czytałem że niektóre programy odczytują dane "bezpośrednio z klawiatury" i że WinAPI jest wtedy bezużyteczne, to prawda? Istnieje jakaś uniwersalna funkcja do symulowania klawiatury?
![]()
programy odczytuja bezposrednio z klawiatury?
zalezy jakie, te dzialajace pod systemami operacyjnymi stanowczo nie, wszystko przechodzi przez SO i wszystkie zdarzenia dopiero sa wysylane do programu
"W życiu wszystko ma jakiś sens, tylko trzeba go odnaleźć. No i często ma on odmienne znaczenie dla różnych osób."
Chyba mogę Ci pomóc:
Klawiatura:
- mouse_event(paramtery) np. :
*mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // Symulacja wciśnięcia lewego przycisku myszy ("trzymaj i nie puszczaj")
*mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0) // Symulacja puszczenia LPM
Czyli dosłownie: Wciśnij, i puść...
- oraz jak już wiesz SetCursorPos(200,50);
pokombinuj trochę z kodem: rozwiązania są analogiczne :]
Mysz:
- keybd_event(parametry) np.: :
Wywołujemy funkcję która pobiera klawisze bez ID po prostu wpisując np. :
*keybd_event(VkKeyScan('LITERKA'),0,0,0);
Wywołujemy funkcję VK (do wciskania innych klawiszy) takich jak np. TAB, Spacja etc. np. :
*keybd_event(VK_SPACE,0,0,0);
*keybd_event(VK_RETURN,0,0,0);
*keybd_event(VK_TAB,0,0,0);
Kombinacji jest wiele![]()
OK, ale jeśli jest np. taka funkcja:
keybd_event(VK_SPACE,0,0,0);
to pierwszy argument służy do określenia przycisku, trzeci do "puszczenia" przycisku, a do czego używa się pozostałych dwóch?
Pozostałe dwa? Służą do symulowania tzw. kombosów ;p Można przy tym nieźle namieszać: np:
keybd_event(VK_MENU, VK_SPACE, 0, 0); // każdy klawisz działa jak kombinacja czegoś ze spacją (tzw. menu :P)
keybd_event(VK_CONTROL, VK_MENU, DELETE, 0); // wygląda jakbyśmy chcieli włączyć Menedżer zadań prawda? tak naprawde to po naciśnięciu magicznego buttonu "symuluj" znów keyboard zaczyna wariować (nie można pisać)
poprawne używanie kombinacji to np:
keybd_event(VK_KLAWISZ, 0, 0, 0);
keybd_event(VK_DRUGIKLAWISZ,0,0,0);
keybd_event(VK_TRZECIKLAWISZ,0,0,0);
keybd_event(VK_KLAWISZ, 0, KEYEVENTF_KEYUP, // Release key - zwolnienie klawisza...
Jakby co w sieci przeczesałem tylko 4 stronki i jest tego wręcz mnóstwo... słowa kluczowe: "keybd_event, symulacja klawoszy, WINAPI itp)
Oprócz tego masz jeszcze linka:
http://vbcity.com/forums/topic.asp?tid=29181
Oraz następny link z krótykim wyjaśnieniem i wszystkimi możliwymi znakami:
http://r3s3t.bloog.pl/id,1753147,ind...l?ticaid=65b2b
oraz jeszcze jeden link...:
http://xion.org.pl/files/texts/mgt/html/3_3.html (gryzoń i klawisze)
Pozdrawiam!
FX12
Ostatnio edytowane przez FX12 : 04-12-2008 - 11:48
Dzięki FX12, teraz już wszystko wiem![]()