OVH Cloud OVH Cloud

MoveFileEx PB

4 réponses
Avatar
Assi
Bonjour,

Permettez-moi de reposer la m=EAme question sur l'API=20
MoveFileEx
Voici le squelette de code
Sub DeplacerFichier()
Dim lRet&
Source =3D "C:\Temporary\MyEXE.exe"
Destination =3D "C:\Temporary\Temp1\MyEXE.exe"
lRet =3D MoveFileEx(Source, Destination, _
MOVEFILE_REPLACE_EXISTING Or =20
MOVEFILE_DELAY_UNTIL_REBOOT)
If lRet =3D 0 Then
Err.Raise Err.LastDllError, , FormatMessage
(Err.LastDllError)
End If
End Sub

FormatMessage est une m=E9thode pour renvoyer le message=20
correspondant =E0 Err.LastDllError
A l'ex=E9cution, j'ai l'erreur suivante:
87: Param=E8tre incorrect

Quelqu'un pourrait me dire o=F9 est le param=E8tre incorrect?
S'il vous aider moi.

Je vous remercie d'avance
ASSI

PS: Je travaille en W2K

4 réponses

Avatar
Zoury
Salut Assi! :O)

peut-on voir la déclaration de l'API et des constantes?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Assi" wrote in message
news:5dc201c3e5cb$0806a1c0$
Bonjour,

Permettez-moi de reposer la même question sur l'API
MoveFileEx
Voici le squelette de code
Sub DeplacerFichier()
Dim lRet&
Source = "C:TemporaryMyEXE.exe"
Destination = "C:TemporaryTemp1MyEXE.exe"
lRet = MoveFileEx(Source, Destination, _
MOVEFILE_REPLACE_EXISTING Or
MOVEFILE_DELAY_UNTIL_REBOOT)
If lRet = 0 Then
Err.Raise Err.LastDllError, , FormatMessage
(Err.LastDllError)
End If
End Sub

FormatMessage est une méthode pour renvoyer le message
correspondant à Err.LastDllError
A l'exécution, j'ai l'erreur suivante:
87: Paramètre incorrect

Quelqu'un pourrait me dire où est le paramètre incorrect?
S'il vous aider moi.

Je vous remercie d'avance
ASSI

PS: Je travaille en W2K
Avatar
Zoury
ReSalut!

Voici un exemple fonctionnel.. si ça peux t'aider..
'***
' Module1
Option Explicit

Private Const MOVEFILE_REPLACE_EXISTING As Long = &H1
Private Const MOVEFILE_DELAY_UNTIL_REBOOT As Long = &H4

Private Declare Function MoveFileEx _
Lib "kernel32" _
Alias "MoveFileExA" _
( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal dwFlags As Long _
) As Long

Private Sub Main()
If (MoveFileEx("c:test.txt", "c:testtest.txt", _
MOVEFILE_REPLACE_EXISTING Or _
MOVEFILE_DELAY_UNTIL_REBOOT) = 0) Then
Debug.Print FormatMessage(Err.LastDllError)
End If
End Sub
'***

tu lances l'exécution et redémarre l'ordinateur..
au *redémarrage* le fichier c:test.txt se retrouve ici : c:testtest.txt

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Assi
Bonjour,

Merci de votre réponse.
Les déclarations APIs et constantes sont les mêmes que les
votres. Ce matin, j'ai pu obtenir une réponse c'est-à-dire
avoir comme code retour de MoveFileEx 1, ce qui signifie
pas d'erreur. Mais après redémarrage de Windows, toujours
pas fichier copié dans le nouveau dossier et ce, malgré
plusieurs tentatives.
Faut-il se loger en tant qu'admin pour l'exécuter?
D'avance merci
Assi


-----Message d'origine-----
ReSalut!

Voici un exemple fonctionnel.. si ça peux t'aider..
'***
' Module1
Option Explicit

Private Const MOVEFILE_REPLACE_EXISTING As Long = &H1
Private Const MOVEFILE_DELAY_UNTIL_REBOOT As Long = &H4

Private Declare Function MoveFileEx _
Lib "kernel32" _
Alias "MoveFileExA" _
( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal dwFlags As Long _
) As Long

Private Sub Main()
If (MoveFileEx("c:test.txt", "c:testtest.txt", _
MOVEFILE_REPLACE_EXISTING Or _
MOVEFILE_DELAY_UNTIL_REBOOT) = 0) Then
Debug.Print FormatMessage(Err.LastDllError)
End If
End Sub
'***

tu lances l'exécution et redémarre l'ordinateur..
au *redémarrage* le fichier c:test.txt se retrouve ici :


c:testtest.txt

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire


profiter à tous


.



Avatar
Zoury
Salut Assi! :O)

Faut-il se loger en tant qu'admin pour l'exécuter?



pas nécessairement en tant qu'admin, mais tu dois avoir les droits
nécessaires..

tu dois avoir les droits d'accès en écriture sur cette clé de registre :
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerPendingFileRenameOperations

ainsi que l'accès en écriture sur le disque où tu envois la copie et l'accès
en lecture sur le fichier copié..

note aussi que le répertoire destination **doit exister** sinon la copie ne
fonctionne pas et tu ne reçois pas d'erreur..... ton erreur se trouve
peut-être là.. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous