PDA

Visualizza la versione completa : [C++]Sapere se una cartella è aperta


Donis
05-03-2012, 12:54
Salve a tutti :D volevo sapere come si potrebbe fare a scoprire se una cartella è aperta in c++ in ambiente windows, per aperta intendo che io faccio doppio click sulla cartella, questa si apre, poi apro il programma e lui mi dice "la cartella tal dei tali è aperta" poi se la chiudo lui cambia messaggio oppure boh, insomma mi fa capire che è stata chiusa... è possibile? magari utilizzando delle API...

oregon
05-03-2012, 13:29
Una cartella non ha uno stato di "aperta" ...

Se è visualizzata all'interno di explorer (o di altro programma) non è una cosa facilmente individuabile.

Donis
05-03-2012, 13:39
uffi.. :confused: quindi è cosa molto complessa... ma si potrebbe vedere il "nome" dei thread che appartengono a explorer? ora io non me ne intendo quindi sto solo facendo ipotesi, non so se si può vedere i thread contenuti in un processo ne so se un thread ha un nome.. mi pare abbia un numero che lo identifica.. uffi.. perchè volevo fare un programma che crea una cartella con al suo interno degli eseguibili, la apre e quando viene chiusa cioè quando l'utente ha finito, la cancelli..

oregon
05-03-2012, 13:44
Originariamente inviato da Donis
uffi.. :confused:

No ... i thread non hanno nome ... :madai!?:


perchè volevo fare un programma che crea una cartella con al suo interno degli eseguibili, la apre e quando viene chiusa cioè quando l'utente ha finito, la cancelli..

Non si è capito cosa vorresti fare ...

Donis
05-03-2012, 13:48
un programma che (quando avviato) crei una cartella con dei file dentro, la apra automaticamente e resti in attesa finchè la cartella è aperta... quando la cartella viene chiusa dall'utente che la sta usando il programma elimina la cartella che ha creato e si chiude..

sono stato più chiaro? :)

oregon
05-03-2012, 13:57
Puoi creare la cartella e metterci i file, puoi visualizzarne il contenuto con Explorer e anche rimanere in attesa finché non chiudi la finestra che hai aperto.

Quando la chiudi però, nessuno ti assicura che non sia utilizzata da un'altra parte e quindi nessuno ti assicura che tu possa eliminarla.

Donis
05-03-2012, 14:33
io ho provato e la cartella si cancella senza generare eccezioni ne alcunchè in c# e anche manualmente se provo a cancellare una cartalla quando l'ho già aperta mi si chiude e si cancella normalmente...

ardito86
05-03-2012, 14:38
Originariamente inviato da Donis
io ho provato e la cartella si cancella senza generare eccezioni ne alcunchè in c# e anche manualmente se provo a cancellare una cartalla quando l'ho già aperta mi si chiude e si cancella normalmente...
L'eccezione si verifica quando apri un file in sola lettura presente dentro la cartella. Se il file, o la cartella non esistono (in genere se il file non esiste) ti genererà l'eccezione.
Se provi a cancellare la cartella mentre il file è aperto, explorer non te lo permette perché ti dice che è utilizzata da qualche processo.

oregon
05-03-2012, 14:40
Ti avevo scritto

non sia utilizzata da un'altra parte

quindi prova a cancellarla se la utilizzi in un'altra finestra o se utilizzi un suo file ...

Per capirci, ad esempio, apri una finestra DOS con cmd e spostati sulla cartella con

cd c:\cartella

(ovviamente è un esempio).

Adesso prova a cancellare la cartella.

Donis
05-03-2012, 14:44
è beh ma è una semplice cartella con dentro degli eseguibili... è per proteggere il contenuto della cartella da chi non voglio che ci entri (perchè la codifico in un file ausiliario dal quale, con il mio programma, creo la cartella) e allo stesso tempo voglio impedire che qualcuno che ha usato la cartella si dimentichi di cancellarla... per questo sarebbe bello vedere quando viene chiusa perchè così posso codificarla nel file per salvare le modifiche e cancellarla..

Loading