C# Timer Ve Keypress Sorunu
-
bu aralar sizi oldukça sıktım c#konularıyla müridler fakat bir basit konu daha var...
aşağdaki kodlar start butonuna basılınca bip sesi çıkarıyor fakat burda yapmak istediğim bip sesinin çıktığı saat dakika saniye ve milisaniyeyi kayıt altında tutmak bir txt dosyasında. ve klavyeden ''j'' tuşuna basılana kadar bip sesini devam ettirmek. burda do while mı kullanılır nasıl olur engin bilgilerinize tbt ailesi. makaleyi yayınlıyabilirsem bu siteye armağan edicem :) bu arada bu bip sesi her 53 saniyede bir başlamalı
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BEEP_app
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Console.Beep(2000, 300);
Console.Beep(3000, 300);
Console.Beep(100, 100);
}
}
}
MOD: Lütfen konu başlığını açıklayıcı bir şekilde yazalım.
-
hacım yatacam şimdi o yüzden kodlama işini sana bırakıyorum ama mantık basit
öncelikle timer ekleyeceksin formuna ve bunun intervalini 53000 e ayarlayacaksın
bip sesini çıkaran kodların timerin içerisinde olacak
timer her tetiklendiğinde dosyana kayıt işlemini de buradan yaptıracaksın :D
start tuşunun kodlarında timer a start vereceksin ancak eğer start tuşunu enable = false yapmayacaksan timerin busy durumunu kontrol ettir
ikinci bir timer ekleyeceksin intervali 20 ye ayarla
key press modunu denetleyeceksin burada char code da istediğin değeri yakaladığında 1. timeri stop ettireceksin
yapamadığın yer olursa mesaj at yarın akşam bakarım
kolay gelsin
charcode tablosu
http://msdn.microsoft.com/en-us/library/4z4t9ed1(v=vs.80).aspx
crafty tarafından 02/Tem/14 23:46 tarihinde düzenlenmiştir -
http://www.tahribat.com/Forum-C-Ile-Yazilan-Keylogger-196096/
EDİT: şimdi farkettim, sadece tuş vuruşları yetmiyomuş.
http://msdn.microsoft.com/tr-tr/library/system.datetime.now(v=vs.110).aspx
wasd tarafından 02/Tem/14 23:52 tarihinde düzenlenmiştir -
Konu dışı: aman hocam ne demek sayende forum biraz bilişim forumu oluyor. Anasayfada programlama dili ismi geçiyor. Aklına takılan herşeyi sor ben cevaplayamasam da başlığı görmek bile mutlu ediyor
edit: telefonda yazdığım yazım yanlışları...
by_Tet tarafından 03/Tem/14 00:19 tarihinde düzenlenmiştir -
by_Tet bunu yazdı
Konu dışı: aman hocam ne demek sayende dorum biraz bilişim forumu oluyor. Anasayfada programlama dili ismi geçiyor. Aklına takılan herieyi sor ben cevaplayamasam da başlığı görmek bile mutlu ediyor
Saol hocam boyle zamanlarda tahribat tek dayanak valla.
-
forma bir adet button ve iki adet de timer ekleyin aşağıdaki kodları yazın :D
kaynak kod : https://www.dropbox.com/s/x3li4wewz6zbbct/mythbusters.rar
edit : kaynak dosyası da güncellendi :D biz miskin milletiz kod düzeltmeyle kimse uğraşmaz dedim :D İndirmeye üşenene kodlar aşağıda :D
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; //Dosya Yazma İşlemi İçin Kütüphane using System.Linq; using System.Runtime.InteropServices; //Dll Import İşlemi İçin Kütüphane using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace mythbusters { public partial class mythbusters : Form { [DllImport("user32.dll")] private static extern short GetAsyncKeyState(System.Int32 vKey); //Klavyeden Basılan Tuşu Yakalayan Fonksiyonun Eklenmesi private bool status; //Ötüp Ötmeyeceğini Belirlediğimiz Durum public mythbusters() { InitializeComponent(); TBeeper.Interval = 53000; //Sesi Çalacak Olan Zamanlayıcının Süresi TListener.Enabled = true; TListener.Interval = 1; //Klavyeden Basılan Tuşu Yakalayacak Olan Zamanlayıcının Süresi TListener.Start(); status = false; //Program Açıldığında Ses Çıkarmaması İçin False Olarak İşaretledik } private void TBeeper_Tick(object sender, EventArgs e) { Console.Beep(2000, 300); Console.Beep(3000, 300); Console.Beep(100, 100); string url = Application.StartupPath + "/log.txt"; //Application.StartupPath Programın Çalıştığı Dizini Bulur if (File.Exists(url) == false) //log.txt Yoksa Yaratıyoruz { File.Create(url).Dispose(); } FileStream fs = new FileStream(url, FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.WriteLineAsync("---------------------------------------------------------"); sw.WriteLineAsync("Çaldığı Saat : " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff")); sw.WriteLineAsync("---------------------------------------------------------"); sw.Close(); fs.Close(); } private void TListener_Tick(object sender, EventArgs e) { for (Int32 i = 1; i < 256; i++) { Int32 key = GetAsyncKeyState(i); if (key == -32767) { if ((i==74) || (i==106)) { if(status==false) //J Tuşuna basıldığında durum False ise zamanlayıcımızı aktif hale getiriyoruz { TBeeper.Enabled = true; //Sesi Çaldırmak İçin Zamanlayıcıyı Açıyoruz TBeeper.Start(); status = true; //Sesi Çaldığımız İçin Durumu True Ayarlıyoruz label1.Text = "Status : Active"; //Formdaki Labelda Durumumuzu Belirtiyoruz label1.ForeColor = System.Drawing.Color.Green; } else //J Tuşuna basıldığında durum True ise zamanlayıcımızı pasif hale getiriyoruz { TBeeper.Stop(); //Çalmayı İptal Etmek İçin Zamanlayıcıyı Kapatıyoruz TBeeper.Enabled = false; status = false; //Çalmayı İptal Ettiğimiz İçin Durumu False Ayarlıyoruz label1.Text = "Status : Deactive"; //Formdaki Labelda Durumumuzu Belirtiyoruz label1.ForeColor = System.Drawing.Color.Red; } } } } } } }
crafty tarafından 04/Tem/14 21:30 tarihinde düzenlenmiştir