J'essaie de d=E9placer un fichier avec l'API MoveFileEx, =E0=20
l'ex=E9cution, j'obtient un code erreur suivant: 123, Erreur=20
d=E9finie par l'application ou par l'objet.
Cela ne marche pas car MoveFileEx renvoie toujours 0, donc=20
=E9choue
Est-ce un probl=E8me de droit?
Si quelqu'un a une id=E9e, je le remecie beaucoup
Ci-dessous le squelette du code
D'avance merci
Assi
Private Sub CopyTempFile(sSource As String, sDestination=20
As String)
Dim fso As FileSystemObject, sPath$, oFolder As=20
IWshRuntimeLibrary.Folder
Dim lRet As Long
On Error GoTo CopyFileError
Set fso =3D CreateObject("Scripting.FileSystemObject")
Set oFolder =3D fso.CreateFolder("c:\Temporary")
sPath =3D oFolder.Path
If Right$(sPath, 1) <> "\" Then sPath =3D sPath & "\"
'Call fso.CopyFile(sSource, sPath, True)
lRet =3D MoveFileEx(sSource, sPath, _=20
MOVEFILE_REPLACE_EXISTING Or MOVEFILE_DELAY_UNTIL_REBOOT)
If lRet =3D 0 Then
Err.Raise Err.LastDllError
End If
ExitSub:
Set fso =3D Nothing
Set oFolder =3D Nothing
Exit Sub
CopyFileError:
If Err.Number =3D 58 Then
fso.DeleteFolder "C:\Temporary"
Resume
Else
MsgBox Err & ": " & Err.Description
GoTo ExitSub
End If
End Sub
Noter que sSource est du type '\\ServName\Dossier\Dossier2
\Fichier'
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Il eciste des commandes VB implantées pour le système de fichier et les APIs...
fso.CreateFolder("c:Temporary")
MkDir
fso.CopyFile
FileCopy
fso.DeleteFolder
RmDir
Et même encore Kill, Open, Name...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Assi wrote:
Bonjour,
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123, Erreur définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0, donc échoue
Est-ce un problème de droit?
Si quelqu'un a une idée, je le remecie beaucoup Ci-dessous le squelette du code
D'avance merci
Assi
Private Sub CopyTempFile(sSource As String, sDestination As String) Dim fso As FileSystemObject, sPath$, oFolder As IWshRuntimeLibrary.Folder Dim lRet As Long On Error GoTo CopyFileError Set fso = CreateObject("Scripting.FileSystemObject") Set oFolder = fso.CreateFolder("c:Temporary") sPath = oFolder.Path If Right$(sPath, 1) <> "" Then sPath = sPath & "" 'Call fso.CopyFile(sSource, sPath, True) lRet = MoveFileEx(sSource, sPath, _ MOVEFILE_REPLACE_EXISTING Or MOVEFILE_DELAY_UNTIL_REBOOT) If lRet = 0 Then Err.Raise Err.LastDllError End If ExitSub: Set fso = Nothing Set oFolder = Nothing Exit Sub CopyFileError: If Err.Number = 58 Then fso.DeleteFolder "C:Temporary" Resume Else MsgBox Err & ": " & Err.Description GoTo ExitSub End If End Sub
Noter que sSource est du type 'ServNameDossierDossier2 Fichier'
Salut,
NE PAS UTILISER LE FSO EN VB ==>
http://faq.vb.free.fr/index.php?question6
Il eciste des commandes VB implantées pour le système de fichier et les
APIs...
fso.CreateFolder("c:Temporary")
MkDir
fso.CopyFile
FileCopy
fso.DeleteFolder
RmDir
Et même encore Kill, Open, Name...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Assi wrote:
Bonjour,
J'essaie de déplacer un fichier avec l'API MoveFileEx, à
l'exécution, j'obtient un code erreur suivant: 123, Erreur
définie par l'application ou par l'objet.
Cela ne marche pas car MoveFileEx renvoie toujours 0, donc
échoue
Est-ce un problème de droit?
Si quelqu'un a une idée, je le remecie beaucoup
Ci-dessous le squelette du code
D'avance merci
Assi
Private Sub CopyTempFile(sSource As String, sDestination
As String)
Dim fso As FileSystemObject, sPath$, oFolder As
IWshRuntimeLibrary.Folder
Dim lRet As Long
On Error GoTo CopyFileError
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.CreateFolder("c:Temporary")
sPath = oFolder.Path
If Right$(sPath, 1) <> "" Then sPath = sPath & ""
'Call fso.CopyFile(sSource, sPath, True)
lRet = MoveFileEx(sSource, sPath, _
MOVEFILE_REPLACE_EXISTING Or MOVEFILE_DELAY_UNTIL_REBOOT)
If lRet = 0 Then
Err.Raise Err.LastDllError
End If
ExitSub:
Set fso = Nothing
Set oFolder = Nothing
Exit Sub
CopyFileError:
If Err.Number = 58 Then
fso.DeleteFolder "C:Temporary"
Resume
Else
MsgBox Err & ": " & Err.Description
GoTo ExitSub
End If
End Sub
Noter que sSource est du type '\ServNameDossierDossier2
Fichier'
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Il eciste des commandes VB implantées pour le système de fichier et les APIs...
fso.CreateFolder("c:Temporary")
MkDir
fso.CopyFile
FileCopy
fso.DeleteFolder
RmDir
Et même encore Kill, Open, Name...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Assi wrote:
Bonjour,
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123, Erreur définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0, donc échoue
Est-ce un problème de droit?
Si quelqu'un a une idée, je le remecie beaucoup Ci-dessous le squelette du code
D'avance merci
Assi
Private Sub CopyTempFile(sSource As String, sDestination As String) Dim fso As FileSystemObject, sPath$, oFolder As IWshRuntimeLibrary.Folder Dim lRet As Long On Error GoTo CopyFileError Set fso = CreateObject("Scripting.FileSystemObject") Set oFolder = fso.CreateFolder("c:Temporary") sPath = oFolder.Path If Right$(sPath, 1) <> "" Then sPath = sPath & "" 'Call fso.CopyFile(sSource, sPath, True) lRet = MoveFileEx(sSource, sPath, _ MOVEFILE_REPLACE_EXISTING Or MOVEFILE_DELAY_UNTIL_REBOOT) If lRet = 0 Then Err.Raise Err.LastDllError End If ExitSub: Set fso = Nothing Set oFolder = Nothing Exit Sub CopyFileError: If Err.Number = 58 Then fso.DeleteFolder "C:Temporary" Resume Else MsgBox Err & ": " & Err.Description GoTo ExitSub End If End Sub
Noter que sSource est du type 'ServNameDossierDossier2 Fichier'
scraper
Dans son message e8b$,
ng nous a écrit/ répondu :
Salut,
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
merci .... et désolé de m'imiscer ....
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Dans son message e8b$bzP5DHA.2404@TK2MSFTNGP12.phx.gbl,
ng nous a écrit/ répondu :
Salut,
NE PAS UTILISER LE FSO EN VB ==>
http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _
"rundll32.exe setupapi,InstallHinfSection DefaultInstall _
132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
merci .... et désolé de m'imiscer ....
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
merci .... et désolé de m'imiscer ....
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Zoury
Salut Assi! :O)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123, Erreur définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0, donc échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu obtiens une erreur 123?
où survient l'erreur 123? (ce sont deux problèmes distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas, utilise la fonction ci-bas (désolé pour les longues lignes): '*** ' déclarations nécessaire à la fonction Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long = &H200& Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000& Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
' fonction Public Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = Space$(255) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, lErrorNumber, LANG_NEUTRAL, FormatMessage, 255, ByVal 0&) FormatMessage = Left$(FormatMessage, InStr(FormatMessage, vbNewLine) - 1) End Function '***
tu l'utilise comme suit : '*** ' si égal 0 il y a eu une erreur If (MoveFileEx(sExistingFile, sNewFile, MY_FLAGS) = 0) Then ' on affiche l'erreur Debug.Print FormatMessage(Err.LastDllError) End If '***
tu devrais connaître la cause de l'échec assez rapidement.. (ça fonctionne pour tous les APIs qui renvoit le numéro de l'erreur système)
Merci de poster les réponses au groupe afin d'en faire profiter à tous
Salut Assi! :O)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à
l'exécution, j'obtient un code erreur suivant: 123, Erreur
définie par l'application ou par l'objet.
Cela ne marche pas car MoveFileEx renvoie toujours 0, donc
échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu obtiens une erreur
123?
où survient l'erreur 123? (ce sont deux problèmes distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas, utilise la fonction
ci-bas (désolé pour les longues lignes):
'***
' déclarations nécessaire à la fonction
Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long = &H200&
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000&
Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _
Lib "kernel32" _
( _
ByVal dwFlags As Long, _
ByRef lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
ByRef Arguments As Long _
) As Long
' fonction
Public Function FormatMessage(ByRef lErrorNumber As Long) As String
FormatMessage = Space$(255)
Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, lErrorNumber,
LANG_NEUTRAL, FormatMessage, 255, ByVal 0&)
FormatMessage = Left$(FormatMessage, InStr(FormatMessage, vbNewLine) -
1)
End Function
'***
tu l'utilise comme suit :
'***
' si égal 0 il y a eu une erreur
If (MoveFileEx(sExistingFile, sNewFile, MY_FLAGS) = 0) Then
' on affiche l'erreur
Debug.Print FormatMessage(Err.LastDllError)
End If
'***
tu devrais connaître la cause de l'échec assez rapidement.. (ça fonctionne
pour tous les APIs qui renvoit le numéro de l'erreur système)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123, Erreur définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0, donc échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu obtiens une erreur 123?
où survient l'erreur 123? (ce sont deux problèmes distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas, utilise la fonction ci-bas (désolé pour les longues lignes): '*** ' déclarations nécessaire à la fonction Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long = &H200& Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000& Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
' fonction Public Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = Space$(255) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, lErrorNumber, LANG_NEUTRAL, FormatMessage, 255, ByVal 0&) FormatMessage = Left$(FormatMessage, InStr(FormatMessage, vbNewLine) - 1) End Function '***
tu l'utilise comme suit : '*** ' si égal 0 il y a eu une erreur If (MoveFileEx(sExistingFile, sNewFile, MY_FLAGS) = 0) Then ' on affiche l'erreur Debug.Print FormatMessage(Err.LastDllError) End If '***
tu devrais connaître la cause de l'échec assez rapidement.. (ça fonctionne pour tous les APIs qui renvoit le numéro de l'erreur système)
Merci de poster les réponses au groupe afin d'en faire profiter à tous
François Picalausa
Bonjour/soir,
Tu peux essayer la même chose avec Shell (de VB) Sinon, avec shell execute, vois si tu ne peux pas passer le chemin complet de l'inf (lpfile - 3ème paramètre) et comme "verb" (le deuxième paramètre qui prend par exemple open, print, ...) "Install" (repris de la base de registre)
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes: HK_CL_ROOT |-.ext/appid |-shell |-verb1 |-verb2 ...
et pour exécuter une dll en tant qu'application ? en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
Bonjour/soir,
Tu peux essayer la même chose avec Shell (de VB)
Sinon, avec shell execute, vois si tu ne peux pas passer le chemin complet
de l'inf (lpfile - 3ème paramètre) et comme "verb" (le deuxième paramètre
qui prend par exemple open, print, ...) "Install" (repris de la base de
registre)
Les verbs peuvent être retrouvés dans la base de registre dans les clés
suivantes:
HK_CL_ROOT
|-.ext/appid
|-shell
|-verb1
|-verb2
...
"scraper" <scraper@pasdespam> a écrit dans le message de
news:eItCUNS5DHA.2064@TK2MSFTNGP11.phx.gbl
et pour exécuter une dll en tant qu'application ?
en temps normal, on fait CreateObject("Wscript.Shell").Run _
"rundll32.exe setupapi,InstallHinfSection DefaultInstall _
132 C:Toto.inf"
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
Tu peux essayer la même chose avec Shell (de VB) Sinon, avec shell execute, vois si tu ne peux pas passer le chemin complet de l'inf (lpfile - 3ème paramètre) et comme "verb" (le deuxième paramètre qui prend par exemple open, print, ...) "Install" (repris de la base de registre)
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes: HK_CL_ROOT |-.ext/appid |-shell |-verb1 |-verb2 ...
et pour exécuter une dll en tant qu'application ? en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
scraper
Dans son message ,
François Picalausa nous a écrit/ répondu :
Bonjour/soir,
Tu peux essayer la même chose avec Shell (de VB) Sinon, avec shell execute, vois si tu ne peux pas passer le chemin complet de l'inf (lpfile - 3ème paramètre) et comme "verb" (le deuxième paramètre qui prend par exemple open, print, ...) "Install" (repris de la base de registre)
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes: HK_CL_ROOT |-.ext/appid |-shell |-verb1 |-verb2
salut !
d'acc, merci, j'essaie ça ... ;-)
à +
...
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Dans son message uBTiCKX5DHA.2572@TK2MSFTNGP09.phx.gbl,
François Picalausa nous a écrit/ répondu :
Bonjour/soir,
Tu peux essayer la même chose avec Shell (de VB)
Sinon, avec shell execute, vois si tu ne peux pas passer le chemin
complet de l'inf (lpfile - 3ème paramètre) et comme "verb" (le
deuxième paramètre qui prend par exemple open, print, ...) "Install"
(repris de la base de registre)
Les verbs peuvent être retrouvés dans la base de registre dans les
clés suivantes:
HK_CL_ROOT
|-.ext/appid
|-shell
|-verb1
|-verb2
salut !
d'acc, merci, j'essaie ça ... ;-)
à +
...
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
Tu peux essayer la même chose avec Shell (de VB) Sinon, avec shell execute, vois si tu ne peux pas passer le chemin complet de l'inf (lpfile - 3ème paramètre) et comme "verb" (le deuxième paramètre qui prend par exemple open, print, ...) "Install" (repris de la base de registre)
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes: HK_CL_ROOT |-.ext/appid |-shell |-verb1 |-verb2
salut !
d'acc, merci, j'essaie ça ... ;-)
à +
...
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
scraper
Dans son message ,
François Picalausa nous a écrit/ répondu :
Bonjour/soir,
Re !
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes: HK_CL_ROOT |-.ext/appid |-shell |-verb1 |-verb2
je trouve pas de ".ext/ ...etc...." dans mon HK_Classe_Root ??
...
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Dans son message uBTiCKX5DHA.2572@TK2MSFTNGP09.phx.gbl,
François Picalausa nous a écrit/ répondu :
Bonjour/soir,
Re !
Les verbs peuvent être retrouvés dans la base de registre dans les
clés suivantes:
HK_CL_ROOT
|-.ext/appid
|-shell
|-verb1
|-verb2
je trouve pas de ".ext/ ...etc...." dans mon HK_Classe_Root ??
...
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
Les verbs peuvent être retrouvés dans la base de registre dans les clés suivantes:
Assi
Bonjour Yanick,
Merci pour le tuyau, car cela m'a permit de savoir la cause de l'erreur qui est la suivante: '123: Syntaxe du nom de fichier, de repertoire ou de volume incorrecte.' Mais ce que je comprends pas c'est que sFileSource est du type 'ServeurDossierFile.exe', sFileDestination est en local sous forme 'C:Temporary'. Est-ce parce qu'il s'agit d'un chemin UNC? D'avance merci. Assi
-----Message d'origine----- Salut Assi! :O)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123,
Erreur
définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0,
donc
échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu
obtiens une erreur
123?
où survient l'erreur 123? (ce sont deux problèmes
distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas,
utilise la fonction
ci-bas (désolé pour les longues lignes): '*** ' déclarations nécessaire à la fonction Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long =
&H200&
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000& Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
' fonction Public Function FormatMessage(ByRef lErrorNumber As Long)
Merci de poster les réponses au groupe afin d'en faire
profiter à tous
.
Bonjour Yanick,
Merci pour le tuyau, car cela m'a permit de savoir la
cause de l'erreur qui est la suivante:
'123: Syntaxe du nom de fichier, de repertoire ou de
volume incorrecte.'
Mais ce que je comprends pas c'est que sFileSource est du
type '\ServeurDossierFile.exe', sFileDestination est en
local sous forme 'C:Temporary'.
Est-ce parce qu'il s'agit d'un chemin UNC?
D'avance merci.
Assi
-----Message d'origine-----
Salut Assi! :O)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à
l'exécution, j'obtient un code erreur suivant: 123,
Erreur
définie par l'application ou par l'objet.
Cela ne marche pas car MoveFileEx renvoie toujours 0,
donc
échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu
obtiens une erreur
123?
où survient l'erreur 123? (ce sont deux problèmes
distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas,
utilise la fonction
ci-bas (désolé pour les longues lignes):
'***
' déclarations nécessaire à la fonction
Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long =
&H200&
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000&
Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _
Lib "kernel32" _
( _
ByVal dwFlags As Long, _
ByRef lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
ByRef Arguments As Long _
) As Long
' fonction
Public Function FormatMessage(ByRef lErrorNumber As Long)
Merci pour le tuyau, car cela m'a permit de savoir la cause de l'erreur qui est la suivante: '123: Syntaxe du nom de fichier, de repertoire ou de volume incorrecte.' Mais ce que je comprends pas c'est que sFileSource est du type 'ServeurDossierFile.exe', sFileDestination est en local sous forme 'C:Temporary'. Est-ce parce qu'il s'agit d'un chemin UNC? D'avance merci. Assi
-----Message d'origine----- Salut Assi! :O)
J'essaie de déplacer un fichier avec l'API MoveFileEx, à l'exécution, j'obtient un code erreur suivant: 123,
Erreur
définie par l'application ou par l'objet. Cela ne marche pas car MoveFileEx renvoie toujours 0,
donc
échoue
Comment peux-tu savoir que MoveFileEx te renvoit 0 si tu
obtiens une erreur
123?
où survient l'erreur 123? (ce sont deux problèmes
distincts on dirait..)
si tu veux savoir pourquoi l'API ne fonctionne pas,
utilise la fonction
ci-bas (désolé pour les longues lignes): '*** ' déclarations nécessaire à la fonction Private Const FORMAT_MESSAGE_IGNORE_INSERTS As Long =
&H200&
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000& Private Const LANG_NEUTRAL As Long = &H0&
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
' fonction Public Function FormatMessage(ByRef lErrorNumber As Long)
Merci de poster les réponses au groupe afin d'en faire
profiter à tous
.
ng
Salut, Il ne s'agt pas d'une dll mais d'un exe : rundll32.exe.
Utilise Shell ou l'API ShellExecute.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
scraper wrote:
Dans son message e8b$,
ng nous a écrit/ répondu :
Salut,
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
merci .... et désolé de m'imiscer ....
Salut,
Il ne s'agt pas d'une dll mais d'un exe : rundll32.exe.
Utilise Shell ou l'API ShellExecute.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
scraper wrote:
Dans son message e8b$bzP5DHA.2404@TK2MSFTNGP12.phx.gbl,
ng nous a écrit/ répondu :
Salut,
NE PAS UTILISER LE FSO EN VB ==>
http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _
"rundll32.exe setupapi,InstallHinfSection DefaultInstall _
132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
Salut, Il ne s'agt pas d'une dll mais d'un exe : rundll32.exe.
Utilise Shell ou l'API ShellExecute.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
scraper wrote:
Dans son message e8b$,
ng nous a écrit/ répondu :
Salut,
NE PAS UTILISER LE FSO EN VB ==> http://faq.vb.free.fr/index.php?question6
Et même encore Kill, Open, Name...
salut !
oui ....
je rebondis ....
et pour exécuter une dll en tant qu'application ?
(ex pour exécuter un fichier inf ;-)
en temps normal, on fait CreateObject("Wscript.Shell").Run _ "rundll32.exe setupapi,InstallHinfSection DefaultInstall _ 132 C:Toto.inf"
mais avec les API ??
j'ai essayer de bidouiller ShellExecute .... sans succès ??!
merci .... et désolé de m'imiscer ....
scraper
Dans son message %,
François Picalausa nous a écrit/ répondu :
.ext représente une extension quelconque appid est une appid quelconque ;-)
Par exemple, on pourrait avoir HK_CR > .txt > Shell > les verbs Ou HK_CR > .inf > (default)=inffile HKCR > infile > Shell > les verbs
Dans le second cas, "inffile" est un appid
re !
oups !
j'me sens con, là .... j'avais pas compris ça comme ça !
je pensais que .ext était une entrée du Registre qui listait les actions possibles en VB avec ShellExecute ! lol
faut que j'aille me reposer, moi .... :-)
sinon, j'ai trouvé ça, dans API-Guide : ---- · lpOperation Pointer to a null-terminated string that specifies the operation to perform. The following operation strings are valid: "open" The function opens the file specified by lpFile. The file can be an executable file or a document file. The file can be a folder to open. "print" The function prints the file specified by lpFile. The file should be a document file. If the file is an executable file, the function opens the file, as if "open" had been specified. "explore" The function explores the folder specified by lpFile.
The lpOperation parameter can be NULL. In that case, the function opens the file specified by lpFile. ------
il semble que seuls ces paramètres soient dispo ?
je vais quand même jeter un oeil au Registre , merci !
si tu veux bien, en outre, me donner quelques précisions complémentaires, SVP, sur l'emploi du Shell de VB ??
en VBS, j'arrivais par exemple à faire pauser l'exécution de la méthode .run du Shell (Shell.Run "mon appli",1, True ) ....
comment faire de même en VB ??
(en d'autres termes, comment faire une exécution synchrone ?)
Comment intercepter les erreurs générées durant l'exécution de Shell ? (jai essayé avec On Error Resume Next : If err then ..... mais ça joue pas ?)
encore un grand merci à toi ...
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Dans son message %23rWu5uY5DHA.3548@TK2MSFTNGP11.phx.gbl,
François Picalausa nous a écrit/ répondu :
.ext représente une extension quelconque
appid est une appid quelconque ;-)
Par exemple, on pourrait avoir
HK_CR > .txt > Shell > les verbs
Ou
HK_CR > .inf > (default)=inffile
HKCR > infile > Shell > les verbs
Dans le second cas, "inffile" est un appid
re !
oups !
j'me sens con, là .... j'avais pas compris ça comme ça !
je pensais que .ext était une entrée du Registre qui listait les actions possibles en VB avec ShellExecute ! lol
faut que j'aille me reposer, moi .... :-)
sinon, j'ai trouvé ça, dans API-Guide :
----
· lpOperation
Pointer to a null-terminated string that specifies the operation to perform. The following operation strings are valid:
"open"
The function opens the file specified by lpFile. The file can be an executable file or a document file. The file can be a folder to
open.
"print"
The function prints the file specified by lpFile. The file should be a document file. If the file is an executable file, the
function opens the file, as if "open" had been specified.
"explore"
The function explores the folder specified by lpFile.
The lpOperation parameter can be NULL. In that case, the function opens the file specified by lpFile.
------
il semble que seuls ces paramètres soient dispo ?
je vais quand même jeter un oeil au Registre , merci !
si tu veux bien, en outre, me donner quelques précisions complémentaires, SVP, sur l'emploi du Shell de VB ??
en VBS, j'arrivais par exemple à faire pauser l'exécution de la méthode .run du Shell (Shell.Run "mon appli",1, True ) ....
comment faire de même en VB ??
(en d'autres termes, comment faire une exécution synchrone ?)
Comment intercepter les erreurs générées durant l'exécution de Shell ?
(jai essayé avec On Error Resume Next : If err then ..... mais ça joue pas ?)
encore un grand merci à toi ...
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
.ext représente une extension quelconque appid est une appid quelconque ;-)
Par exemple, on pourrait avoir HK_CR > .txt > Shell > les verbs Ou HK_CR > .inf > (default)=inffile HKCR > infile > Shell > les verbs
Dans le second cas, "inffile" est un appid
re !
oups !
j'me sens con, là .... j'avais pas compris ça comme ça !
je pensais que .ext était une entrée du Registre qui listait les actions possibles en VB avec ShellExecute ! lol
faut que j'aille me reposer, moi .... :-)
sinon, j'ai trouvé ça, dans API-Guide : ---- · lpOperation Pointer to a null-terminated string that specifies the operation to perform. The following operation strings are valid: "open" The function opens the file specified by lpFile. The file can be an executable file or a document file. The file can be a folder to open. "print" The function prints the file specified by lpFile. The file should be a document file. If the file is an executable file, the function opens the file, as if "open" had been specified. "explore" The function explores the folder specified by lpFile.
The lpOperation parameter can be NULL. In that case, the function opens the file specified by lpFile. ------
il semble que seuls ces paramètres soient dispo ?
je vais quand même jeter un oeil au Registre , merci !
si tu veux bien, en outre, me donner quelques précisions complémentaires, SVP, sur l'emploi du Shell de VB ??
en VBS, j'arrivais par exemple à faire pauser l'exécution de la méthode .run du Shell (Shell.Run "mon appli",1, True ) ....
comment faire de même en VB ??
(en d'autres termes, comment faire une exécution synchrone ?)
Comment intercepter les erreurs générées durant l'exécution de Shell ? (jai essayé avec On Error Resume Next : If err then ..... mais ça joue pas ?)
encore un grand merci à toi ...
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm