PDA

View Full Version : [vb6] integrare immagine nel programma


Furla
20-09-2007, 17:26
non sono un'esperto di vb6, può darsi che quello che voglio fare sia impossibile, come che sia una cretinata...

il mio programma deve stampare delle stringhe affiancate da un'immagine.
fin qui è semplice, ho già fatto un programma del genere in cui stampo tramite l'oggetto printer usando la "loadpicture", passandogli path e coordinate dell'immagine.

il problema è che tale immagine deve essere proprio quella, e l'utente deve non avere la possibilità di stampare col mio programma quelle stringhe affiancate ad un'immagine che non sia quella originale.

se quindi all'oggetto printer passo il path dell'immagine, l'utente potrebbe sostituire, nella cartella interessata, l'immagine originale con un'altra, e riuscire a stamparla al posto dell'originale.

per impedirlo dovrei fare in modo che l'immagine sia "dentro" l'exe, oppure che il programma effettui un controllo (hash, sui colori dei pixel, o altro) sull'immagine da stampare in modo che proceda con la stampa solo se l'immagine nel path è quella originale.
preferirei la prima opzione ma dipende dalla complessità della cosa.

Furla
22-09-2007, 10:27
up, possibile che non esista neanche un metodo per controllare un file? ma i programmi che verificano l'integrità dei file e che si accorgono anche se cambia un solo bit come fanno?

cionci
22-09-2007, 12:48
http://visualbasic.about.com/od/usevb6/a/ResVB6.htm

Il problema è che anche le risorse sono facilmente modificabili ;)

Furla
23-09-2007, 08:23
se non ho capito male il file .res è esterno all'exe del programma, quindi servirebe un controllo per verificare che il .res sia quello originale...

ma emule, ad esempio, che per distinguere i files ra loro usa una stringa hash di 32 caratteri, come fa a calcolarla?

cionci
23-09-2007, 08:41
Non so sinceramente se dopo il file resta esterno o meno. In ogni caso esterno o interno cambia poco, basta un resource editor per modificarlo.
Per calcolare l'hash ti basta un'implementazione in VB6 dell' algoritmo apposito, come ad esempio MD5 o SHA1.

Guarda qui: http://www.planetsourcecode.com/vb/scripts/BrowseCategoryOrSearchResults.asp?optSort=Alphabetical&txtCriteria=md5&blnWorldDropDownUsed=TRUE&txtMaxNumberOfEntriesPerPage=10&blnResetAllVariables=TRUE&lngWId=1

Su VB avevo una volta provato questo: http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=50290&lngWId=1