Seçilen bir ayarı, tüm videolara
seri olarak işleyen bir yazılımdır. Yazılım bulunduğu
klasördeki her video için tek tek bir video işleme programını
çağırarak işlemden geçirir. Örneğin videoları seri olarak
sıkıştırma işleminden geçirebilir.
Public Class Form1
'Nesneler
'txtAyarAdı adlı TextBox
'cmdBaşla adlı Button
'cmdDur adlı Button
'txtIşlenen adlı TextBox
'DosyaListesi adlı ListBox
'DenetlemeZamani adlı Timer
'Uyut adlı CheckBox
Const ProgExe As String = "C:\Program Files (x86)\Program\Program.exe"
Const ProgAdı As String = "Program" 'İşlemin bittiği, çalışan programlar listesinden denetlenecek
Const ProgDizini As String = "C:\Program Files (x86)\Program\"
Dim AyarAdı As String
Const AyarUzantı As String = ".vcf"
Dim AyarSeç As String
Dim IşlemDizini As String
Const IşlemDiziniHedef As String = "Islenenler"
Dim IşlemDosyası As String
Dim IşlemDosyasıHedef As String
Dim İşlemSırası As Integer
Dim Durduruldu As Boolean
Dim tnk As String 'Tırnak karakteri için
Private Sub cmdBasla_Click(sender As Object, e As EventArgs) Handles cmdBasla.Click
DosyaListesi.Items.Clear()
İşlemSırası = 0
Durduruldu = False
'Çağrılacak programın hangi ayarıyla işlem yapacağı seçiliyor.
If txtAyarAdı.Text = "" Then Exit Sub
AyarSeç = ProgDizini & txtAyarAdı.Text & AyarUzantı
'Yazılım bulunduğu klasörü tespit ediyor.
IşlemDizini = Application.StartupPath
'Hedef dizin oluşturuluyor.
If IO.File.Exists(My.Computer.FileSystem.CombinePath(IşlemDizini, IşlemDiziniHedef)) Then
MsgBox("Hedef dizin var, onu korumak gerekebilir")
Exit Sub
Else
IO.Directory.CreateDirectory(My.Computer.FileSystem.CombinePath(IşlemDizini, IşlemDiziniHedef))
End If
'Yazılım bulunduğu klasördeki işlenecek dosyaları buluyor.
DosyalarıBul(IşlemDizini)
If DosyaListesi.Items.Count = 0 Then
MsgBox("Klasörde dosya yok")
Exit Sub
End If
SonrakiniIşle()
DenetlemeZamani.Enabled = True
End Sub
Private Sub DosyalarıBul(dbDizin As String)
Dim dirinfo As New System.IO.DirectoryInfo(dbDizin)
Dim Dosyalar() As System.IO.FileInfo
'Bulunduğu üst dizindeki belli türdeki dosyaları arıyor.
Dosyalar = dirinfo.GetFiles("*.avi", IO.SearchOption.TopDirectoryOnly)
Dim Dosya As System.IO.FileInfo
'Dosya adları listeye alınıyor.
For Each Dosya In Dosyalar
DosyaListesi.Items.Add(Dosya)
Next
End Sub
Private Sub DenetlemeZamani_Tick(sender As Object, e As EventArgs) Handles DenetlemeZamani.Tick
'Çağrılmış programın işleminin bitmesi denetleniyor.
If İşlemSürüyor() Then Exit Sub
If Durduruldu Then
DenetlemeZamani.Enabled = False
Exit Sub
End If
Dim oTarihi As Date 'Oluşturma tarihi
Dim dTarihi As Date 'Değiştirme tarihi
'Dosya üzerinde işlem bittiğinde yaratılan dosyanın oluşturma ve değiştirilme tarihi özgün dosyadakine eşitleniyor.
'Böylece tarihler de korunuyor.
oTarihi = System.IO.File.GetCreationTime(IşlemDosyası)
dTarihi = System.IO.File.GetLastWriteTime(IşlemDosyası)
System.IO.File.SetCreationTime(IşlemDosyasıHedef, oTarihi)
System.IO.File.SetLastWriteTime(IşlemDosyasıHedef, dTarihi)
İşlemSırası = İşlemSırası + 1
If DosyaListesi.Items.Count <= İşlemSırası Then
DenetlemeZamani.Enabled = False
If Uyut.Checked Then
'Tüm dosyalar işlendiğinde işaretlenmişse bilgisayar uyutulur.
System.Diagnostics.Process.Start("Shutdown", "-h")
End If
MsgBox("Tüm dosyalar işlendi")
Exit Sub
End If
'Şimdi sonraki işlenebilir.
SonrakiniIşle()
End Sub
Private Sub SonrakiniIşle()
Dim KBaşarısı As Integer
Dim Komut As String
IşlemDosyası = IşlemDizini & "\" & DosyaListesi.Items.Item(İşlemSırası).ToString()
IşlemDosyasıHedef = IşlemDizini & "\" & IşlemDiziniHedef & "\" & DosyaListesi.Items.Item(İşlemSırası).ToString()
DosyaListesi.SelectedIndex = İşlemSırası
DosyaListesi.TopIndex = DosyaListesi.SelectedIndex
txtIşlenen.Text = CStr(İşlemSırası + 1) & "/" & DosyaListesi.Items.Count & " " _
& DosyaListesi.Items.Item(İşlemSırası).ToString()
'Çağrılacak program için işlenecek dosya komutu oluşturuluyor.
Komut = tnk & ProgExe & tnk & " /s " & _
tnk & AyarSeç & tnk & _
" /p " & _
tnk & IşlemDosyası & tnk & _
" " & _
tnk & IşlemDosyasıHedef & tnk & _
" /r /x"
'Program çağrılıyor.
KBaşarısı = Shell(Komut)
'İşlemSırası = İşlemSırası + 1
End Sub
Private Function İşlemSürüyor() As Boolean
'Çağrılmış program, işlemi bitince kapanacak.
'İşlemler listesinde görünüyorsa görevi bitmemiş demektir.
Dim işlem As Process
For Each işlem In Process.GetProcesses
If Not InStr(işlem.ProcessName, ProgAdı) = 0 Then
İşlemSürüyor = True
Exit Function
End If
Next
End Function
Private Sub cmdDur_Click(sender As Object, e As EventArgs) Handles cmdDur.Click
Durduruldu = True
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tnk = Chr(34)
End Sub
End Class
Yazılım son kullanıcıya yönelik
değildir. Kişisel amaçlar için yazıldığından denetim kodları
filan sade tutulmuştur. Elbette kodlarda -Const değişkenlerinde-
ufak değişiklikler yapılarak başka programlar çağrılabilir.
Sadece videolar değil farklı türdeki dosyalara da seri işlem
uygulaması sağlanabilir.
Hiç yorum yok:
Yorum Gönder