Jump to content
Nokioteca Forum

[mshell] Modulo Per Copiare Testo Nella Clipboard


Gygabyte017
 Share

Recommended Posts

Ho scritto un nuovo modulo per scrivere del testo nella clipboard del cellulare, che sarà accessibile da tutte le altre applicazioni...

L'uso è semplicissimo:

clipboard.write(textstring);

Attenzione:

textstring deve essere inferiore a 256 caratteri, e non deve contenere caratteri unicode! Solo gli ascii sono permessi (o meglio, con gli ascii funziona sicuramente, con caratteri unicode non so che potrebbe succedere.... b) al massimo provateci! b) )

Testato sul mio 6630 con MShell 2.0

Provatelo e fatemi sapere se fuziona...

Se tutto va bene, creo anche la funzione clipboard.read ma non so se è utile....

Installazione: rinominate il file in Clipboard.mm (il forum non mi fa postare file con questa estenzione) e copiatelo in "E:\documents\mshell"

Ciao!

ClipBoard.txt

Edited by Gygabyte017
Link to comment
Share on other sites

Grande Gyga!!!

Non è poi un processo difficilissimo!!!

Utile b)

Grazie! b) E' bastato studiare il file format del file in questione.... alla fine non era complicato...

cavoli!.....tempo fa avevo fatto la stessa richiesta x python e nessuno mi aveva saputo risp....

Prova a fare un porting in python tanto saranno una cinquantina di righe di codice.....

Link to comment
Share on other sites

b) bravo gyga...

era un pò che nn ti facevi sentire sul forum eh? xD

ma le specifiche del file della clipboard le hai dedotte tu studiandotelo o hai trovato qlk info da qlk parte?

ps:

vi saluto! stasera parto e torno il 28! ciaoooooo!!!

Link to comment
Share on other sites

Grazie! b) E' bastato studiare il file format del file in questione.... alla fine non era complicato...

Prova a fare un porting in python tanto saranno una cinquantina di righe di codice.....

...non ho idea....mi spiegheresti?Grazie! b)

Link to comment
Share on other sites

bravo gyga...

era un pò che nn ti facevi sentire sul forum eh? xD

ma le specifiche del file della clipboard le hai dedotte tu studiandotelo o hai trovato qlk info da qlk parte?

ps:

vi saluto! stasera parto e torno il 28! ciaoooooo!!!

Si perchè l'esame di maturità m'ha distrutto psicologicamente b)b):(

Cmq no me lo sono studiato per conto mio, diciamo che ho copiato 6-7 volte il file (con contenuti diversi ovviamente, ogni volta copiavo un testo nuovo), e poi con un hex editor ho analizzato somiglianze&differenze e ci sono riuscito... mi sono un pò impicciato con i byte che contenevano la lunghezza del testo (ce ne sono 2 diversi, mi sfugge il motivo?!?!?) perchè erano rovesciati, cioè da leggere da destra a sinistra (mi pare codifica big endian può essere?)

Ottimo Gygabyte! Sarebbe bello averlo anche in python!
...non ho idea....mi spiegheresti?Grazie! ;)

Diciamo che chi 1)conosce mshell 2)conosce python, può tentare di fare il "porting" ovvero trascrivere linea per linea il codice mshell in codice python, adattandolo ovviamente al nuovo linguaggio....

Se trovo tempo lo faccio io... :D

Link to comment
Share on other sites

Diciamo che chi 1)conosce mshell 2)conosce python, può tentare di fare il "porting" ovvero trascrivere linea per linea il codice mshell in codice python, adattandolo ovviamente al nuovo linguaggio....

Se trovo tempo lo faccio io...

se combini sarebbe ottimo x tutti i pythoniani!... b)

Link to comment
Share on other sites

Gyga te la prendi se ho continuato il modulo Clipboard?

Ho creato pure la funzione read()...

per i pythoniani, non penso sia un problema tradurre il codice, credo sia abbastanza semplice interpretare il codice di mShell e riportarlo in python (come anche il contrario)...

Edited by masmil1988
Link to comment
Share on other sites

Gyga te la prendi se ho continuato il modulo Clipboard?

Ho creato pure la funzione read()...

per i pythoniani, non penso sia un problema tradurre il codice, credo sia abbastanza semplice interpretare il codice di mShell e riportarlo in python (come anche il contrario)...

Si mi sono offeso!! Ci dovevo mettere il copyright! ;););););););););)

No dai scherzo m'hai anticipato perchè mi ci sarei messo io, ma se l'hai già fatto meglio, postalo!

Cmq ciò significa che il codice che ho scritto era ben comprensibile! Senti ma visto che ci sei, tu che ne pensi dell'Unicode? Hai visto i due campi di lunghezza del testo? Il primo indica il numero di bytes+25, e il secondo il numero di caratteri. Ora, presupponendo di togliere il 25 al primo, è ovvio che i due numeri sono uguali se le lettere sono ASCII (<256), ma se provi a copiare un carattere unicode, vedrai che ci sono sorprese.

