jak można wpisać kod jakiegoś klawisza do bufora klawiatury??
np. w c++ lub w asm??
hmm jezeli mowisz o standardowym buforze ktory jest gdzies tam w pamieci to po prostu musisz zapisac tam odpowiedni bajt :P (chyba:D)
ale jak??
Pytasz o byfor BIOSU ?
chodzi mi o standartowy bufor klawiatury.
hmm jezeli mowisz o standardowym buforze ktory jest gdzies tam w pamieci to po prostu musisz zapisac tam odpowiedni bajt (chyba:D)??
No więc wiesz już, że bufor klawiatury jest gdzieś tam w pamięci. No to teraz po prostu muszisz do niego zapisać odpowiedni bajt, ale chyba tak jest. LOL [rotfl]
Ludzie jak nie macie nic do powiedzenia to nie wypowiadajcie się bez sensu bo ja niedługo umre ze śmiechu.</quote>
no dzieki ja tu ambitnego posta napisałem i mnie zjechali [green]
do rzeczy buforek zaczyna sie na adresiq: 0x0040:0x001e i ma 32 bajtu dlugosci :P
Cieżko wpisać 'bufor klawiatury w wyszukiwarce ?'
http://4programmers.net/Forum/135105
Jak cepa napisał... Ręcznie lub przy pomocy funkcji 5 przerwania 16h :
int insertkey(char ascii,char scancode=0){
int ret=1;
asm{
mov ah,0x05 // mov ah,05h // zapis obojetny
mov ch,[ascii]
mov cl,[scancode]
int 0x16 // int 16h
jnc lab
mov [ret].0
}
lab:
return ret;
}
//...
if(!insertkey('a'))printf("nie wyszło");
nie da sie bo występuje błąd:"Access violation at address 00401B7F in module 'Project1.exe'. Read of address FFFFFFFF." :-/
ty tego chyba nie prubujesz robic w programie pod winde 8-0 [sciana]
no ale jak to zrobić pod windowsa ??
Jeśli masz XP to raczej tego nie zrobisz bo ten Shit ma takie cos jak ochrona pamięci, po prostu nie dopuści cie bezpośrednio do jakiś tam określonych pamięci(np: buffor klawiatury, pamięć karty itp)
a pod 98 ?
Jeśli masz XP to raczej tego nie zrobisz bo ten Shit ma takie cos jak ochrona pamięci(...)
Więcej windowsów ma taką ochrone, niż jej nie ma (mówie o windowsach >= 32 bitowych):
Nie ma ochrony:
- w95
- w98
- wMe
Ma ochronę: - NT4.x
- NT5.0 alias Windows 2000
- NT5.1 alias Windows XP
- NT5.3 alias Windows 2003
Z tego co pamiętam sterownik załadowany jako kernel-mode device /czy tam driver :)/ pod windowsami nt ma uprawnienia pozwalające na modyfikację wszystkiego. Dzieki temu kernel-mode debugger taki jak SoftICE umozliwia bezpośrednią edycję jądra systemu. Pozostaje nadal problem dobrania się do odpowiednich buforów...
no ale z poziomu swojego programu??
jak?
pomijająć znalezienie adresu bufora napisanie prostego sterownika wdm i jego dynamiczne ładowanie to banał.
w czym to pisać ?
mając ddk dla win2000 można pisać pod c++ lub asmem.
A może problem leży gdzie indziej? Może nie potrzebujesz wciskać znaku do bufora bo Twój problem da się rozwiązać funkcjami API? Może napisz co chcesz zrobić, a ktoś poda inne rozwiązanie.
Właśnie wpadłem na taki pomysł - a może zamiast wpchać na chama klawisz do bufora, możnaby zmienić stan klawiszy przy pomocy SetKeyboardState?? Przy odpowiedniej implementacji wystarcza w 99,9% wypadków.
napisz co dokładnie chcesz osiągnąć ...
jak tego użyć?? bo ja piszę w delphim i znalazłem to ale tam jako parametr trzeba podać tablicę " array [0..255] of byte ". Bo mi chodzi o to żeby program umiał "wcisnąć" klawisz na klawiaturze bo piszę program do zdalnego sterowania innym komputerem. :]
To wystarczy odpowiednoi uzywac keyb_event()
lub poszukaj sobie unitu sndkey32.pas
dzięki wam użyłem sndkey32.pas i działa. :)