Oppure

Loading
28/10/10 19:27
jaco94++
Salve a tutti ho un problema nel settare gli attributi file con le API di Windows o meglio il primo attributo riesco a settarlo il secondo o il terzo no ..
mi spiego meglio se io uso il seguente codice:
SetFileAttributes(nomefile,FILE_ATTRIBUTE_HIDDEN)

per far diventare un file nascosto me lo nasconde come è giusto che sia ma se poi uso:
SetFileAttributes(nomefile,FILE_ATTRIBUTE_READONLY)

torna un file visibile e si setta su readonly perchè non rimane nascosto ?
come posso fare ?

Grazie
aaa
28/10/10 20:39
HeDo

rispondo intuitivamente, perchè il secondo parametro è la mask di TUTTI i bit degli attributi, quindi se vuoi un file sia hidden che readonly devi fare

SetFileAttributes(nomefile,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY)

aaa
29/10/10 13:16
jaco94++
Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?
aaa
29/10/10 13:38
GuglielmoS
Postato originariamente da jaco94++:

Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?

Prova ad utilizzare una variabile che tiene conto dei FLAG correnti, così ti basta operare su di essa.
Esempio:
flags = FILE_ATTRIBUTE_HIDDEN;
SetFileAttributes(nomefile,flags);

flags |= FILE_ATTRIBUTE_READONLY;
SetFileAttributes(nomefile,flags);
aaa
29/10/10 15:07
HeDo
Postato originariamente da jaco94++:

Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?


beh, anche qui vado ad occhio: ci sarà sicuramente un'api chiamata GetFileAttributes che ti permette di ottenere la mask dei bit degli attributi, per sapere se un attributo è flaggato basta fare if (mask & ATTRIB), da li parti per implementare il toggle.
aaa