c# ta dosya nın (programın) çalıştığını anlama?

Başlatan Ali_54, 29 Ocak 2012, 14:28:42

Ali_54

merhaba arkadaşlar,
hani .isopen() gibi methotlar vardır ya, bunun gibi bir methot aradım bulamadım.
bir excell dosyasıyla uğraşıyorum. bunun açık olduğunu nasıl anlarım?

      File.Exists(@"C:\exceldosyaadı.xlsx") deyince varsa o konumda true ile dönüyor. ama birde o anda açık mı değil mi yi veren bir kod lazım. excell yada başka bir program hepsinde çalışan bir methot bilen var mı?

teşekkürler
1 harf öğretenin 4 gün kölesi olurum.

cicjoe

bool kullanimdaMi(string dosya)
   {
      bool sonuc = false;
      try
      {
         FileStream fs = File.Open(dosya, FileMode.Open, FileAccess.Read, FileShare.None);
         fs.Close();
      }
      catch (Exception ex)
      {
         sonuc = true;
      }
      return sonuc;
   }

Ali_54

string dosya  ile dosya yolunu kastediyorsunuz değil mi?
1 harf öğretenin 4 gün kölesi olurum.

Ali_54

verdiğiniz kodu şu şekilde denedim. açıkta olsa kapalı da olsa hep kapalı dönüyor.


      private void button42_Click(object sender, EventArgs e)
        {
            if (kontrol("C:\\excell.xlsx"))
            {
                MessageBox.Show("açık");
            }
            else
            {
                MessageBox.Show("kapalı");
            }   
        }


        bool kontrol(string dosya)
        {
            bool sonuc = false;
            try
            {
                FileStream fs = File.Open(dosya, FileMode.Open, FileAccess.Read, FileShare.None);
                fs.Close();
            }
            catch (Exception ex)
            {
                sonuc = true;
            }
            return sonuc;
        }
1 harf öğretenin 4 gün kölesi olurum.

cicjoe

hmm. bende calisiyor. farkli bir yontem denemek lazim o zaman.


Ali_54

Allah Allah. kodu demin gene denedim. bu seferde full açık diyo. excell arka planda çalışıyo bende. görev yöneticisinden excel.exe yi sonlandırıp butonla kontrol ettiriyom. gene açık mesajı geliyo bende.
1 harf öğretenin 4 gün kölesi olurum.

Ali_54

Şöyle birşey oldu:

     DialogResult sonuc = folderBrowserDialog2.ShowDialog();
            if (sonuc == DialogResult.OK)
            {
                yol = folderBrowserDialog2.SelectedPath;
                yol +=@"\excel.xlsx";
            }



bu şekilde denediğim zaman doğru çalıştı. ama niye böyle bi saçma yol dışında çalışmıyor anlamadım. alt fonsiyon vermiştiniz ya:

  FileStream fs = File.Open(dosya, FileMode.Open, FileAccess.Read, FileShare.None);
                fs.Close();

diye burda dosya yerine direk yolu yazsam gene çalışması gerek. ama foldervrowserdialog() tan doğru çalışıyor ne hikmetse.
1 harf öğretenin 4 gün kölesi olurum.

cicjoe

direk fonksiyon icine "dosya.xlsx" yazarak denedim, sorunsuz calisti. acaba optimizasyon ayarlarini mi degistirdiniz? benim aklima gelen ilk yorum, eger hiz icin optimize et dediyseniz ve fonksiyonun icerigi sabitlerden olusuyorsa, tekrar ayni sonucu hesaplayacagini dusunerek, fonksiyonu calistirmadan bir onceki sonucu size dondurdugu.