Προς το περιεχόμενο

Drive's name C++ Builder?


kabamarou

Προτεινόμενες αναρτήσεις

Δημοσ.

Πως μπορώ να πάρω το όνομα του σκληρού δίσκου( C:\ ή D:\....) του υπολογιστή που τρεχει η εφαρμογή μου?

Σε Builder ειναι η εφαρμογή.

Δημοσ.

Λαθος διατύπωση.

Η εφαρμογή τρέχει απο CD. Το πρόβλημα ειναι οτι πρέπει να δω το όνομα του σκληρού δίσκου ετσι ωστε να αντιγράψω κάποια αρχεία σε αυτόν.

Δημοσ.

Δεν καταλαβαίνω τι ζητάς - θέλεις να μάθεις ποίοι είναι οι διαθέσιμοι δίσκοι του υπολογιστή γενικά;

 

Αν ναι:

 

>
  AnsiString  strDriveLetter = "";
  char        szVolumeName[13];
  int         nLetterChar = 'A';
  DWORD       dwUseless;

  for(nLetterChar='A';nLetterChar<'Z';nLetterChar++)
   {
     strDriveLetter = (AnsiString)(char)nLetterChar+":\\";
     if(GetDriveType(strDriveLetter.c_str())==DRIVE_FIXED)
      {
        szVolumeName[0] = 0;
        GetVolumeInformation(strDriveLetter.c_str(),
                             szVolumeName,
                             sizeof(szVolumeName),
                             NULL,&dwUseless,&dwUseless,NULL,0);

        ShowMessage(strDriveLetter+" - "+szVolumeName);
      }
   }

 

Ο κώδικας απλά καλεί την ρουτίνα GetDriveType του Windows API παρέχωντας το Root path με το γράμμα κάθε δυνατής DOS / Windows μονάδας και εαν η ρουτίνα επιστρέψει DRIVE_FIXED (για περισσότερους τύπους δες το Windows API) το παρουσιάζει στην οθόνη μαζί με το label του (GetVolumeInformation).

 

ή

 

Αν θες να μάθεις σε ποίον δίσκο είναι εγκατεστημένα τα Windows ένας πολύ εύκολος τρόπος είναι η χρήση της μεταβλητής περιβάλλοντος "windir" η οποία δείχνει εξ ορισμού στο "c:\windows" (αν θυμάμαι καλά για όλα τα Windows από τα '95 και μετά -Μπορεί να κάνω λάθος):

 

>
ShowMessage(ExtractFileDrive(getenv("windir")));

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...