Newsgroup: it.comp.lang.pascal
Titolo: KeyLogger in pascal.

Qualcuno ha idea di come fare un programma che, agendo senza essere visto,
registri tutti i pulsanti premuti e le azioni avvenute ?
Ciao.
Enrico

 registri tutti i pulsanti premuti e le azioni avvenute ?
Implementando un hook di sistema grazie all'API di Win32 SetWindowsHookEx e
compagnia bella...
Ciao :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

C'è una cosa che non ho capito: come si può usare l'api di windows se il
turbo pascal è per ms dos? Grazie :-)
-=Azathoth=-

 turbo pascal è per ms dos? Grazie :-)
e chi ha parlato di TP?
Il titolo è "in pascal"... ci sono vari compilatori a 32 bit per Pascal...


Il titolo č "in pascal"... ci sono vari compilatori a 32 bit per Pascal...
ci si arrampica sugli specchi ?! ;)
Se il titolo e' "in pascal", nessuno autorizza a pensare che si tratti
di pascal a 32 bit per windows.
Andrea Laforgia (andrea_...@XXXbigfoot.com)
------------------------------------------------
Il mio indirizzo di posta elettronica č inattivo 
per il momento.

 di pascal a 32 bit per windows.
e chi autorizza a pensare che sia TP?
Non sare mica rimasti tutti al TP? ;-P


Non sare mica rimasti tutti al TP? ;-P
Ho forse detto questo ?
A te sembra che quando si parli di "pascal", si stia parlando di un
ambiente di sviluppo a 32 bit per Windows ?
A me sembra che si stia parlando di un linguaggio inventato da Wirth
qualche annetto fa.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 qualche annetto fa.
Ok, sappiamo tutti che Nichlaus Wirth era un genietto...
Sappiamo anche che il suo Pascal [non il Turbo Pascal, mi spiace, quello è
un compilatore] è un ottimo linguaggio. Io _adoro_ il Pascal... e se trovo
un mezzo che mi permette di restare al passo coi tempi mantenendo la
chiarezza e la robustezza del Pascal io quel mezzo lo scelgo!
Ed è per questo che sto imparando Delphi ed è per questo anche che sto
imparando la OOP che è, a quanto sembra, ben + remunerativa (non sto
parlando di termini economici) della cara programmazione procedurale.
Delphi e Kylix aprono le porte al Pascal su due mondi ampi e potenti: Win e
Unix... perchè fermarsi al DOS?
e cmq, io ritengo sbagliato fossilizzarsi... Wirth fu un innovatore, vediamo
di seguire l'esempio!


di seguire l'esempio!
Diamoci un taglio...
Voglio solo farti notare che non e' giusto rispondere ad una domanda,
dando per scontato che tutti utilizzino il proprio compilatore.
Se io non seguissi le innovazioni, non lavorerei con C++ Builder 4.0
Enterprise in ambiente NT.


 dando per scontato che tutti utilizzino il proprio compilatore.
(?) Non capisco, se leggi con attenzione il mio primo msg vedrai che non c'è
alcun riferimento al compilatore...
L'accesso all' API di Win è di dominio pubblico, semmai potresti dirmi che
non tutti usano Win...
Ciao


non tutti usano Win...
Ripeto meglio il concetto : non e' corretto rispondere a un messaggio
dando per scontato che tutti utilizzino la propria piattaforma.
L'accesso all'API di Win e' consentito solo se hai dei compilatori che
supportino la programmazione per Win. Se qualcuno mi scrive "voglio
allocare una matrice dinamica in pascal", io gli rispondo che non si
puo' fare, in quanto il "pascal" non possiede il supporto per le
matrici dinamiche. Sara' poi compito del lettore del mio messaggio
scrivere "no, guarda, sono stato impreciso, volevo dire come si fa a
farlo in Turbo Pascal o in Delphi". O, altrimenti, rispondi in modo
completo elencando come si puo' fare in tutti i compilatori pascal di
questa terra ;)


 questa terra ;)
Lo trovo un atteggiamento abbastanza controproducente.
Chi fa una domanda si aspetta una risposta "positiva" e non un "non lo puoi
fare perchè...", chi posta lo fa per cercare soluzioni, non per sapere cosa
non può fare...
Io gli ho dato una possibilità, al limite, se non programma sotto Win, mi
dirà lui che le cose stanno così e io risponderò di conseguenza...
Con questa possiamo anche chiuderla qua...
Ciao
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere


