none
İnternetin aktif ve belirlediğim bir programın açık olduğunu gözlemleyen bir program nasıl yapabilirim? RRS feed

  • Soru

  • Merhaba ismim Sefa öncelikle buraya baktığınız için teşekkür ediyorum,

    Çok basit bir olayım var mega bulut sistemi programım var bu sürekli bir pcden veri atıyor buluta, ben bilgisayarda internet baglantısı koptugunda veya bu program kapalı olduğunda bana uyarı verecek bir program yazmak istiyorum hangi dil daha kolay bunun için? c# biraz bilgim var, bilgisayar açılınca acılacak bu program interneti ve mega bulut sistemi programını kontrol edicek sürekli.

    Teşekkürler ^^

    29 Ağustos 2019 Perşembe 07:08

Yanıtlar

  • İnterneti kontrol etmek , bir sürü yöntem var bence en temizi google'a ping at.

    https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.ping?redirectedfrom=MSDN&view=netframework-4.8

    Bir programın çalışıp çalışmadığını anlamak için Process kütüphanesini kullanabilirsin.

    if( Process.GetProcessesByName("Notepad").Any())
    {
        "Çalışıyor";
    }


    www.cihanyakar.com


    • Düzenleyen Cihan YakarMVP 29 Ağustos 2019 Perşembe 07:24
    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 29 Ağustos 2019 Perşembe 07:26
    • Yanıt Olarak İşaretleyen SEFA UNQ 29 Ağustos 2019 Perşembe 10:09
    29 Ağustos 2019 Perşembe 07:24
  • Bu kod Stackoverflow'dan (AutoClosingMessageBox).

    void Main()
    {
    	AutoClosingMessageBox.Show("Internet yok!","Internet Kontrol",3000);
    }
    
    public class AutoClosingMessageBox
    {
    	System.Threading.Timer _timeoutTimer;
    	string _caption;
    	AutoClosingMessageBox(string text, string caption, int timeout)
    	{
    		_caption = caption;
    		_timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
    			null, timeout, System.Threading.Timeout.Infinite);
    		using (_timeoutTimer)
    			MessageBox.Show(text, caption);
    	}
    	public static void Show(string text, string caption, int timeout)
    	{
    		new AutoClosingMessageBox(text, caption, timeout);
    	}
    	void OnTimerElapsed(object state)
    	{
    		IntPtr mbWnd = FindWindow("#32770", _caption); // lpClassName is #32770 for MessageBox
    		if (mbWnd != IntPtr.Zero)
    			SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
    		_timeoutTimer.Dispose();
    	}
    	const int WM_CLOSE = 0x0010;
    	[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
    	static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    	[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    	static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
    }



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 29 Ağustos 2019 Perşembe 13:47
    • Yanıt Olarak İşaretleyen SEFA UNQ 29 Ağustos 2019 Perşembe 14:54
    29 Ağustos 2019 Perşembe 11:47
    Yanıtlayıcı

Tüm Yanıtlar

  • İnterneti kontrol etmek , bir sürü yöntem var bence en temizi google'a ping at.

    https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.ping?redirectedfrom=MSDN&view=netframework-4.8

    Bir programın çalışıp çalışmadığını anlamak için Process kütüphanesini kullanabilirsin.

    if( Process.GetProcessesByName("Notepad").Any())
    {
        "Çalışıyor";
    }


    www.cihanyakar.com


    • Düzenleyen Cihan YakarMVP 29 Ağustos 2019 Perşembe 07:24
    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 29 Ağustos 2019 Perşembe 07:26
    • Yanıt Olarak İşaretleyen SEFA UNQ 29 Ağustos 2019 Perşembe 10:09
    29 Ağustos 2019 Perşembe 07:24
  • Hocam ilk olarak şunu soracağım kütüphaneyi nasıl ekleyeceğiz bu attığınız site ping atma ile alakalı anladığım kadarı ile aşşağıdaki kod ile google ping attırıyorum netin var olup olmadığı kontrol ediyorum bunu form loada while ile sonsuz döngüye sokuyorum lakin form ekranı gelmiyo butona girince çalıştırıyorum fakat form loadda programı başlatınca form ekranı gelmiyor sebebi nedir aceba 

    try
                {
                    System.Net.Sockets.TcpClient kontrol_client = new System.Net.Sockets.TcpClient("www.google.com.tr", 80);
                    kontrol_client.Close();
                    return true;
                }
                catch (Exception e)
                {
                    
                    return false;
                }

    Bu aşşağıdakide form loadda bulunan:

    int x = 1;
                while (x > 0)
                {
    
                    bool sonuc = InternetKontrol();
                    if (sonuc == true)
                    {
                        label1.Text = "İnternet varr";
    
                    }
                    else
                    {
                        label1.Text = "İnternet yokkk";
                    }
                }

    29 Ağustos 2019 Perşembe 08:27
  • Sizin de dediğiniz gibi, sonsuz döngüye sokmuşsunuz, ondan gelmiyor.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    29 Ağustos 2019 Perşembe 08:41
    Yanıtlayıcı
  • Timer ile çözdüm hocam o işi şimdi programıda internetin var olup olmadığınıda kontrol ediyor, takıldığım 2 3 şey kaldı bunlar:

    -Programın Bilgisayar açılınca çalışıp gizlenmesi yani sağ alatta bir ikon olabilir kapatılmaması için bir şifrede belirlicem.

    -sağlam bir hata mesajı istiyorum yani internetin olmadığını kontrol edip masaüstünde en ön sırada açık programların en üstüne gelecek şekilde bir hata mesajı vermek istiyorum.

    -birde mail attıra bilirmiyim kendime.

    Hocam bunları nasıl yapabilirim bir fikriniz veya hızlıca bildiğiniz bir örneğiniz varmıdır?

    29 Ağustos 2019 Perşembe 10:09
  • Programin bilgisayar acilinca calismasi icin ya service olarak yazmalisiniz ya da startup'da  olmalı.

    Ornegin bir MessageBox ile gösterebilirsiniz.

    Mail attirabilirsiniz (internet yoksa pek ise yaramaz).



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    29 Ağustos 2019 Perşembe 10:29
    Yanıtlayıcı
  • Çetin hocam messagebox ayarlıyorum lakin sadece form ekranında görünüyor bide 10 saniye yaptım 10 saniyede bir hata alıyorum lakin message box kutusunu sürekli artırıyor bunu nasıl engelleye bilirim ben şunu istiyorum program arka planda iken 1 tane hata versin internet gelince kaybolsun ama 1 tane versin birde bu programı sadece  küçük ikon olarak sağ alt köşede nasıl çalıştıra bilirim,Teşekkür ederim sizide yordugum için özür dilerimç

    

    29 Ağustos 2019 Perşembe 10:46
  • Bu kod Stackoverflow'dan (AutoClosingMessageBox).

    void Main()
    {
    	AutoClosingMessageBox.Show("Internet yok!","Internet Kontrol",3000);
    }
    
    public class AutoClosingMessageBox
    {
    	System.Threading.Timer _timeoutTimer;
    	string _caption;
    	AutoClosingMessageBox(string text, string caption, int timeout)
    	{
    		_caption = caption;
    		_timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
    			null, timeout, System.Threading.Timeout.Infinite);
    		using (_timeoutTimer)
    			MessageBox.Show(text, caption);
    	}
    	public static void Show(string text, string caption, int timeout)
    	{
    		new AutoClosingMessageBox(text, caption, timeout);
    	}
    	void OnTimerElapsed(object state)
    	{
    		IntPtr mbWnd = FindWindow("#32770", _caption); // lpClassName is #32770 for MessageBox
    		if (mbWnd != IntPtr.Zero)
    			SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
    		_timeoutTimer.Dispose();
    	}
    	const int WM_CLOSE = 0x0010;
    	[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
    	static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    	[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    	static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
    }



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 29 Ağustos 2019 Perşembe 13:47
    • Yanıt Olarak İşaretleyen SEFA UNQ 29 Ağustos 2019 Perşembe 14:54
    29 Ağustos 2019 Perşembe 11:47
    Yanıtlayıcı
  • C# da az bilgili ve ingilizceyi az bilen biri olarak bu attığınızdan bir şeyler anlayamadım yinede teşekkür ederim. farklı bir şekilde yapayım.
    29 Ağustos 2019 Perşembe 12:26