Aller au contenu

Déclencher une copie de fichiers de l'explorer


njoyard

Messages recommandés

Salut !

Je voudrais lancer une commande Windows qui déclenche un déplacement de fichier. Je programme en PHP mais je poste dans cette section car ce que je cherche n'est pas spécifique au php. Le but de mon script est de déplacer des fichiers, parfois d'un disque dur à un autre. En fait, le problème est que si j'utilise une fonction du langage pour ce faire (par exemple rename(), que ce soit en PHP ou en C d'ailleurs), c'est le langage qui va gérer le déplacement, ce qui implique que l'exécution va attendre que ce déplacement soit terminé pour continuer.

Du coup ce que j'aimerais faire c'est lancer une commande windows (avec exec() en PHP ou system() en C) qui demande à explorer.exe de déplacer le fichier, comme si j'avais fait un drag'n drop, de manière à ce que mon prog déclenche le déplacement et continue son exécution sans attendre que ce soit terminé.

Je pourrais créer un .bat avec "move machin bidule" dedans et le lancer depuis mon script (ou un .vbs d'ailleurs), mais le problème c'est que je veux que ce soit l'explorer qui gère le déplacement (étant donné notamment que si par exemple SuperCopier est installé, je veux que ce soit lui qui prenne en charge l'opération).

Je pensais à une fonction de shell32 appellée via rundll32, mais je ne trouve pas laquelle...

Vous avez une idée ?

edit: j'ai trouvé SHFileOperationA dans shell32.dll, qui permet de faire ça. Mais elle prend une structure en argument, et je ne sais pas comment passer une structure via rundll32. Vous savez comment faire, ou bien je vais être obligé de faire un petit prog qui l'appelle ?

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

salut.

Dans l'api Windows, tu as deux fonctions CopyFile et MoveFile;

BOOL CopyFile( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists );

http://msdn.microsoft.com/library/default....fs/copyfile.asp

BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName);

http://msdn.microsoft.com/library/default....fs/movefile.asp

BOOL DeleteFile(LPCTSTR lpFileName);

les LPCTSTR c'est des char*...

Ca marche super bien. Pas besoin de faire compliqué...

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...