Bu yıl notları eOkul sitesine giriyoruz. http://e-okul.meb.gov.tr/logineOkul.aspx
Fakat not girişi biraz çetrefilli. Hem de zaman doluyor. Her sayfada 10 dakika içinde not girişi bitmesi gerek. E o zaman VB.NET 2008’de notları bizim için dolduran "hızlı" bir program yazalım dedik.
 
Notları genelde Excel’de saklıyoruz. Daha sonra da eokul sitesinde elle not giriş ekranında giriliyor. Hazır zaten girilmiş notları tekrar başka yere girmek zor gelebilir. Bu projede SendKeys ile tuş basımı gönderiliyor. Ctrl+Alt+H global kısayolu ile işlem başlatılıyor. Tabii önce notların HızlıDoldur programı içine aktarlıması gerekiyor. Aktarıldıktan sonra satır ve sütun sayısı yani öğrenci ve sınav sayısını belirliyoruz veya düzenliyoruz. 30 öğrencinin notunu 1-2 saniye içinde web sayfasındaki metin kutularına otomatik aktarıyor.
 
Daha önceki "sanaltıklama", "ekrançiz" ve "modül takip projesi" gibi yardımcı programlarım pek tutulmamıştı. Belki bu "fikstür hazırlama" projemi geçer. Tüm projelerimi http://yunus.sf.net sitemden inceleyebilirsiniz.
 
Web programlama ile fazla ilgilenince masaüstü yazılımcılığı biraz garip hissettirdi beni. Delphi ile de yapabilirdim ama VB.NET de de her aradığımı buldum. Internette güzel kaynaklar var:
Daha "setup" yapmadım. DotnetFX35 gerekli. Kodları indirebilirsiniz: 

http://cid-d0b01df58868413e.skydrive.live.com/embedrowdetail.aspx/Ortak/HizliDoldur.rar

Ekran Görüntüsü:

 
Kodların bir kısmı (250 satır, 15 saat emek):
 

