PDA

Visualizza la versione completa : [C++] Conoscere il nome del file aperto da un programma


Nebula88
08-05-2010, 17:05
Salve a tutti! :zizi:
La mia domanda è semplice, la risposta forse un po' meno:

Ipotizziamo di avere un proramma aperto (del quale magari conosciamo il nome del processo..)
Come capire quale file sta usando??

Esempio: se ho MS Word aperto sul file input.doc,
come faccio a conoscerne il nome?? (io.doc)

Grazie per il tempo :)

Nebula88
08-05-2010, 17:09
In realtà quello che mi interessa veramente è sapere quando HA FINITO di lavorare su quel file,
quindi potrei aprirlo io chiamandolo da console, per esempio: >msword.exe input.doc
e poi mettermi in attesa per vedere quando tale processo termina, ma come implemento tutto ciò?
Tuttavia così facendo sorge un ulteriore problema:
l'utente potrebbe chiudere solo il file aperto (input.doc) senza chiudere word, e aprire da lì un altro file: questo non dovrebbe poter succedere senza che io me ne accorga!

linoma
08-05-2010, 17:46
Se provi a cercare nelle API della shell di Windows ce ne qualcuno che ti notifica sui cambiamenti dei files. Forse ti potrebbe tornare utile.

oregon
08-05-2010, 19:58
Originariamente inviato da Nebula88

quindi potrei aprirlo io chiamandolo da console, per esempio: >msword.exe input.doc
e poi mettermi in attesa per vedere quando tale processo termina, ma come implemento tutto ciò?


Con la CreateProcess e la WaitForSingleObject


Tuttavia così facendo sorge un ulteriore problema:
l'utente potrebbe chiudere solo il file aperto (input.doc) senza chiudere word, e aprire da lì un altro file: questo non dovrebbe poter succedere senza che io me ne accorga!

Questo vuol dire che le specifiche che hai indicato prima non sono corrette. Quindi l'utente può non chiudere il processo ma solo il file. Quindi devi tentare di aprire periodicamente il file fino a che non hai più errore ...

Nebula88
09-05-2010, 10:27
Non conosco le API di Windows anche se immaginavo mi sarebbero servite per una cosa del genere, c'è qualcosa di particolare che devo conoscere?
Qualche consiglio sul materiale da studiare?

Grazie :)

oregon
09-05-2010, 10:38
Ad esempio, quelle che ti ho indicato, per un tipo di soluzione, oppure, sempre ad esempio, la

ReadDirectoryChangesW
http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx

per la strada delle notifiche dei cambiamenti ...

Nebula88
09-05-2010, 10:54
Ieri avevo provato a scaricare questo esempio (la cui funziona è similare al tuo link) http://www.relisoft.com/win32/watcher.html

Tuttavia non sono riuscito a compilarlo su codebloks perchè ricevevo un errore sulc odice stesso.
Poi ho provato su Visual Studio 2010 Express e ho avuto un altro errore.

Adesso il problema è che io non ho proprio idea di come funzionino le API, delle librerie che servono, ecc..

C'è qualche accorgimento in particolare che devo conoscere??

In ogni caso pensavo di studiare da qui:
http://www.aleax.it/TutWin32/tc.htm

La mia paura è che non sia materiale troppo vecchio..

linoma
09-05-2010, 11:11
Potresti vedere, se usi prodotti di un certo calibro, se hanno delle interfacce di notifica.

Nebula88
09-05-2010, 11:20
Si tratta di Openproj, è in Java! http://openproj.org/

Ora che ci penso, gira su una JVM..
Dunque non so se appare il processo vero e proprio! o no!?

linoma
09-05-2010, 11:24
Alla VM java puoi accedere ance esternamente da c etc etc dovresti xo cercare su internet, JNI.

Loading