Herkese Merhabalar, 
Sıradan Batarya Durum Programı Yaptım C# Üzerinden Ancak Nedense Virüs Totelde Bu Virüsleri Gösteriyor.
Geçende Aynı Nedenden Konum Silinmişti.
Yardım Edebilecek Var mı ?
Teşekkürler..
Bu Form Dışında Bir De Class' ım Var Ama İçinde İki Get Set Var Başka Bir Şey Yok
Sıradan Batarya Durum Programı Yaptım C# Üzerinden Ancak Nedense Virüs Totelde Bu Virüsleri Gösteriyor.
Geçende Aynı Nedenden Konum Silinmişti.
Yardım Edebilecek Var mı ?
Teşekkürler..
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;
namespace Batarya_v1
{
public partial class Form1 : Form
{
string programAdi = "Batarya V1";
public Form1()
{
InitializeComponent();
}
private **** Form1_Load(object sender, EventArgs e)
{
dosyatasi();
CheckForIllegalCrossThreadCalls = false;
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = Color.White;
this.TransparencyKey = Color.White;
pictureBox1.BackColor = Color.Transparent;
}
private **** batarya()
{
//progressBar1.*******();
//progressBar1.CreateGraphics().DrawString(b.Percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));
/////////////alttaki 4 satır bataryanın yüzdesini, kac dk sonra biteceğini ve sarja takılı olup olmadıgına bakıyor
bataryadurumu b = new bataryadurumu();
b.Percent = SystemInformation.PowerStatus.BatteryLifePercent * 100;
b.Remaining = SystemInformation.PowerStatus.BatteryLifeRemaining / 60;
string a = SystemInformation.PowerStatus.PowerLineStatus.ToString();
vericalprogress1.Value = Convert.ToInt32(b.Percent.ToString());//////sarj yüzdesini dikey progress bara iletiyor
int saat = b.Remaining / 60;
int dk = b.Remaining % 60;
////////////////////alttaki if else komutlarında şarja takılıysa veya takılı değilse gibi
////////////////////koşullar yazılı. mesela hemen altta bulunan if online sa yani şarja takılıysa
////////////////////araç çubuğundaki iconu önce değiştiriyor (şarja takılı ıkon) sonra sarj yüzdemiz 100 ise
//////////////////// gerekli mesajlar veriliyor
if (a.Equals("Online"))
{
notifyIcon1.Icon = new Icon(@"sarjoluyor.ico");
if (b.Percent == 100)
{
label1.Text = "%"+b.Percent.ToString();
label2.Text = "Şarjdan Çıkartabilirsiniz";
}
else
{
label1.Text = "%" + b.Percent.ToString();
label2.Text = "Şarj Doluyor";
}
}
/////////////////////işte burda da offline sa yani sarja takılı değilse yüzde 25 in altına düştüğünde
///////////////////// uyarı veriyor ve timer a bağlı olarak gerekli süre içerisinde bunu tekrarlıyor
else if (a.Equals("Offline"))
{
if (b.Percent <= 25)
{
System.Media.SystemSounds.Hand.Play();
label1.Text = "%" + b.Percent.ToString();
label2.Text = "Batarya Takılması Gerekiyor";
}
else if (b.Percent == 100)
{
label1.Text = "%" + b.Percent.ToString();
label2.Text = "";
}
else
{
label1.Text = "%" + b.Percent.ToString();
label2.Text = "";
}
}
else
{
MessageBox.Show("Bataryada Bir Tuhaflık Var");
}
}
private **** timer1_Tick(object sender, EventArgs e)
{
/////////////////////gel gelelim timer ı nasıl işlevli hale getirdiğime
/////////////////////her işlem için ayrı timer bulundurmak istemedim bu yüzden
/////////////////////aşağıdaki kodlar timer i çoklu kullanıma sunuyor
/////////////////////ancak timer la ilgili sıkıntım var bunu TürkHackTeam de belirticem
pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\sarj.png");///burda program başladığındaki şarj resmi bulunuyor
bataryadurumu b =new bataryadurumu();
string a = SystemInformation.PowerStatus.PowerLineStatus.ToString();
b.Percent = SystemInformation.PowerStatus.BatteryLifePercent * 100;
//////burda notifyiconları şartlara bağlı kalarak değiştirmek istedim timer aralığı sürekli değişiyor o yüzden
//////aşağıda çok şey yazıyor anlamıyorum diyoorsan mesela örnek vereyim
//////mesela şarjın miktarına göre notifyikon u gerekli resmi gösteriyor şarj coksa full sarjlı ikon veya az sa şarjı az ikon gibi
if(a.Equals("Offline"))
{
if (b.Percent <= 25)
{
timer1.Interval = 10000;
batarya();
notifyIcon1.Icon = new Icon(Application.StartupPath + "\\sarjaz.ico");
}
else if (b.Percent > 25 && b.Percent < 70)
{
timer1.Interval = 1000;
batarya();
notifyIcon1.Icon = new Icon(Application.StartupPath + "\\sarjyarida.ico");
}
else if (b.Percent >= 70 && b.Percent < 85)
{
batarya();
timer1.Interval = 1000;
notifyIcon1.Icon = new Icon(Application.StartupPath + "\\sarjvar.ico");
}
else if (b.Percent >= 85)
{
batarya();
timer1.Interval = 1000;
notifyIcon1.Icon = new Icon(Application.StartupPath + "\\sarjdolu.ico");
}
}
else
{
///////bura geri kalan şartları gerçekleştiriyor mesela şarjımız %56 idi % 57 oldu 1 sn içerisinde sürekli bunu kontrol ediyor
timer1.Interval = 1000;
batarya();
}
}
private **** Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//////bu kodları seviyorum bazen programımız görev yöneticisinde felan açık kalıyor sıkıntı yapıyor
//////program kapatıldığında gerçekleşecek kodlar
Application.Exit();
notifyIcon1.Visible = false;
Environment.Exit(0);
}
private **** dosyatasi()
{
/* OpenFileDialog pfd = new OpenFileDialog();
DialogResult r = new DialogResult();
pfd.Title = "dosya ekle";
pfd.InitialDirectory = @"C:";
pfd.Multiselect = true;
r = pfd.ShowDialog();*/
/*try
{
string[] kaynak = new string[7];
kaynak[0] = Application.StartupPath + "\\sarjdolu.ICO";
kaynak[1] = Application.StartupPath + "\\sarjoluyor.ICO";
kaynak[2] = Application.StartupPath + "\\sarjvar.ICO";
kaynak[3] = Application.StartupPath + "\\sarjyarida.ICO";
kaynak[4] = Application.StartupPath + "\\bataryaikon.ICO";
kaynak[5] = Application.StartupPath + "\\sarj.PNG";
kaynak[6] = Application.StartupPath + "\\sarjaz.ICO";
string[] kaynak2 = new string[7];
kaynak2[0] = @"C:\Windows\SysWOW64\sarjdolu.ICO";
kaynak2[1] = @"C:\Windows\SysWOW64\sarjoluyor.ICO";
kaynak2[2] = @"C:\Windows\SysWOW64\sarjvar.ICO";
kaynak2[3] = @"C:\Windows\SysWOW64\sarjyarida.ICO";
kaynak2[4] = @"C:\Windows\SysWOW64\bataryaikon.ICO";
kaynak2[5] = @"C:\Windows\SysWOW64\sarj.PNG";
kaynak2[6] = @"C:\Windows\SysWOW64\sarjaz.ICO";
for (int a = 0; a < kaynak2.Length; a++)
{
if (System.IO.File.Exists(kaynak2[a]))
{
}
else
{
for (int i = 0; i < kaynak.Length; i++)
{
FileInfo fi = new FileInfo(kaynak[i]);
fi.CopyTo(@"C:\Windows\SysWOW64\" + fi.Name);
}
}
}
}
catch
{
MessageBox.Show("Yonetici izninde bir sorun var");
}*/
}
private **** cikisToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
///// programa sag tıklarsak cıkıs yapmamızı saglayan secenek sunuyor
}
private **** notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Show();
}
notifyIcon1.Visible = true;
///// görev çubuğunda ki programımıza tıkladıktan sonra bize gösteriyor form eklinde
}
private **** class11_Click(object sender, EventArgs e)
{
/////////////burası dikey progress barımız, tıkladığımızda hide komutu ile gizlememizi sağlıyor
Hide();
bataryadurumu b = new bataryadurumu();
b.Percent = SystemInformation.PowerStatus.BatteryLifePercent * 100;
b.Remaining = SystemInformation.PowerStatus.BatteryLifeRemaining / 60;
string c = SystemInformation.PowerStatus.PowerLineStatus.ToString();
int saat = b.Remaining / 60;
int dk = b.Remaining % 60;
///////////buralar karışık gelmesin program gizlendiğinde görev çubuğunda üstüne gelindiğinde bilgileri gösteriyor
vericalprogress1.Value = Convert.ToInt32(b.Percent.ToString());
if (c.Equals("Online"))
{
if (b.Percent.ToString().Equals("100"))
notifyIcon1.Text = "Tam Dolu (%" + b.Percent.ToString() + ")";
else
notifyIcon1.Text = "%" + b.Percent.ToString() + " Şarj oluyor";
}
else if (c.Equals("Offline"))
{
if (b.Percent.ToString().Equals("100"))
notifyIcon1.Text = "Kalan %" + b.Percent.ToString();
else
notifyIcon1.Text = "Kalan: " + saat.ToString() + " saat " + dk.ToString() + " dk (%" + b.Percent.ToString() + ")";
}
notifyIcon1.Visible = true;
notifyIcon1.MouseClick += new MouseEventHandler(notifyIcon1_MouseClick);
}
private **** label1_Click(object sender, EventArgs e)
{
Hide();
}
private **** label2_Click(object sender, EventArgs e)
{
Hide();
}
////////////////////////////
////////////////////////////
////////////////////////////profesyonel bir calisma degil her ne kadar calisiyorsada
////////////////////////////
////////////////////////////
private **** label1_Paint(object sender, PaintEventArgs e)
{
Graphics formGraphics = e.Graphics;
Font myFont = new Font("Palatino Linotype", 28, FontStyle.Bold);
//formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
formGraphics.DrawString(label1.Text, myFont, Brushes.SlateGray, 0.0F, 0.0F);
myFont.Dispose();
}
private **** label2_Paint(object sender, PaintEventArgs e)
{
Graphics formGraphics = e.Graphics;
Font myFont = new Font("Segoe Marker", 12, FontStyle.Regular);
//formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
formGraphics.DrawString(label2.Text, myFont, Brushes.SlateGray, 0.0F, 0.0F);
myFont.Dispose();
}
private **** toolStripMenuItem1_Click(object sender, EventArgs e)
{
////////////////////bu kısım aslında kullanılmıyor ama kaldırmak istemedim 1
try
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
if (key.GetValue(programAdi).ToString() == "\"" + Application.ExecutablePath + "\"")
{ // Eğer regeditte varsa,
key.DeleteValue(programAdi);
}
}
catch
{
}
//////////////////// bilgisayar restart yaptığında başlatıp başlatmayacağını kontrol ediyor
}
private **** toolStripMenuItem2_Click(object sender, EventArgs e)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
key.SetValue(programAdi, "\"" + Application.ExecutablePath + "\"");
}
}
}
Son düzenleme:



