Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Wykrycie czy pendrive jest podłączony.

Itoto 26 Paź 2010 17:51 1308 4
  • #1 26 Paź 2010 17:51
    Itoto
    Poziom 8  

    W jaki sposób wykryć na jakiej literce jest zamontowany pendrive?
    Ja zrobiłem to w taki sposób:

    Code:
    klucz.open("F:\\klucz.ini",ios::in|ios::out|ios::trunc);
    
                 
              if(!klucz)
              {
              klucz.clear();
              klucz.open("G:\\klucz.ini",ios::in|ios::out|ios::trunc);
            }
           
              if(!klucz)
              {
              klucz.clear();
              klucz.open("H:\\klucz.ini",ios::in|ios::out|ios::trunc);
            }
           
              if(!klucz)
              {
              klucz.clear();
              klucz.open("I:\\klucz.ini",ios::in|ios::out|ios::trunc);
            }
           
              if(!klucz)
              {
              klucz.clear();
              klucz.open("J:\\klucz.ini",ios::in|ios::out|ios::trunc);
            }
           
              if(!klucz)
              {
              klucz.clear();
              klucz.open("K:\\klucz.ini",ios::in|ios::out|ios::trunc);
            }
       

    Niestety wystarczy, że po drodze napotkam jakiś dysk i plik zapiszę się na nim, zamiast na pendrive.

    Chciałbym, żeby był to bardziej uniwersalny sposób.

    0 4
  • #2 26 Paź 2010 18:02
    arnoldziq
    Moderator Programowanie

    Ustaw nazwę partycji na tego pendrive-a i testuj czy ta nazwa występuje w systemie.

    0
  • #3 26 Paź 2010 18:16
    Itoto
    Poziom 8  

    Za dużo komplikacji. Szukam sposobu, aby komputer sam się dowiedział na którym dysku jest podłączony pendrive.

    0
  • #5 26 Paź 2010 19:55
    Itoto
    Poziom 8  

    Gusioo, dzięki!
    Już dawno poszukałem tą funkcję, ale nie potrafiłem ją "wcielić" do programu. Dzięki odnośnikowi, który umieściłeś udało mi się.
    Zrobiłem to w taki sposób:

    Code:
    string lit_dys_s;
    
        for(int i = 0; i < 24; i++)
        {
            UINT gdt;
            const char lit_dys_ch[24] = {'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
           
            lit_dys_s = lit_dys_ch[i];
            lit_dys_s += ":\\";

            gdt = GetDriveType(lit_dys_s.c_str());
           
            if(gdt == 2) break;
        }

    0