OVH Cloud OVH Cloud

API shfFormatDrive

24 réponses
Avatar
X
Bonjour,

Voici un code, celui de l'appel du formatage A, cependant, est-il
possible de l'automatiser, car là est le problème des API, il y a 4
interventions manuelles, 2 avant <démarrer> + message et 2 après message +
<fermer> ???

Private Declare Function SHFormatDrive Lib "shell32.dll" _
(ByVal hwnd As Long, ByVal drive As Integer, _
ByVal fmtID As Integer, ByVal options As Integer) As Long
Private Const SHFMT_ID_DEFAULT = 0
Dim Réponse As Long ' 0=ok, (-1)=erreur
'
Sub Form_Activate()
DoEvents
Réponse = SHFormatDrive(hwnd, 0, SHFMT_ID_DEFAULT, 1) ' 0 = complet, 1 =
rapide
Unload Form1
End
End Sub


--
Merci beaucoup, au revoir et à bientôt :o)
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------

4 réponses

1 2 3
Avatar
X
Mon petit Fred,

Je fais des logiciels pour des particuliers (vendu ou gratuits), qui
utilisent ça sur leur PC en monoposte donc, et monotâche (pour le logiciel),
je ne fais pas d'application ou routine pour des réseaux, je ne fais pas non
plus de BDD, enfin rarement, donc les utilisateurs ont généralement accès à
leur PC :o)


------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Fred" a écrit dans le message de news:

Dans : news:,
Fred disait :

Donc les utilisateurs doivent être administrateur du poste, ou au
moins Utilisateur avec être autorisés à écrire dans le program file.



Utilisateur *avec pouvoir pour* être autorisés ...

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Fred
Dans : news:,
X disait :

Je fais des logiciels pour des particuliers (vendu ou gratuits),
qui utilisent ça sur leur PC en monoposte donc, et monotâche (pour le
logiciel), je ne fais pas d'application ou routine pour des réseaux,
je ne fais pas non plus de BDD, enfin rarement, donc les utilisateurs
ont généralement accès à leur PC :o)



Comme vous voulez.
C'était de l'information. À prendre ou à laisser.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
Dans : news:,
X disait :

Ben dis donc, merci de ta proposition, mais tu es susceptible...



Ben non,

Désolé... De toute façon j'ai adopté le formatage,



Bien. Je crois que j'aurais fait de même.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
X
Merci, ça marche :o)



------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Jacques93" a écrit dans le message de news:

Bonjour X,
X a écrit :
[...]
Néanmoins, j'ai toujours un problème avec le kill, il supprime le
batch avant son exécution... Ce n'est pas grave dans l'absolu, mais quand
même ennuyeux de laisser un batch dangereux traîner sur des ordinateurs
(ceux des autres surtout)...
A part la solution tu timer mis sur un délai au pif, laissant le temps de
formater, les autres méthodes appliquées ne fonctionnent pas...



Si j'ai bien compris, le problème est que l'instruction 'Shell' rend tout
de suite la main, et que l'instruction 'Kill' qui suit est donc exécutée
avant la fin du batch.

Deux solutions (parmi d'autre, je suppose)

1 - tu ajoutes une référence à 'Windows Script Host Object Model'
(wshom.ocx) et tu adapte ton code comme ceci :

Dim wsh As WshShell

Set wsh = New WshShell
wsh.Run App.Path & "Format_A.bat", 6, True
Kill App.Path & "Format_A.bat"
Set wsh = Nothing

Le paramètre True de la méthode wsh.Run indique d'attendre la fin de
l'exécution avant de continuer. Détails ici :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp?frame=true


2 - Tu utilises les API :

ShellExecuteEx
et
WaitForSingleObject

un exemple ici, avec la procédure ExecAndWait :

http://www.xtremevbtalk.com/printthread.php?t096

(En bas de la page)



Une autre voie, tu fais un formattage à partir de l'API :

DeviceIOControl

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/deviceiocontrol.asp

avec les paramètres : IOCTL_DISK_FORMAT_TRACKS

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/ioctl_disk_format_tracks.asp

et FORMAT_PARAMETERS

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/format_parameters_str.asp

Mais là, ça demande quelques lignes de code ;-)

--
Cordialement,

Jacques.


1 2 3