casa
Top.Mail.Ru Yandeks.Metrika
Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];

giù

Come inviare un messaggio al sistema che viene premuto un tasto? Trova rami simili


Delphimun   (2001-12-20 12:10) [0]

Come inviare un messaggio al sistema che viene premuto un tasto? Ad esempio, si mette su un timer questo messaggio al sistema che viene premuto il tasto, e l'utente sta attualmente lavorando nel blocco note e che queste lettere sono scritte nel blocco note che hai inviato al sistema (che hai premuto il tasto)



gek   (2001-12-20 12:32) [1]

Ottieni un handle del blocco note e invialo a wm_keydown



Delphimun   (2001-12-20 13:10) [2]

L'ho già capito (avevo bisogno non solo di inviare il notebook, ma il sistema generale)
Ecco un esempio di faq che è interessato:

-------------------------------------------------- -----------------------
Di seguito è riportata la procedura per l'invio di clic a qualsiasi
un controllo (controllo finestra) che può accettare input da
tastiera. Puoi usare questa tecnica per accendere i tasti.
NumLock, CapsLock e ScrollLock in Windows NT. La stessa tecnica funziona
e sotto Windows 95 per CapsLock e ScrollLock ma non funziona per la chiave
NumLock.
Si prega di notare che ci sono quattro procedure: SimulateKeyDown () -
emula le battiture (senza rilasciare) SimulateKeyUp () -
emulate key release SimulateKeystroke () - emula un hit
sulla chiave (premere e rilasciare) e SendKeys (), che consente di flessibilità
messaggi della tastiera di controllo inviati.
SimulateKeyDown (), SimulateKeyUp () e SimulateKeystroke () ricevono i codici
chiavi virtuali (chiave virale) (come VK_F1). procedura
SimulateKeystroke () ottiene un parametro extra, utile quando
emula facendo clic su printcreen. Quando questo parametro è zero tutto
Lo schermo verrà copiato negli appunti. Se extra
il parametro è uguale a 1 solo la finestra attiva verrà copiata.
Quattro metodi di "clic sul pulsante" dimostrano l'utilizzo:
ButtonClick1 - include capslock ButtonClick2 - intercetta tutto
schermo negli appunti (appunti). ButtonClick3 - intercetta
finestra attiva negli appunti (appunti). ButtonClick4: imposta lo stato attivo su Modifica e
invia una stringa ad esso.
Esempio:

procedura SimulateKeyDown (Key: byte);
iniziare
keybd_event (Key, 0, 0, 0);
fine;

procedura SimulateKeyUp (Key: byte);
iniziare
keybd_event (Key, 0, KEYEVENTF_KEYUP, 0);
fine;

procedura SimulateKeystroke (Key: byte; extra: DWORD);
iniziare
keybd_event (Key, extra, 0,0);
keybd_event (Key, extra, KEYEVENTF_KEYUP, 0);
fine;

procedura SendKeys (s: string);
var i: intero;
bandiera: bool;
w: word;
iniziare
{Ottieni lo stato del tasto di blocco maiuscole}
flag: = non GetKeyState (VK_CAPITAL) e 1 = 0;
{Se diventa un blocco maiuscole
se bandiera allora
SimulateKeystroke (VK_CAPITAL, 0);
per i: = 1 a lunghezza (s) fare
iniziare
w: = VkKeyScan (s [i]);
{Se non ci sono errori nella traduzione delle chiavi}
se ((HiByte (w) <> $ FF) e (LoByte (w) <> $ FF)) allora
iniziare
{Se la chiave richiede il tasto Maiusc premuto, tienilo premuto}
se HiByte (w) e 1 = 1 allora
SimulateKeyDown (VK_SHIFT);
{Invia il VK_KEY}
SimulateKeystroke (LoByte (w), 0);
{Se la chiave richiedeva il tasto maiuscole premuto - rilasciarlo}
se HiByte (w) e 1 = 1 allora
SimulateKeyUp (VK_SHIFT);
fine;
fine;
{se era un blocco maiuscole
se bandiera allora
SimulateKeystroke (VK_CAPITAL, 0);
fine;

procedura TForm1.Button1Click (Sender: TObject);
iniziare
{Attiva / disattiva il blocco maiuscole}
SimulateKeystroke (VK_CAPITAL, 0);
fine;

procedura TForm1.Button2Click (Sender: TObject);
iniziare
{Cattura lo schermo}
{simulando la pressione del tasto sullo schermo di stampa}
SimulateKeystroke (VK_SNAPSHOT, 0);
fine;

procedura TForm1.Button3Click (Sender: TObject);
iniziare
{Cattura la finestra negli Appunti}
{simulando la pressione del tasto sullo schermo di stampa}
SimulateKeystroke (VK_SNAPSHOT, 1);
fine;

procedura TForm1.Button4Click (Sender: TObject);
iniziare
{Imposta lo stato attivo su una finestra (controllo di modifica) e invia una stringa}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys ("Delphi Is RAD!");
fine;
-------------------------------------------------- -------------------------

Ora devo monitorare il clic dell'utente sul pulsante Claudia (ad esempio, quello alfit) e annullare questo clic \ sostituirlo con il mio.




Pagine: 1 tutto il ramo

Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];

al piano di sopra









Memoria: 0.83 MB
Ora: 0.232 c
1-22110
Katerina
2001-12-19 18:09
2002.01.08
in lacrime chiedere aiuto


1-22008
Alligatore
2001-12-17 11:46
2002.01.08
AIUTO !!!


3-21955
kalinka17
2001-12-03 13:16
2002.01.08
Aiutami a trovare DBTreeView =)


3-21962
phantom2040
2001-12-04 13:27
2002.01.08
Impostazione del filtro in TDStringGrid


7-22439
PONTIY
2001-09-27 09:18
2002.01.08
Visualizzazione di un componente (Crea) già creato su un altro modulo





afrikaans albanese Arabic armeno Azero basco bielorusso Bulgarian catalano Cinese (semplificato) Cinese (tradizionale) croato Ceco danese Dutch Inglese estone filippina Finnish Francese
galiziano georgiano Tedesco greco Creolo haitiano ebraico hindi ungherese islandese Indonesian irlandese Italiano Giapponese Korean lettone lituano macedone Malay maltese Norwegian
persiano polacco Portoghese rumeno Russian serbo Slovak sloveno Spagnolo swahili Swedish Thai turco ucraino Urdu vietnamita gallese yiddish bengalese bosniaco
Cebuano esperanto Gujarati Hausa Hmong Igbo giavanese kannada khmer lao latino maori marathi mongolo nepali punjabi somalo tamil telugu Yoruba
zulù
Английский Francese tedesco italiano portoghese russo spagnolo