Lance defrag

Contenu du snippet

On ne peut plus faire defrag en auto sur W2k. Alors, voici Un petit bout de code pour réparer cet oubli.
Attention : J'ai deux disque, donc je le lance 2 fois. Ce code est a adapter à votre machine. Je compte l'amméliorer plus tard (pas le temp pour l'instant), mais il est suffisament simple pour que je vous le donne tel quel.

Utilise System.Windows.Forms.Form et Imports SysTimer = System.timers

Source / Exemple :


Public Class Form1

'Code MS non touché : #Region " Windows Form Designer generated code "

	Dim WithEvents lDefrag As New clsDefrag

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		lDefrag.LanceDefrag()
	End Sub

	Private Sub lDefrag_Etat(ByVal DfgEtat As ModuleDefrag.clsDefrag.EnumDefragEtat) Handles lDefrag.Etat
		If DfgEtat = ModuleDefrag.clsDefrag.EnumDefragEtat.Fini Then
			lDefrag.FermeDefrag()
			End
		End If
	End Sub

End Class

Module ModuleDefrag
	'Cette class contient le code qui lance defrag sur les 2 premiers disques.
	Public Class clsDefrag
		Public Enum EnumDefragEtat
			Fini
		End Enum
		Event Etat(ByVal DfgEtat As EnumDefragEtat)
		Dim ProcID As Integer
		Dim DfgEnd As Boolean		'Vrai quand dfg est fini.
		Dim WithEvents lTimer As New SysTimer.Timer
		Dim numDisk As Integer

		Public Sub New()
			'AddHandler lTimer.Elapsed, AddressOf OnTimedEvent
			lTimer.Interval = 1000
		End Sub

		Protected Overrides Sub Finalize()
			MyBase.Finalize()
		End Sub

		Public Sub LanceDefrag()
			' Pour C:
			OuvreDefrag()
		End Sub

		Private Sub OuvreDefrag()
			numDisk += 1
			If numDisk = 1 Then
				ProcID = Shell("mmc c:\winnt\system32\dfrg.msc", AppWinStyle.NormalFocus, True, 2000)
				SendKeys.SendWait("{TAB}")
			ElseIf numDisk = 2 Then
				AppActivate(ProcID)
				SendKeys.SendWait("{DOWN}")
			Else
				RaiseEvent Etat(EnumDefragEtat.Fini)
			End If
			AppActivate(ProcID)
			SendKeys.SendWait("%A")
			SendKeys.SendWait("D")
			lTimer.Start()
		End Sub

		Public Sub FermeDefrag()
			AppActivate(ProcID)
			SendKeys.SendWait("%{F4}")			 'Ferme defrag.
		End Sub

		Private Sub Enregistre()
			Try
				AppActivate("Défragmentation terminée")
				SendKeys.SendWait("{ENTER}")
				SendKeys.SendWait("%E")

				'Enregistre le résultat.
				Dim Test As String
				Test = "VolumeC.txt"
				SendKeys.SendWait("" + Test + "")
				SendKeys.SendWait("{ENTER}")
				SendKeys.SendWait("{TAB}")
				SendKeys.SendWait("{ENTER}")				'Pour supprimer fichier exitant
				SendKeys.SendWait("{ENTER}")				'pour refermer dial
				SendKeys.SendWait("{ENTER}")				'pour enreg. report
			Catch
			End Try
		End Sub

		Private Sub lTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles lTimer.Elapsed
			Try
				AppActivate("Défragmentation terminée")
				Enregistre()
				DfgEnd = True
				lTimer.Stop()
				' Pour D:
				OuvreDefrag()
				'FermeDefrag()

			Catch
				'manque ref form pour suivit.
			End Try
		End Sub

	End Class

End Module

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.