Ad esempio copiandone uno solo, vedi che il numero di caratteri resta sempre 1, ma il numero di bytes diventa 3+25. Andando a controllare quali sono questi 3 bytes, scopri che gli ultimi due sono l'effettivo valore in unicode, ma il primo non capisco a che serve! Modificandolo, corrompe il file e non si può + incollare la clipboard.... Per esempio, se scrivi (in mshell) char(0x3E8), ti fai stampare il carattere, lo copi e vai a controllare l'hex della clipboard, noterai che c'è nel campo dei dati 0E 03 E8. A che serve lo 0E? Boh?!? b)b) ....

Con altri caratteri invece ne scrive solo due, che (sembra) non hanno niente a che fare con l'hex originale...

Hai qualche idea?!?!?!?!?!

Link to comment
Share on other sites

Uhm... Non ho purtroppo guardato il codice, ho studiato un po' quel file in un momento che non avevo niente da fare e ho aggiunto la funzione read(9, asp che posto il file b)

A che servono la variabile reverse, la funzione WriteBytes, puoi spiegarmelo in poche parole? Per evitare di guardare il codice.

Credo comunque di non aver studiato a fondo il file, perchè la storia dei byte non l'ho attenzionata.

La funzione read funziona in modo semplicissimo,

apre il file, e prende tutto il testo del file esclusi i primi 24 byte e gli ultimi 10 byte. L'unico problema l'ha dato il carattere "a capo" che non sempre è registrato con la stessa sequenza di byte, viene fatto allora il controllo e quando viene identificata una determinata sequenza viene sostituita con i byte 13, 10 (in decimale).

Allegato aggiornato alle 20:50 del 24/07/07

ClipBoard.txt

Edited by masmil1988
Link to comment
Share on other sites

A che servono la variabile reverse, la funzione WriteBytes, puoi spiegarmelo in poche parole? Per evitare di guardare il codice.

Allora WriteBytes scrive data sul file file, ribaltando la stringa se reverse=true) b)

Mi spiego meglio:

file è l'oggetto restituito dalle funzioni IO, tipo file.create, ed è il file dove andrà a scrivere

data rappresenta che cosa scrivere sul file. Può essere o un array di bytes (tipo [0x00,0x01,0x02,...] vedi per esempio le costanti Header e Footer), oppure una stringa esadecimale (tipo "000102") che la funzione poi converte in array di bytes.

E poi byte per byte, scrive l'array su file. Se reverse è true, allora scrive l'array rovesciato, cioè inizia dalla fine e finisce all'inizio.

Tutto qua.

Esempi pratici:

f=io.create("...");

stringa = "123456FF";

arr = [0x12, 0x34, 0x56, 0xFF];

WriteBytes(f, stringa) >> scrive 12 34 56 FF

WriteBytes(f, stringa, true) >> scrive FF 56 34 12

WriteBytes(f, arr) >> scrive 12 34 56 FF

WriteBytes(f, arr, true) >> scrive FF 56 34 12

Credo comunque di non aver studiato a fondo il file, perchè la storia dei byte non l'ho attenzionata.

La funzione read funziona in modo semplicissimo,

apre il file, e prende tutto il testo del file esclusi i primi 24 byte e gli ultimi 10 byte. L'unico problema l'ha dato il carattere "a capo" che non sempre è registrato con la stessa sequenza di byte, viene fatto allora il controllo e quando viene identificata una determinata sequenza viene sostituita con i byte 13, 10 (in decimale).

Non ho capito il discorso dell'a capo... cioè viene codificato con bytes diversi?!

Edit: spè forse ho capito. Praticamente l'a capo a seconda dell'applicazione che scrive sulla clip, può essere codificato da [14,32,40], [28,64,168] o [168] ?? Ma come li hai trovati?? Io non c'avevo pensato all'a capo in effetti...... ce ne potrebbero essere anche altri?!?

Edit2: ma non esiste un qualche doc che spieghi la struttura ufficiale di questo file?!?!?

Edited by Gygabyte017
Link to comment
Share on other sites

Si, esatto, gli "a capo" sono identificati da questi 3...

Li ho visti perchè sapevo dove si trovavano e ho visto che li mette in questi 3 modi diversi (sinceramente non ne capisco il motivo né il perchè utilizzi l'uno o l'altro).

Ho provato anche con testi lunghi e sembra che funzioni.

Forse però esiste un'ulteriore codifica per l'"a capo" perchè mi da ancora un problema...

Controllo subito...

risolto, mancava il controllo per [14,32,41]

ho riallegato il file corretto b)

Edited by masmil1988
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...

Important Information

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy