Çözüldü C# Trackbar kullanarak bilgisayar sesini kısınca aşırı kasıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

MZabun

Femtopat
Katılım
3 Ocak 2022
Mesajlar
17
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar merhaba, ben TrackBar kullanarak sistem sesini kısmak istiyorum. Bunu yaptım ancak TrackBar'ı kaydırdığım zaman sistem aşırı kasıyor, bunu butona eklediğim zaman bir kasma yok ancak TrackBar üzerinden kaydırarak yaptığım zaman çok kasıyor.
Sorunun Timer ile alakalı olduğunu biliyorum ancak nasıl düzelteceğimi bilmiyorum. Bu konuda yardımcı olursanız çok sevinirim.
 
Çözüm
İkide bir nesne oluşturursan kasar tabii, coreaudiocontroller den nesneyi global tanımla ve button ya da trackbar changed eventi içinde sadece Volume değerini değiştir, başka herhangi bir kod olmasın.
Timer neden kullanıyorsun?
Kod örneği atar mısın?
1668089792486.png


1668089882534.png

KULLANILAN KÜTÜPHANE

using AudioSwitcher.AudioApi.CoreAudio;

Bu kodların yazımında bir arkadaştan yardım aldım Timer olmadan yapamadı o yüzden timer var
 
Eki Görüntüle 1568101

Eki Görüntüle 1568104
KULLANILAN KÜTÜPHANE

using AudioSwitcher.AudioApi.CoreAudio;

Bu kodların yazımında bir arkadaştan yardım aldım Timer olmadan yapamadı o yüzden timer var
Anladığım kadarıyla timer kullanma nedenin buttona basmadan Trackbar ile yaptığın değerin uygulanmasını istiyorsun fakat onun için change eventi (olayı) vardır diye tahmin ediyorum.

İlla timer ile yapıcam diyorsan timer interval değerini 500ms yapabilirsin. Böylelikle kasma sorununu halledersin.

C#:
timer1.Interval = 500; //ms

İyi sosyaller.
 
Anladığım kadarıyla timer kullanma nedenin buttona basmadan Trackbar ile yaptığın değerin uygulanmasını istiyorsun fakat onun için change eventi (olayı) vardır diye tahmin ediyorum.

İlla timer ile yapıcam diyorsan timer interval değerini 500ms yapabilirsin. Böylelikle kasma sorununu halledersin.

C#:
timer1.Interval = 500; //ms

İyi sosyaller.


Bu kodu nereye yapıştırayım? Bir de change Event ile yapabileceğim bir makale var mı?
 
Son düzenleyen: Moderatör:
Butonla ve Timer ile sistem sesini açma kapamanın en basit yolu sanırım bu.

C#:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

C#:
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
        private const int APPCOMMAND_VOLUME_UP = 0xA0000;
        private const int APPCOMMAND_VOLUME_DOWN = 0x90000;
        private const int WM_APPCOMMAND = 0x319;

        [DllImport("user32.dll")]
        public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

C#:
//Ses Durumuna göre timerdeki kodumuzu çalıştırıyoruz.
        private bool SesDurum = false;

        //Ses Durumuna göre kodumuzu çalıştırıyoruz.
        private void SesSeviyesi_Timer_Tick(object sender, EventArgs e)
        {
            if (SesDurum == true)
            {
                SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
            }
            else
            {
                SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_DOWN);
            }
        }

        //Sesi direk mute yapmak için
        private void Mute_Button_Click(object sender, EventArgs e)
        {
            SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
        }

        // Sesi artırmak için. (Basılı tutarsan sürekli yapar)

        private void SesArtırma_Button_MouseDown(object sender, MouseEventArgs e)
        {
            SesSeviyesi_Timer.Enabled = true;
            SesDurum = true;
        }

        private void SesArtırma_Button_MouseUp(object sender, MouseEventArgs e)
        {
            SesSeviyesi_Timer.Enabled = false;
        }

        // Sesi kısmak için. (Basılı tutarsan sürekli yapar)

        private void SesKısma_Button_MouseDown(object sender, MouseEventArgs e)
        {
            SesSeviyesi_Timer.Enabled = true;
            SesDurum = false;
        }

        private void SesKısma_Button_MouseUp(object sender, MouseEventArgs e)
        {
            SesSeviyesi_Timer.Enabled = false;
        }
 
Bu kodu nereye yapıştırayım? Bir de change Event ile yapabileceğim bir makale var mı?
Eğer timer ile yapmak istiyorsan onu form loada yapıştırman yeterli.

Eğer trackbar value changed eventi ile yapmak isitoyrsan bu komutu kullanmana gerek yok.

ilk olarak şunu dene: Trackbar'a çift tıkla oluşan metot ismi trackbar1_valuechanged ise buttona yazdığın komutları oraya yaz eğer o isimde metot oluşmazsa şu adımları izle

Trackbar seç -> Properties (Özellikler) -> Event (Olaylar -şimşek işareti-) -> ValueChanged çift tıkla buttona yazdığın komutları oraya yaz

İyi sosyaller.
 
Eğer timer ile yapmak istiyorsan onu form loada yapıştırman yeterli.

Eğer trackbar value changed eventi ile yapmak isitoyrsan bu komutu kullanmana gerek yok.

ilk olarak şunu dene: Trackbar'a çift tıkla oluşan metot ismi trackbar1_valuechanged ise buttona yazdığın komutları oraya yaz eğer o isimde metot oluşmazsa şu adımları izle

Trackbar seç -> Properties (Özellikler) -> Event (Olaylar -şimşek işareti-) -> ValueChanged çift tıkla buttona yazdığın komutları oraya yaz

İyi sosyaller.
yine çok kastı
 
Hocam şu changed olayını yapın size iki seçenek sunuyorum timer la yapmanız mantıksız çünkü siz değeri değiştirmeseniz bile timer gene çalışcak ve aynı değer tekrar ayarlıyacak.
Yukardaki mesajda changed olayını anlattım inceleyiniz.

İyi sosyaller
Changed ile yaptığımda kastı zaten onu dedim
 

Technopat Haberler

Yeni konular

Geri
Yukarı