PDA

Visualizza versione completa : C++: Scrivere un carattere


Semi.genius
15-11-2004, 09.28.05
Devo creare un programma che emuli l'inserimento di dati da tastiera:
per esempio che apra Word e scriva qualcosa, ma non solo Word, qualunque programma....

C' qualche idea?

P8257 WebMaster
15-11-2004, 10.40.44
La cosa abbastanza semplice utilizzando la Virtual Keyboard con la chiamta a "keybd_event"


void keybd_event(BYTE bVirtualKey, BYTE bScanCode,
DWORD dwFlags, DWORD dwExtraInfo);


A questa passi una costante identificativa del tasto, con i flag relativi ..

Per una traccia, guarda qui:

http://www.codeproject.com/system/keyboard.asp

Bye :cool:

ceccus
15-11-2004, 10.43.26
Salve,
Una domanda : lo vuoi per forza in C++ ?? PEr esempio, in VB, una sola riga di codice : Sendkeys "stringa", True/False

Il True/False sta ad indicare il comportamento di sendkeys :
False : il controllo viene ritornato immediatamente dopo l' invio dei caratteri (comportamento di default)
True : opposto al False (pi o meno...)

Ciao !!

P8257 WebMaster
15-11-2004, 11.39.43
ceccus ha scritto:
Salve,
Una domanda : lo vuoi per forza in C++ ?? PEr esempio, in VB, una sola riga di codice : Sendkeys "stringa", True/False

Il True/False sta ad indicare il comportamento di sendkeys :
False : il controllo viene ritornato immediatamente dopo l' invio dei caratteri (comportamento di default)
True : opposto al False (pi o meno...)

Ciao !!


Il titolo del thread mi sembra esplicativo per quanto riguarda il lingauggio, quindi evidentemente gli serve cos...

inoltre, anche in C++ una sola riga...

Esempio:

keybd_event(VK_TAB,0x8f, 0, 0); // Tab

Al massimo 2 per ottenere i codici di scansione se devi mandare stringhe di testo...

Bye :cool:

ceccus
15-11-2004, 12.49.01
Salve,
Beh....poteva anche essere altrimenti....Inoltre, poi, qualsiasi sia l'istruzione (o le istruzioni) , nei sistemi Windows , ad essere richiamata l' API keybd_event presente nella User32.dll

Ciao !!:D

myrddin1981
22-11-2004, 17.48.49
scusate ma volevo sapere se sendkeys pu scrivere su prog gi avviati,
e (anke se nn centra molto) come si fa il ritardo
sto parlando di VB
grazie ciao

LoryOne
23-11-2004, 08.04.46
Il SendKeys simula la pressione di un tasto o di una sequenza di tasti che vengono intercettati dal programma che ha lo stato attivo (focus) in quel momento.

Per quanto riguarda il ritardo non so bene a cosa ti riferisci.
Forse a settare il ritardo di ripetizione ?

myrddin1981
23-11-2004, 13.48.16
boh, :mm: cio volevo fare un exe ke clikkasse x es il tasto "1" ogni tot secondi x un tot di volte, ma su un altro programma gi avviato (notepad, un gioco, etc)

il ritardo ho trovato sta... function procedura o come si chiama
Sub Pause(seconds As Integer)
Const SECS_INDAY = 24! * 60 * 60 ' Secondi al giorno
Dim start As Single
start = Timer
Do: Loop Until (Timer + SECS_INDAY - start) Mod SECS_INDAY >= seconds
End Sub
( giusta? ki lo sa :))

nn ke in sto forum posso mettere il topic
"qualcuno c'ha voglia di farmi sto programmino che nn riesco?"

ceccus
23-11-2004, 14.51.37
Salve,
Dunque, per il discorso di inviare una stringa di caratteri ad un determinato processo....si pu fare benissimo....bisogna saper utilizzare le API di Windows e bisogna saper indirizzare correttamente la stringa, prendendo come riferimento l'Handle del Processo Target.... che ogni volta che il processo Target viene lanciato , cambia anche il suo Handle...ma pu essere rintracciato utilizzando, per esempio, la funzione FindWindow.
Per il discorso Timer : quello postato dovrebbe funzionare, per un modo "barbaro" di mettere un Processo (alias Thread) in attesa....
Esistono altri modi molto pi "consoni" e che consumano molto meno CPU....
Esiste la funzione Sleep, esiste la funzione WaitforSingleObject (WaitforMultipliObject), esiste anche la Timer del VB, ancorch non proprio "performante"....insomma , come vedi, quasi "una pletora" di strade migliori di quello proposta perch quella l , dal punto di vista CPU, ne consuma, visto che mantiene attivo il Thread associato.
Magari, se riesci ad essere pi preciso......

Ciao !!

cipi
24-11-2004, 13.58.49
Originariamente inviato da ceccus
bisogna saper utilizzare le API di Windows e bisogna saper indirizzare correttamente la stringa, prendendo come riferimento l'Handle del Processo Target....

Che poi quello che si deve fare se vuoi entrare in un prog o quant'altro e questo protetto da password. Il "Brutal forcing" detto anche "Brute Force Attack" consiste proprio in questo... provando milioni di combinazioni alfanumeriche...
Ma son sicuro che non ci che myrddin1981 vuole fare... vero? :D

ceccus
24-11-2004, 14.47.24
Salve,
Spero proprio di no.......e comunque manca ancora un "pezzettino"....relativo all' Impersonate....eh,eh,eh,eh....

Ciao !!

cipi
24-11-2004, 18.12.49
:inn: