2013-03-26 9 views
6

Czy program może blokować wprowadzanie klucza z innych programów, ale NIE wpisywać klucza bezpośrednio z ręki użytkownika, dotykając klawisza na klawiaturze?Czy program może wprowadzać rozróżnienie między wprowadzeniem klucza użytkownika a wprowadzeniem klucza programu?

Na przykład:

ProgramA zawiera pole tekstowe.

Program B to klawiatura ekranowa systemu Windows.

Po wybraniu pola tekstowego w ProgramA, próbuję nacisnąć literę "c" w programie klawiatury ekranowej, ale nie pojawia się ona w polu tekstowym.

Jednak po naciśnięciu litery "c" bezpośrednio z klawiatury pojawia się w polu tekstowym programu A.

wiem jak kluczowe wydarzenia działają, jak są one ustawiane w kolejce, i widziałem funkcji BlockInput w C++

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646290%28v=vs.85%29.aspx

ale to po prostu funkcja blokuje cały wejściowego.

Ive napotkanych programów, które filtrują dane wejściowe w ten sposób i nie może wydawać się dowiedzieć, jak. Czy brakuje mi czegoś całkowicie oczywistego?

To pytanie dotyczy głównie języka C++ w systemie operacyjnym Windows 7.

+1

Z jakiego języka programowania i jakiego systemu operacyjnego pytasz? Wydaje się nieco zbyt szerokie, aby oznaczyć takie pytanie zarówno dla tagów java, jak i C++. –

+0

Poduszkowiec, jeśli znasz klasę robotów w Javie, twoja pomoc byłaby bardzo doceniana. Polecenia KeyPress są również blokowane w ProgramA. – user2212942

+0

Być może chcesz utworzyć program kiosku. Czy wyszukiwałeś ten termin? –

Odpowiedz

1

Nigdy nie można być pewnym, czy wejście pochodzi ze sprzętu. Najprostszym przykładem jest niestandardowy sterownik symulujący prawdziwą klawiaturę sterowaną przez wejście programowe.

Do fantazyjnego pomysłu można podłączyć mikrofon do urządzenia, aby słuchać dźwięków/wibracji do filtrowania wejściowego, ale czy chodzi o kompletne rozwiązanie sprzętowe lub aplikację, które zostaną przekazane użytkownikom osobistym?

+0

Próbuję zrozumieć, jak aplikacja czatu Windows (C++) na moim komputerze w jakiś sposób blokuje keyPresses z napisanego przeze mnie (java) programu, ale pozwala mi go wpisywać, gdy piszę na klawiaturze używając moje własne ręce. Po prostu bawiłam się robotem z klasy Java i zastanawiałam się, dlaczego nie zaakceptuje wejścia zrobotyzowanego, a jedynie bezpośrednie wejście z mojej klawiatury. http://docs.oracle.com/javase/6/docs/api/java/awt/Robot.html – user2212942

Powiązane problemy