Win32-Konsolenanwendung: Systemdaten wie Uhrzeit erfragen + ändern
lima-city → Forum → Programmiersprachen → C/C++ und D
befehl
code
datei
erfragen
funktion
info
konsole
lebenszeit
minute
ordner
pause
programm
schleife
starten
system
uhrzeit
unbekannter status
url
windows
wissen
-
Hey Lima-Gemeinde!
Es ist jetzt schon mehrere Monate her, dass ich in Lima on war, nun ist die Zeit der Rückkehr na. *akteX-sound* :)
Da ich jetzt einen bezahlten WebSpace habe, war Lima also erstmal nicht mehr nötig, nun nachdem alles eingerichtet ist kehre ich aber zurück, da Lima wohl eines der bestens Boards hast.
Ich bin gerade am C++ lernen und schreibe grad an einer Win32-Konsolenanwendung (kurz: cmd.exe ohne NetFramework).
Das Programm soll eine Art "AllesKönner" in Form einer Konsole werden, da ich die ewigen Userinterface bei Windows als IT-Freak langsam satt bin, daher auch mein Anfang mit C++.
Ich würde mal gerne wissen, wie man auf Systemdaten (richtig gesagt zum Teil auch Systemressourcen) abfragen + ändern kann. Hierzu muss allerdings folgendes gesagt haben. Programme mit Temperaturmeesung bzw. Abfragung werden ja von vielen AntiViren-Programmen + Firewalls, mit Windows Vista erstrecht als Viren etc. angezeigt. Dies ist jetzt nicht so wichtig, da das Programm eh nur von mir benutzt werden wird, daher werd ich mein Vista wohl schon dazu bringen es auszuführen. Ich würde jetzt folgendes gerne wissen.
Wie lautet ein Befehl um einen bestimmten Ordner bzw. eine Datei zu öffnen, allerdings mit eingabe? Heißt in Sofern, ich gebe dem Programm einen if-Schleife mit, vorher lass ich ihn eine char-Variable machen, die Schleife überprüft dann ob ich open eingegeben haben und soll dann die Datei in dem vorgegeben Ordner (lege ich vorher in der Schleife fest) die datei öffnen. ^^
Wie kann ich Internetseiten öffnen? Im Grunde muss ich ja die Systemressource für die Internetöffnung erfragen, die dann den eingebenen Wert (z.B. google.de) an den StandartBrowser weitergibt. Funktion siehe Ordneröffnung.
Beides wird wohl mit ein wenig mehr können nicht soo schwer sein, da das normale Ausführen dies ja auch kann. (Hoffe ich zumal).
Dann würde ich gerne Systemeinstellungen erfragen und ändern, z.B. die Uhrzeit (sowie das auch bei der Original cmd.exe geht).
Das war es für das erste mal, würde mich über Antworten freuen. <- - -> Need Help.
Der Rest kommt später.
Robbmaster. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Es gibt eine Funktion um Konsolenbefehle ausführen zu lassen, ich glaube system() oder so... bin mir aber nicht mehr sicher. Wenn du die Funktion aber gefunden hast, kannst du damit alles machen, was du auch in der Konsole machen könntest (Programm mit parametern starten, und möglicherweise auch die Uhrzeit ändern). Ich kenne mich zwar mit der Windows-Konsole nicht aus, aber zumindest ein Programm starten, sollte möglich sein
Hoffe das bringt dich ein bisschen weiter,
mfg
PD -
Standartbrowser aufrufen kannst du in der Konsole mit dem Befehl
rundll32.exe url.dll,FileProtocolHandler http://www.dapizzafressa.de
aufrufen.
Und ja, der Befehl heißt system, zB:
system("PAUSE");
Ich hatte selber vor langer Zeit (wie ich angfangen hab) mal ein Programm zum auslesn von Systemeinstellungen geschrieben, vll hilfts dir ja weiter. Ich weiß aber net, ob da net irgendwo ein Fehlerchen drinnen ist:
#include <windows.h> #include <iostream> #include <fstream> #include <string> using namespace std; int main() { DWORD nSize; string str; cout << "------ PC Infos ------" << endl << endl; char PCName[255]; nSize=sizeof(PCName); GetComputerNameA(PCName,&nSize); cout << "Computername :" << PCName << endl << endl << endl; cout << "----- User Infos -----" << endl << endl; char UName[255]; nSize = sizeof(UName); GetUserNameA(UName,&nSize); cout << "Benutzername :" << UName << endl << endl << endl; cout << "--- Windows Infos ---" << endl << endl; DWORD WVer = GetVersion(); cout << "Windows-Version :" << (DWORD)LOBYTE(LOWORD(WVer)) << "." << (DWORD)HIBYTE(LOWORD(WVer)) << endl; char WinDir[MAX_PATH]; GetWindowsDirectoryA(WinDir,sizeof(WinDir)); cout << "Windows-Ordner :" << WinDir << endl; char SysDir[MAX_PATH]; GetSystemDirectoryA(SysDir,sizeof(SysDir)); cout << "Windows-System-Ordner:" << SysDir << endl; char TmpDir[MAX_PATH]; GetTempPathA(sizeof(TmpDir),TmpDir); cout << "Windows-Temp-Ordner :" << TmpDir << endl; cout << "Windows Uptime :" << GetTickCount()/(1000*60) << " Minuten" << endl << endl << endl; cout << "--- Stromversorung ---" << endl << endl; SYSTEM_POWER_STATUS PowerS; GetSystemPowerStatus(&PowerS); if ((DWORD)PowerS.ACLineStatus==0) { str = "nicht angeschlossen"; } else if ((DWORD)PowerS.ACLineStatus==1) { str = "angeschlossen"; } else { str = "unbekannter Status"; } cout << "Stromkabel :" << str << endl; if ((DWORD)PowerS.BatteryFlag==1) { str = "hoch"; } else if ((DWORD)PowerS.BatteryFlag==2) { str = "niedrig"; } else if ((DWORD)PowerS.BatteryFlag==4) { str = "kritisch"; } else if ((DWORD)PowerS.BatteryFlag==8) { str = "wird geladen"; } else if ((DWORD)PowerS.BatteryFlag==128) { str = "keine Batterie"; } else { str = "unbekannter Status"; } cout << "Batteriestatus :" << str << endl; if (!(DWORD)PowerS.BatteryFlag==128) { if ((DWORD)PowerS.BatteryLifePercent==255) { str = "unbekannter Status"; } else { str = (DWORD)PowerS.BatteryLifePercent; } cout << "Ladestatus (%) :" << str << endl; if ((DWORD)PowerS.BatteryLifeTime==0xFFFFFFFF) { str = "unbekannter Status"; } else { str = (DWORD)PowerS.BatteryLifeTime + " Min."; } cout << "uebr. Lebenszeit :" << str << endl; if ((DWORD)PowerS.BatteryFullLifeTime==0xFFFFFFFF) { str = "unbekannt"; } else { str = (DWORD)PowerS.BatteryFullLifeTime + " Min."; } cout << "ges. Lebenszeit :" << str << endl << endl << endl; } else {cout << endl << endl << endl; } cout << "---- Zeit & Datum ----" << endl << endl; SYSTEMTIME Zeit; GetSystemTime(&Zeit); switch (Zeit.wDayOfWeek) { case 1: str = "Montag, der "; case 2: str = "Dienstag, der "; case 3: str = "Mittwoch, der "; case 4: str = "Donnerstag, der "; case 5: str = "Freitag, der "; case 6: str = "Samstag, der "; case 7: str = "Sonntag, der "; } cout << "aktuelles Datum :" << Zeit.wDay << "." << Zeit.wMonth << "." << Zeit.wYear << endl; cout << "aktuelle Uhrzeit :" << Zeit.wHour << ":" << Zeit.wMinute << ":" << Zeit.wSecond << ":" << Zeit.wMilliseconds << " (Stunde : Minute : Sekunde : Millisekunde)" << endl << endl << endl; cout << "------ Sonstiges -----" << endl << endl; char AktDir[MAX_PATH]; GetCurrentDirectoryA(sizeof(AktDir),AktDir); cout << "akt. Verzeichniss :" << AktDir << endl << endl << endl; cout << "--Laufwerke--" << endl; char strd[128]; memset(&strd,0,sizeof(strd)); char drv[5]; memset(&drv,0,sizeof(drv)); GetLogicalDriveStrings(128,strd); int i=0; int dtyp=0; while (strd[i*4]!='\0') { cout << strd[i*4]; sprintf(drv,"%c:\\",strd[i*4]); dtyp=GetDriveType(drv); if (dtyp==DRIVE_REMOVABLE) {cout << " (Wechseldatentraeger)";} else if (dtyp==DRIVE_FIXED) {} else if (dtyp==DRIVE_REMOTE) {cout << " (Netzwerkdatentraeger)";} else if (dtyp==DRIVE_CDROM) {cout << " (CD-ROM)";} else if (dtyp==DRIVE_RAMDISK) {cout << " (RAM)";} cout << endl; i++; } system("pause"); return 0; }
Grüße dapizzafressa -
Hey. :) Erstmal vielen Dank. Die Systemfunktion scheint tatsächlich zu funktionieren (nicht, dass ich eure Kenntnisse in Frage stelle).
Vielen Dank auch für dein Programm, ich werde mich da wohl erstmal reinarbeiten müssen, aber es wird schon klappen. :)
Ich muss aber jetzt erstmal mein Programm so umschreiben das es verschiedene Teile einer Variable erkennt.
Ich bin jedochimmer noch auf der Suche nach einem Befehl zur Ordner und Dateienöffnung. Ich könnte das zwar auch über die rundll32.exe und die url.dll machen, allerdings wär die Browserllösung über C:\... bzw. file:// ja auch nur ne Notlösung.
Weiß nochjemand was?
Edit: Das Programm enthält tatsächlich noch einige Fehler, ich werde mal schauen ob ich die alle rauskrieg. :)
Beitrag zuletzt geändert: 27.4.2009 20:33:36 von robbmaster -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage