Per fare ciò bisogna usare un programma esterno presente su windows che setta gli attributi e si chiama attrib.exe.
Avvieremo il programma con
Codice: Seleziona tutto
execute_program(...);
Questi sono gli attributi da usare assieme agli operatori + e - da passare come argomenti al programma:ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename]
Quindi useremo execute_program in questo modo:+ Setta un attributo.
- Toglie l'attributo.
R Read-only.
A File d'archivio.
S File di sistema.
H File nascosto.
Codice: Seleziona tutto
execute_program(environment_get_variable("windir")+"\system32\attrib.exe", "+h c:\ciao.txt",0);
La funzione environment_get_variable restituisce la posizione della cartella di windows sottoforma di stringa.
Utile per reperire il programma attrib.exe (per esempio se uno ha windows su F: o altre unità).
Rendiamo la funzione più efficace creando uno script e passando questi argomenti:
argoment0 : il file corredato di path a cui dobbiamo cambiare attributi
argument1 : il comando attributo da settare (è una stringa) per esempio >>> "+s"
Codice: Seleziona tutto
{
//Usiamo ATTRIB
//argument0 = file con percorso es.: c:\dir\file.ext
//argument1 = stringa contenente + o - per settare o togliere e
//seguita da una lettera che identifica l'attributo
if(file_exists(argument0)){
execute_program(environment_get_variable("windir")+'\system32\attrib.exe',argument1+' "'+argument0+'"',0);
}else{
show_message("Non esiste il file!");
}
}
Codice: Seleziona tutto
cambia_attributo(working_directory+"\musiccube.mid","+r"); //rendo di sola lettura il file
argument0 viene inviato come stringa ovvero è seguito e preceduto da i doppi apici (") poichè se il path ha degli spazi il file non viene trovato. Su GM la stringa è contenuta invece tra ' per differenziare.
Altro:
Per leggere gli attributi potete invece utilizzare la funzione GM file_attributes(fname,attr)
Queste cose vanno solo se non siete in modalità sicura su GM.