Mehrere Fragen bezüglich Winapi



  • 1.)Wie ermittel ich den Pc Name?
    2.)Wie ermittle ich aktuellen BenutzerNamen?
    3.)Wie ermittel ich ie rechte des Benutzers?
    4.)Wie ermittle ich alle verfügbaren Festplatten und dessen Speicher?
    5.)Wie ermittle ich Betriebssystem?
    6.)Wie ermittle ich Internet Explorer Version?

    Ich benutze Dev-C++ und würde das ganze gerne in C machen.
    Jetzt weiß ich nicht die Api Funktionen.

    Bitte um HELP.



  • hi,

    PC-Name: GetComputerName()
    Benutzername: GetUserName()

    -> wie man sowas findet: einfach in die MSDN gucken 😉
    erst wenn du da was nicht findest solltest du dich hier melden 💡



  • Hallo ich versuche so Benutzer und CuomputerName zu ermitteln:

    char cn[100];
    char cp[100];
    GetComputerName(cn, 100);
    GetUserName (cp,100);
    MessageBox(0, TEXT(cn), TEXT("Test"), 0 | MB_ICONERROR); 
    MessageBox(0, TEXT(cp), TEXT("Test"), 0 | MB_ICONERROR);
    

    So nun wenn ich es starte kommt:
    "Test.exe hat ein Problem festgestellt und musste beendet werden."

    Was mache ich den verkehrt?



  • ich kenn mich nicht so gut mit Dev c++ da ich Visual 2005 express (kostenlos) besser finde aber das mit dem TEXT(cn) sieht "komisch" aus hast du UNICODE an ? wenn ja würde ich aus char, wchar machen oder noch besser TCHAR ( weis nicht ob Dev-C++ TCHAR kennt )

    AHA: deine MessageBox(en) haben keinen Handle, den müsstest du als ersten Parameter übergeben, also so:

    MessageBox(hWnd,cn,TEXT("Test"), MB_ICONERROR);
    

    hWnd, stellt dabei den Handle deines Fensters dar, aus dem du die MessageBox aufrufst



  • Beim Debuggen stopt es bei dieser Zeile:

    GetComputerName(cn, 100);
    


  • Also der Code ist murks...!
    So sollte gehts:

    DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
    TCHAR szBuffer[MAX_COMPUTERNAME_LENGTH + 1];
    if(!GetComputerName(szBuffer, &dwSize))
       // Error...
    MessageBox(NULL, szBuffer, TEXT("Computername:"), MB_OK | MB_ICONINFORMATION);
    


  • TCHAR cn[100]; 
    TCHAR cp[100]; 
    GetComputerName(cn, 100); 
    GetUserName (cp,100);
    


  • noha_391 schrieb:

    ich kenn mich nicht so gut mit Dev c++ da ich Visual 2005 express (kostenlos) besser finde aber das mit dem TEXT(cn) sieht "komisch" aus hast du UNICODE an ? wenn ja würde ich aus char, wchar machen oder noch besser TCHAR ( weis nicht ob Dev-C++ TCHAR kennt )

    AHA: deine MessageBox(en) haben keinen Handle, den müsstest du als ersten Parameter übergeben, also so:

    MessageBox(hWnd,cn,TEXT("Test"), MB_ICONERROR);
    

    hWnd, stellt dabei den Handle deines Fensters dar, aus dem du die MessageBox aufrufst

    0 als Fensterhandle an ::MessageBox zu übergeben ist ein dokumentiertes Feature und vollkommen OK.



  • So zu dem Code jetzt hier:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
    DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
    TCHAR szBuffer[MAX_COMPUTERNAME_LENGTH + 1];
    if(!GetComputerName(szBuffer, &dwSize))
       // Error...
    MessageBox(NULL, szBuffer, TEXT("Computername:"), MB_OK | MB_ICONINFORMATION);
      system("PAUSE");	
      return 0;
    }
    

    Da wird irgendwie nie was ausgegeben!!!!
    Kann mir jemand sagen wie es mit den anderen Fragen aussieht was für Api's ich da brauche?



  • Nur wenn beim Aufruf von GetComputerName () ein Fehler auftritt wird die MessageBox angezeigt. Soll das so sein ?



  • das //Error ist natürlich eine noch zu schreibende Fehlerbehandlung,
    Die MessageBox wird etwas ausgeben. Bei mir läuft der Code.
    Bernd


Anmelden zum Antworten