auslesen aus cmd



  • Hallo liebe C++ Freunde,

    habe heute mal wieder ein Prob. Ich habe mir vorgenommen, ein Prog zu schreiben, das die Festplatten-ID aus der cmd ausliest. Da ich ein totaler Neueinsteiger bin, sieht mein Prog vorerst noch sehr lächerlich aus, aber ich kann mom schon mal die ID einlesen. Allerdings weiß ich net so recht wie ich nur die ID herausbekommen kann.

    #include <iostream>
    #include <vcl.h>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    using namespace std;
    int main(int argc, char* argv[])
    {
      //Dieses Programm soll die FestplattenID einlesen und überprüfen.
      string festid;
      festid = system("vol");
      system ("exit");
      cout<<"test";
      int test;
      cin>>test;
      return 0;
    }
    

    Bitte um Hilfe

    LG Sam



  • Das mit system Aufrufen machen zu wollen ist ein wenig Unsinn. 😉

    Benutz lieber OS spezifische Funktionen, wie unter windows z.B hier:
    http://msdn.microsoft.com/en-us/library/aa383749(VS.85).aspx



  • Danke, gibt es sowas auch auf deutsch??? Und wieso kann ich bei meinem Prog nicht den String festid auslesen wo ich den Inhalt von cmd eingelesen hab???



  • samkirchner schrieb:

    Und wieso kann ich bei meinem Prog nicht den String festid auslesen wo ich den Inhalt von cmd eingelesen hab???

    Weil du wahrscheinlich (jedenfalls nach deinen eingebundenen Headern zu urteilen, ich kenne mich nicht wirklich mit der VLC aus) die string-Klasse aus der VLC und nicht aus der Standardbibliothek (wenn du die Standard-String-Klasse verwenden willst, nimm am Anfang ein #include <string> und dann statt string im Quelltext std::string, oder nur string, das dürfte aber nicht funktionieren, wenn du immer noch vlc.h einbindest) verwendest.

    Anscheinend kann man den nicht mittels der Standard-Streams ausgeben.

    Ansonsten: Bitte immer die genauen Fehlermeldungen posten (also nicht nur "wieso kann ich nicht..."), dann kann man dir auch besser helfen.

    Felix



  • @ Phoemuex

    Danke für deine Antwort, allerdings kann ich keine Fehlermeldung sagen, da keine angezeigt wird. Ich merke halt, das er mein cout<<festid<<"\n"; einfach ignoriert und nichts ausgibt. Aber ne Fehlermedlung gibt er mir nicht, ich denke der liest den String nicht mal ein, also sprich festid ist ein String, der leer ist, wenn ich den ausgebe, gibt er mir aus was drinnen steht also nichts. hm, habe die änderungen gemacht, aber der mag noch immer net. Mit dem std ist des auch so ein ding, eigentlich dachte ich, das ich mit using namespace std; schon den Standard definiere, ist dem nicht so??? Folglich ist doch das std::string überflüssig, oder???

    #include <iostream>
    #include <vcl.h>
    #include <string>
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    using namespace std;
    int main(int argc, char* argv[])
    {
      //Dieses Programm soll die FestplattenID einlesen und überprüfen.
      std::string festid;
      festid = system("vol");
      system ("exit");
      cout<<"Hallo \n";
      cout<<festid;
      int test;
      cin>>test;
      return 0;
    }
    

    iwie geht noch immer nichts, also das volume funktioniert und auch das "Hallo" wird ausgegeben aber nicht das cout<<festid; iwie zeigt er aber nix an. Falls sich noch jmd denkt, was ich damit will nochmal kurz eine Erklärung.

    Also ich bin Anfänger und übe gerade Programme zu öffnen und dann den Inhalt zur Bearbeitung freizugeben. Ich will z.B. mit dem obigen Code die FestplatenID ausgeben und dann vergleichen, ob diese in einer bestimmten Liste existiert, ist dies der Fall soll eine Remotedesktopverbindung auf meinen Server erlaubt werden, wenn nicht, dann net. Wie bereits gesagt, ist eigentlich nur ne Übung um c++ zu lernen. Danke!!!



  • Mit dem std ist des auch so ein ding, eigentlich dachte ich, das ich mit using namespace std; schon den Standard definiere, ist dem nicht so???

    Damit machst du den namespace std bekannt und du kannst dann auf die explizite Angabe des Namensraumes durch std:: verzichten. (cout,string,vector usw.)



  • Hast du mal in der Hilfe deiner Wahl nachgeschaut was system eigentlich macht und was da zurückgegeben wird? Jedenfalls nicht das Ergebnis deines Systemaufrufes.
    Tu was drakon dir gesagt hat und lies dich da ein oder suche dir ein einfacheres Beispiel.



  • ja, ich suche noch immer sowas auf deutsch! Allerdings weiß ich net so richtig, nach was ich da suchen soll :-(. Kennt denn keiner von euch das was dracon mir herausgesucht hat auf deutsch??? Und ja, ich weiß das ich noch english lernen sollte 😉

    Danke Sam



  • Glaub mir, du wirst englisch lernen müssen. Ich denke auch, das die WinApi noch ein wenig zu schwer für dich ist.
    Zum Auslesen der fesplattendaten kann man wohl eine Funktion Namens
    DeviceIoControl verwenden.
    Weitere interessante Links sind
    http://www.programmersheaven.com/mb/CandCPP/83454/359843/re-how-can-i-get-hard-disk-serial-number/
    http://www.winsim.com/diskid32/diskid32.html
    Im letzten Link findest du auch eine cpp-datei in der genau gezeigt wird wie man sowas macht.
    Fragen dazu stellst du aber besser im WinAPI-Forum.


Anmelden zum Antworten