Public Class Form1

    Dim bekleme As Integer = 0

    Dim yerX As Integer

    Public Enum HotKeyModifiers As Integer

        MOD_ALT = &H1

        MOD_CONTROL = &H2

        MOD_SHIFT = &H4

        MOD_WIN = &H8

    End Enum

    Private Const WM_HOTKEY As Integer = &H312

    Public Declare Auto Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean

    Public Declare Auto Function UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) As Boolean

 

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        ‘kapanırken ayarlar kaydedilir, global kısayol silinir

        UnregisterHotKey(Me.Handle, 1020)

 

        My.Settings.Hiz = ComboBox1.SelectedIndex

        My.Settings.Sutun = ComboBox2.SelectedIndex

        My.Settings.Sure = NumericUpDown1.Value

        My.Settings.Ses = CheckBox1.Checked

    End Sub

 

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

        ‘açılırken ayarlar okunur, global kısayol atanır

        RegisterHotKey(Me.Handle, 1020, HotKeyModifiers.MOD_ALT Or HotKeyModifiers.MOD_CONTROL, Keys.H)

 

        ComboBox1.SelectedIndex = My.Settings.Hiz

        ComboBox2.SelectedIndex = My.Settings.Sutun

        NumericUpDown1.Value = My.Settings.Sure

        CheckBox1.Checked = My.Settings.Ses

        Timer1.Enabled = False

        RegisterHotKey(Me.Handle, 1, 4, 118)

    End Sub

    Sub islem()

        ‘timer1 tetiklenir, ilk hücreye konumlanılır

        yerX = -1

        Timer1.Enabled = True

    End Sub

 

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        ‘ızgaradaki bir sonraki hücre okunur ve sanal tuşbasımı yapılır

        yerX += 1

        ToolStripProgressBar1.Value += 1

        If yerX = DataGridView1.RowCount Then

            ToolStripProgressBar1.Value = 0

            ToolStripProgressBar1.Visible = False

            Timer1.Enabled = False

            NotifyIcon1.ShowBalloonTip(2000, "HızlıDoldur", "İşlem Tamamlandı!", ToolTipIcon.Info)

            Exit Sub

        End If

        For i As Integer = 0 To 4

            If DataGridView1.Columns(i).Visible = False Then Exit Sub

            SendKeys.Send("^a")

            SendKeys.Send("{DEL}")

            SendKeys.Send(DataGridView1.Item(i, yerX).Value)

            If i < 4 Then

                If yerX = DataGridView1.RowCount – 1 And DataGridView1.Columns(i + 1).Visible = False Then Exit Sub

            Else

                If yerX = DataGridView1.RowCount – 1 Then Exit Sub

            End If

            SendKeys.Send("{TAB}")

        Next

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        ‘işlem hız ayarı

        Select Case ComboBox1.SelectedIndex

            Case 0

                Timer1.Interval = 50

            Case 1

                Timer1.Interval = 300

            Case 2

                Timer1.Interval = 600

        End Select

    End Sub

 

    Private Sub ÇıkışToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÇıkışToolStripMenuItem.Click

        ‘çıkış

        End

    End Sub

 

    Private Sub HakkındaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HakkındaToolStripMenuItem.Click

        ‘hakkında: 15 saat emek 🙂

        MessageBox.Show("Yapım: Tarık BAĞRIYANIK" & vbCrLf & "Teşekkürler: Tuzla Teknik Okulları – Bilişim Öğretmenleri" & vbCrLf & "Nisan 2009" & vbCrLf & vbCrLf & "http://yunus.sourceforge.net&quot;, "Hızlı Doldur", MessageBoxButtons.OK, MessageBoxIcon.Information)

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ‘AKTARMA BAŞLIYOR!

        bekleme = 0

        ToolStripProgressBar1.Value = 0

        ToolStripProgressBar1.Visible = True

        Timer2.Enabled = True

    End Sub

 

    Private Sub NotAktarmayaBaşlaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotAktarmayaBaşlaToolStripMenuItem.Click

        ‘AKTARMA BAŞLIYOR!

        bekleme = 0

        ToolStripProgressBar1.Value = 0

        ToolStripProgressBar1.Visible = True

        Timer2.Enabled = True

    End Sub

 

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

        ‘Ctrl Alt H’nin bağlı olduğu olay

        MyBase.WndProc(m)

        If (m.Msg = WM_HOTKEY) Then

            Dim hotKeyId As Integer = m.WParam.ToInt32()

            If hotKeyId = 1020 Then

                bekleme = 0

                ToolStripProgressBar1.Value = 0

                ToolStripProgressBar1.Visible = True

                Timer2.Enabled = True

            End If

        End If

    End Sub

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        ‘kaç sütun olacak burada belirlenir

        DataGridView1.Columns(1).Visible = ComboBox2.SelectedIndex > 0

        DataGridView1.Columns(2).Visible = ComboBox2.SelectedIndex > 1

        DataGridView1.Columns(3).Visible = ComboBox2.SelectedIndex > 2

        DataGridView1.Columns(4).Visible = ComboBox2.SelectedIndex > 3

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, TemizleToolStripMenuItem.Click

        ‘ızgarayı temizler

        DataGridView1.Rows.Clear()

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click, YapıştırToolStripMenuItem.Click

        ‘panodan bilgileri yapıştırır

        Dim s As String = Clipboard.GetText()

        If Not Clipboard.ContainsText Then Exit Sub

        If s.Length > 2 Then

            If s(s.Length – 2) = ControlChars.Cr And s(s.Length – 1) = ControlChars.Lf Then

                s = s.Remove(s.Length – 2)

                ‘Excel sonuna CRLF ekleyince fazla satır ekliyordu

            End If

        End If

 

        Dim rows() As String = s.Split(ControlChars.NewLine)

        Dim i, j As Integer

 

        DataGridView1.Rows.Clear()

 

        Try

            For i = 0 To rows.Length – 1

                If DataGridView1.Rows.Count < rows.Length Then

                    DataGridView1.Rows.Add()

                End If

                Dim bufferCell() As String = rows(i).Split(ControlChars.Tab)

                For j = 0 To bufferCell.Length – 1

                    If bufferCell(j).ToString.Contains(ControlChars.Lf) Then

                        bufferCell(j) = bufferCell(j).ToString.Replace(ControlChars.Lf, "")

                    End If

                    DataGridView1.Item(j, i).Value = bufferCell(j)

                Next

            Next

        Catch

            MessageBox.Show("Yapıştırma Hatası" & ControlChars.NewLine & _

            "5 sütundan fazla bilgi olamaz!", "HızlıDoldur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

    End Sub

  

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        ‘bekleme zamanı için çalışan timer2, timer1’i tetikler, kendini kapatır

        Me.WindowState = FormWindowState.Minimized

        If CheckBox1.Checked Then System.Media.SystemSounds.Beep.Play()

        bekleme += 1

        If NumericUpDown1.Value.ToString = "" Then NumericUpDown1.Value = 3

        If bekleme >= NumericUpDown1.Value Then

            Timer2.Enabled = False

            islem()

        End If

    End Sub

 

 

End Class

 

Reklamlar