dirà lui che le cose stanno così e io risponderò di conseguenza...
Eh no, ti sbagli.
Evidentemente non conosci "troppi" ambienti di programmazione per
capire che quando suggerisci una tecnica particolare DEVI
necessariamente conoscere la piattaforma target. Nel nostro caso, si
poteva anche soprassedere, in quanto non e' che siano cosi' tante le
piattaforme pascal utilizzate (per lo piu' Turbo Pascal). Pero' se tu
seguissi it.comp.lang.c (il C e' un linguaggio diffuso sulle piu'
disparate piattaforme) ti renderesti conto che quanto dico e' giusto a
livello generale per TUTTI i linguaggi.
In generale, un linguaggio prevede diverse implementazioni e quando si
offre un suggerimento bisognerebbe non dire nulla fino a che non si
conosce la piattaforma utilizzata dall'altra persona, o per lo meno
attenersi allo standard del linguaggio. Per cui, ripeto, se qualcuno
dice "in pascal" io gli rispondo per il "pascal", non per la mia
implementazione Macrohard Pascal 3.45 Optimizing Supercompiler.
Se poi vuole sapere come si fa col suo Borlink IperPascal 7.89, lo
specifica successivamente e glielo dico. Il principio e' che si parte
dal generale e si arriva al particolare, non viceversa.


 E' esattamente cio' che ti ho detto.
Ehm...
"Voglio solo farti notare che non e' giusto rispondere ad una domanda,
dando per scontato che tutti utilizzino il proprio compilatore."
                        [Andrea Laforgia,25/01/2000]
"Ripeto meglio il concetto : non e' corretto rispondere a un messaggio
dando per scontato che tutti utilizzino la propria piattaforma."
                        [Andrea Laforgia,26/01/2000]
Mi pare che sia un filo di differenza.
Nella seconda parte del tuo msg ho notato un po' di arroganza tua nei miei
confronti... insomma, potrei anche essere l'ultimo degli imbecilli di questo
mondo ma evita di darmi dell'incompetente se non mi conosci, please...
Detto questo, visto che 'sto thread si sta facendo tremendamente lungo e
palloso e dato anche che non ho alcuna voglia di rognare, ti faccio una
domanda attinente al Ng:
Dovrei visualizzare una BMP con TP, so che è possibile ma siccome dovrei
farlo fare anche a persone che di TP per il momento non sanno molto, devo
evitare l'asm (quindi questo mi relega ai 16 colori, credo)...
Sarebbe una BMP molto semplice (pochi pixels, probabilemente creata con
Paint) e sto pensando di studiarmi il formato BMP per poter poi implementare
il tutto con un file of byte e con delle semplici putpixels...
A scuola siamo arrivati solo lì (anzi no, adesso che ci penso non hanno
ancora fatto i files) e non posso pretendere troppo (sia chiaro, la colpa
non è dei miei
compagni... facciamo 1 ora di informatica alla settimana e i profs lasciano
davvero a desiderare)...
Tu che consigli? [Uso TP7, su macchine Win9X]
Ovviamente vorrei evitare anche di ricorrere a units esterne, mi serve + che
altro come esercizio di programmazione per i miei compagni...
Ciao :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
Ps: la polemica, per favore, lasciamola fare ad altri, a me non interessa...


Tu che consigli? [Uso TP7, su macchine Win9X]
Tempo fa scrissi una unit in pascal che faceva proprio questo (ci
aggiunsi anche delle routine per il fading-in/out). La struttura
dell'header dei bitmap la trovi nell'help di un qualsiasi compilatore
per windows. Sono poche le informazioni di cui hai realmente bisogno
(in sostanza, credo, solo base x altezza). Assicurati che il formato
sia non compresso (il BMP usa l'RLE8 e RLE24) e leggi le linee di
scansione dall'ultima alla prima (sono in ordine inverso).
Considera, pero', che putpixel() delle BGI e' una routine molto lenta.


 Considera, pero', che putpixel() delle BGI e' una routine molto lenta.
Allora, sono quasi a cavallo:
mi sono letto i vari header ecc ecc e ho ottenuto la palette (ho scelto il
formato 16 colori, non compresso) e sono riuscito ad estrapolare i vari
singoli pixels [o meglio, il colore della palette associato ad ogni
pixel]...
Il fatto è questo:la palette mi viene specificata in RGB, ora io come cavolo
passo ai colori standard del Pascal [cyan, blue ecc ecc]?
Ho cercato un'equivalente dell'API WIN32 RGB ma non l'ho trovata... :-(
Altro dubbio: una bmp a 4 bit (16 colori) può contenere 16 colori ma non ho
ancora capito se questi 16 colori sono quelli "fondamentali" [quelli del TP
per intenderci] o se possono essere 16 colori qualsiasi [es. grigio, grigio
chiaro, grigio chiarissimo, grigio ancora_più_chiaro....]
Per quanto riguarda la velocità, so che le BGI sono lente... avrei usato
l'asm se fosse stato per me [così avrei anche usato + colori] ma, ripeto,
devo farlo fare a gente che di programmazione (in generale) ne sa poco
[incluso il mio prof]...
Già prego il cielo che non mi vadano in crisi di fronte alla BlockRead,
figurati se gli propongo l'asm...
Cmq, nel programmino di prova che ho fatto il risultato è decente (si vede
appena che viene costruita pixel x pixel), ma mi domandavo se non si poteva
usare una superficie di disegno provvisoria per poi scopiazzare sul video
"vero"... [una funzione tipo BitBlt ?]
Ciao, grazie :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere


"vero"... [una funzione tipo BitBlt ?]
Certo che si puo', si fa uno swap tra due bitplane, pero' non trovo il
codice per fare questa cosa...
Comunque, in rete, dovrebbe esserci ancora il mio file "bitmap.zip" o
"fading.zip", prova a cercarlo, altrimenti visita uno di quei siti
sulla creazione dei videogiochi, ci sono esposte tutte le tecniche di
cui ti ho parlato...


 cui ti ho parlato...
Le tecniche le conosco, mi mancano i "mezzi"... [ah, come vorrei un canvas e
una TBitmap...!]
Uso TP poco, + che altro per mantenere qualche programma che però non girava
in modalità grafica... Non mi sono mai avvicinato alla grafica standard di
TP, solo una volta ho scritto un giochino con l'asm inline...
Sto pensando che forse faccio prima a scrivermi una unit in cui incapsulo le
chiamate asm e gli creo qualcosa come "InizializzaGrafica", "MettiPixel" ecc
ecc, tanto non sono troppe righe, il problema è poi mantenere le funzioni
standard... :-( [mica me le posso riscrivere tutte...]
Ciao :-)


standard... :-( [mica me le posso riscrivere tutte...]
Non possono essere standard, purtroppo ! ;)
