Allg. Fragen
-
Hallo zusammen,
hab mal wieder einige Fragen.
1. Wie kann ich die Systemsprache auslesen? (Nicht Tastatur sondern sozusagen die angezeigte Sprache, Dialoge usw.)
2. Wie kann ich die Programmuptime bestimmen? (So etwas wie GetTickCount für mein Programm)
3. Den Namen des Prozessors herausbekommen? (z.B. AMD Athlon XP 3000+)
4. Die Farbtiefe des Monitors herausbekommen?
5. Den benötigten Speicher meines Prozesses?
6. Die physikalisch verfügbaren/komplette Speichergröße auslesen?Hoffe das war nicht zu viel des Guten

MfG
yogle :schland:
-
yogle schrieb:
1. Wie kann ich die Systemsprache auslesen? (Nicht Tastatur sondern sozusagen die angezeigte Sprache, Dialoge usw.)
GetUserDefaultLCID bzw. GetSystemDefaultLCID bzw. GetLocaleInfo (beachte auch MUI-Systeme!)
yogle schrieb:
2. Wie kann ich die Programmuptime bestimmen? (So etwas wie GetTickCount für mein Programm)
GetProcessTimes
yogle schrieb:
3. Den Namen des Prozessors herausbekommen? (z.B. AMD Athlon XP 3000+)
WMI mit Win32_Processor und Name-Property
yogle schrieb:
4. Die Farbtiefe des Monitors herausbekommen?
GetDeviceCaps mit BITSPIXEL
yogle schrieb:
5. Den benötigten Speicher meines Prozesses?
GetProcessMemoryInfo und hier PagefileUsage
yogle schrieb:
6. Die physikalisch verfügbaren/komplette Speichergröße auslesen?
WMI mit Win32_PhysicalMemory
-
[edit] VERDAMMT, zu langsam gesucht
[/edit]ad 1)
GetSystemDefaultLangID()
ad 2)
GetProcessTime()
ad 3) WMI
Win32_Processor class
ad 4)
GetDeviceCaps():#include <iostream> #include <windows.h> int main( ) { HWND desktop = GetDesktopWindow( ); HDC dc = GetDC( desktop ); std::cout << "You are using " << GetDeviceCaps( dc, BITSPIXEL ) << " bits per pixel." << std::endl; ReleaseDC( desktop, dc); }ad 5)
GetProcessMemoryInfo()
ad 6) WMI
Win32_PhysicalMemory classGreetz, Swordfish
-
Danke vielmals für die Antworten!

Muss jetzt alles erst mal testen. Bei weiteren (bestimmt auftretenden) Fragen poste ich nochmal.MfG
yogle
-
Gint es denn eine Funktion die mir für den Rückgabewert von GetSystemDefaultLangID die Sprache in einen String umwandlen kann wie z.B. "Deutsch" oder so was?
Mit GetProcessTimes hab ich so meine Probleme. Ich bekomme einfach keinen sinnvollen Wert heraus. Könnte mir da vl. jemand ein kurzes Beispiel zeigen, wie ich die Programmuptime bestimmen könnte?
Und gibt es eine Funktion, mit der ich bestimmen könnte, ob mein Programm eine Konsolenanwendung oder eine GUI-Anwendung ist?
Der Rest klappt soweit schon recht gut

MfG
yogle
-
yogle schrieb:
Gint es denn eine Funktion die mir für den Rückgabewert von GetSystemDefaultLangID die Sprache in einen String umwandlen kann wie z.B. "Deutsch" oder so was?
GetLocaleInfo
http://msdn.microsoft.com/library/en-us/intl/nls_34rz.asp
mit z.B. LOCALE_SLANGUAGEyogle schrieb:
Mit GetProcessTimes hab ich so meine Probleme. Ich bekomme einfach keinen sinnvollen Wert heraus. Könnte mir da vl. jemand ein kurzes Beispiel zeigen, wie ich die Programmuptime bestimmen könnte?
Für ein Beispiele siehe:
http://www.codeproject.com/threads/getprocesstimes.aspyogle schrieb:
Und gibt es eine Funktion, mit der ich bestimmen könnte, ob mein Programm eine Konsolenanwendung oder eine GUI-Anwendung ist?
EIgentlich wird dies ja schon zur Compilerzeit festgelegt und kann z.B. via _CONSOLE macro abgefragt werden...
Wenn Du es aber wirklich zur Laufzeit erfahren willst, ist das einfachste die Funktion GetConsoleTitle aufzurufen und schauen ob es erfolgreich war oder nicht...
TCHAR szConsoleTitle[1024]; DWORD dwRes = GetConsoleTitle(szConsoleTitle, 1024); if ( (dwRes == 0) && (GetLastError() == 6)) { // Wir haben keine Console }Das ist aber nicht die 100%ig Lösung, da ja zu diesem Zeitpunkt die Console freigegeben sein könnte (FreeConsole).
Die 100%ig Lösung ist in den PE-Header der EXE-Datei zuschauen und nach SubSystem-Console schauen (siehe PE-Spec).
-
Danke erstmal für die Antowrten.
Jochen Kalmbach schrieb:
Für ein Beispiele siehe:
http://www.codeproject.com/threads/getprocesstimes.aspDiese Beispiel habe ich auch schon gesehen, ich verwende aber kein MFC.
Ich habe mir eine kleine Funktion geschrieben, mit der ich den DWORD von GetTickCount in ein Datum/Zeit-String umwandlen kann. Bei mir hängt es aber bei der Umwandlung von der FILETIME-Struktur bishin zum DWORD. Könnte mir für das jemand vl. ein Beispiel zeigen?
MfG
yogle
-
Du bekommst kein FILETIME in ein DWORD...
Im FILETIME steht die Startzeit Deiner Anwendung drin und nun bruachst Du nur noch die aktuelle Uhrzeit. Dann ziehst Du die zwei voneinander ab und hast die Laufzeit...
- GetLocalTime
- SystemTimeToFileTime
FILETIME kannst Du in einen "ULARGE_INTEGER" kopieren dann beide "ULARGE_INTEGER" voneinander abziehen; wieder zurück nach FILETIME und dann mittels "FileTimeToSystemTime" wieder in eine lesbare Zeit.