Höhe der Taskleiste ermitteln (o. mit advapi Betriebssystem)
Übersicht BlitzBasic BlitzPlus
SereyanneBetreff: Höhe der Taskleiste ermitteln (o. mit advapi Betriebssystem) |
Sa, Nov 19, 2011 22:25 Antworten mit Zitat |
|
---|---|---|
Hey,
dann gleich noch mein zweites Problem^^. Ich arbeite mit der advapi32.decls und lese die Registry aus. Was ich schon geschafft habe, ist mir CPU und MHz anzeigen zu lassen. Code: [AUSKLAPPEN] lesecpu$=Reg_GetValue(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","ProcessorNameString")
Global lesemhz=Reg_GetValue(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\CentralProcessor\0","~MHz") Wie komm ich jetzt ans Betriebssystem ran? Dafür ist doch dieser Teil der advapi zuständig: Zitat: Function Reg_GetOSVersion$()
key$ = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\" KeyHandle% = Reg_OpenKey(HKEY_LOCAL_MACHINE,key$) If KeyHandle <> -1 Then ;WIN XP = \"Microsoft Windows XP\" value$ = Reg_GetValue(HKEY_LOCAL_MACHINE,key$,"ProductName\") Reg_CloseKey(KeyHandle) Else ; DID NOT FIND - FAIL SILENTLY value$ = "Unknown\" EndIf Return value$ End Function Wie heißt da jetzt die Variable? Ich habs einfach mal so versucht: Code: [AUSKLAPPEN] DebugLog "os "+Reg_GetOSVersion$
Aber da krieg ich keinen Wert zurück. Auch über den systemeigenen Befehl krieg ich nichts angezeigt: Code: [AUSKLAPPEN] DebugLog "version "+SystemProperty(OS)
Was mach ich falsch? Danke für Anwort. LG Sereyanne |
||
- Zuletzt bearbeitet von Sereyanne am So, Dez 11, 2011 22:22, insgesamt einmal bearbeitet
Eingeproggt |
Sa, Nov 19, 2011 22:29 Antworten mit Zitat |
|
---|---|---|
OS <> "OS" | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Sereyanne |
Sa, Nov 19, 2011 22:32 Antworten mit Zitat |
|
---|---|---|
Eingeproggt hat Folgendes geschrieben: OS <> "OS"
Ja, hab ich auch grad gesehen^^. Ändert aber nichts! In der Hilfe das Beispiel: Code: [AUSKLAPPEN] PRINT "BlitzBasic-Ordner: "+SYSTEMPROPERTY$("APPDIR")
PRINT "System-Ordner: "+SYSTEMPROPERTY$("SYSTEMDIR") PRINT "Temp-Ordner: "+SYSTEMPROPERTY$("TEMPDIR") PRINT "Windows-Ordner: "+SYSTEMPROPERTY$("WINDOWSDIR") PRINT "Betriebssystem: "+SYSTEMPROPERTY$("OS") Da ist ja alles richtig geschrieben. Ich bekomme auch alles korrekt angezeigt, nur nicht das OS! |
||
ozzi789 |
Di, Nov 22, 2011 15:19 Antworten mit Zitat |
|
---|---|---|
Selbe bei mir (Win 7 x64)
Merkwürdig! Per CMD -> Set wäre OS schon richtig. Man bekommt sowieso nur Windows_NT zurück, das kann vieles heissen Besser wäre wenn du den Output von "ver" abfängst und auswertest. Grüsse Edit: Code: [AUSKLAPPEN] CreateDir ("C:\temporary")
ExecFile ("cmd.exe /k ver > C:\temporary\Winversion.txt") ExecFile ("C:\temporary\Winversion.txt") DeleteDir ("C:\temporary") Et voila |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Eingeproggt |
Di, Nov 22, 2011 17:39 Antworten mit Zitat |
|
---|---|---|
Langsam dämmert es mir wieder...
SystemProperty Dass es bei Win7 nicht geht hatte ich schon am 09.02.2010, 22:40 Uhr im Briefkasten gepostet und steht seither eh in der Online-Hilfe. Hatte ich aber selber wieder vergessen gehabt mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Sereyanne |
Di, Nov 22, 2011 21:10 Antworten mit Zitat |
|
---|---|---|
ozzi789 hat Folgendes geschrieben: Selbe bei mir (Win 7 x64)
Merkwürdig! Per CMD -> Set wäre OS schon richtig. Man bekommt sowieso nur Windows_NT zurück, das kann vieles heissen Besser wäre wenn du den Output von "ver" abfängst und auswertest. Grüsse Edit: Code: [AUSKLAPPEN] CreateDir ("C:\temporary")
ExecFile ("cmd.exe /k ver > C:\temporary\Winversion.txt") ExecFile ("C:\temporary\Winversion.txt") DeleteDir ("C:\temporary") Et voila Sorry.... ich steh jetzt aufem Schlauch Kann damit irgendwie nichts anfangen. Damit erreiche ich bei mir nur das hier: Eingeproggt hat Folgendes geschrieben: Langsam dämmert es mir wieder...
SystemProperty Dass es bei Win7 nicht geht hatte ich schon am 09.02.2010, 22:40 Uhr im Briefkasten gepostet und steht seither eh in der Online-Hilfe. Hatte ich aber selber wieder vergessen gehabt mfG, Christoph. Soll das heißen, dass das Problem seit bald 2 Jahren bekannt ist, aber noch nichts dran geändert wurde? Da kann ich ja lang warten. Also hab ich überhaupt keine Chance, mit Win 7 das OS auszulesen? |
||
Thunder |
Di, Nov 22, 2011 22:50 Antworten mit Zitat |
|
---|---|---|
ozzi hat einen falschen Parameter angegeben:
Code: [AUSKLAPPEN] ExecFile ("cmd.exe /c ver > C:\temporary\Winversion.txt")
Ich weiß nicht ob es funktioniert - schon lange kein BlitzPlus mehr programmiert - aber ich würde CreateProcess bevorzugen. Der Funktion "cmd.exe /c ver" übergeben (eventuell den vollen Pfad zu cmd.exe) und mit ReadLine ihre Ausgabe auslesen. Edit: ist anscheinend doch nicht falsch, der Parameter. Aber wie ozzi sagt. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
- Zuletzt bearbeitet von Thunder am Mi, Nov 23, 2011 20:35, insgesamt einmal bearbeitet
ozzi789 |
Mi, Nov 23, 2011 10:18 Antworten mit Zitat |
|
---|---|---|
@Sereyanne
Liegt wohl daran dass das Verzeichniss nicht erstellt worden konnte... Einfacher gehts so Code: [AUSKLAPPEN] stream = CreateProcess("cmd.exe /c ver")
If stream Then While Not Eof(stream) Print ReadLine$(stream) Wend EndIf Delay(5000) @Thunder /C Carries out My_Command and then terminates /K Carries out My_Command but remains /c ist tatsächlich schöner, danke für den Tipp Grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Sereyanne |
Mi, Nov 23, 2011 23:23 Antworten mit Zitat |
|
---|---|---|
ozzi789 hat Folgendes geschrieben: @Sereyanne
Liegt wohl daran dass das Verzeichniss nicht erstellt worden konnte... Einfacher gehts so Code: [AUSKLAPPEN] stream = CreateProcess("cmd.exe /c ver")
If stream Then While Not Eof(stream) Print ReadLine$(stream) Wend EndIf Delay(5000) Ah, okay, vielen Dank. Allerdings kann ich mit dieser Info auch recht wenig anfangen: Woran erkenne ich jetzt, dass das Win 7 ist??? |
||
Lastmayday |
Do, Nov 24, 2011 7:50 Antworten mit Zitat |
|
---|---|---|
schau dir mal diesen link an (unter dem punkt Remarks): http://msdn.microsoft.com/en-us/library/ms724834 | ||
ozzi789 |
Do, Nov 24, 2011 22:16 Antworten mit Zitat |
|
---|---|---|
Also mit 6.1 kann ich einiges anfangen
http://de.wikipedia.org/wiki/Microsoft_Windows |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Sereyanne |
So, Nov 27, 2011 14:29 Antworten mit Zitat |
|
---|---|---|
Danke für eure Hilfe. Leider bringt mich das nicht weiter
Lastmayday hat Folgendes geschrieben: schau dir mal diesen link an (unter dem punkt Remarks): http://msdn.microsoft.com/en-us/library/ms724834
Vielen Dank, aber so ganz eindeutig ist diese Aussage leider nicht. Bei mir wird 6.1 angezeigt, das heißt, ich könnte auch Windows Server 2008 R2 haben. Ist für mich nicht dasselbe wie Win 7. ozzi789 hat Folgendes geschrieben: Cool, dann bring mir das mal bitte bei. In dem Artikel finde ich irgendwie überhaupt gar nichts, was mir weiterhelfen könnte. Also gut, ich ziehs jetzt anders auf. Sinn der Sache war, das Betriebssystem zu ermitteln, da ich festgestellt habe, dass die Größe der Taskleiste sich von XP auf 7 merklich verändert hat. Da man die Größe der Taskleiste aber auch manuell ändern kann, bräuchte ich eine Möglichkeit, um die aktuelle Größe der Taskleiste auszulesen. Wie komm ich da ran? Hat jemand ne Idee? |
||
Eingeproggt |
So, Nov 27, 2011 16:16 Antworten mit Zitat |
|
---|---|---|
Wenns dir um die Größe der Taskleiste geht schaut die Welt ganz anders aus... ich hab mal kurz gesucht und bin in etwa hier her gekommen:
http://msdn.microsoft.com/en-u...p/ms724947(v=vs.85).aspx suche nach SPI_GETWORKAREA, das is der Bereich des Dektops OHNE der Taskbar... Also entweder willst du eh genau das wissen oder du rechnest mit diesem Wert und der Höhe des Dektops die Taskbar-Größe aus. Wie auch immer, es is kein Zuckerschlecken und bitte zuerst gut überlegen ob das wirklich der Aufwand wert is für dich... meine WinAPI-Spielereien sind schon so lange her dass ich dir jetzt nicht ohne weiters sagen kann was du alles brauchst. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Sereyanne |
So, Nov 27, 2011 16:30 Antworten mit Zitat |
|
---|---|---|
Vielen Dank für deine Hilfe. Ja, das ist genau das, was ich brauche. Allerdings scheint das kein leichtes Unterfangen zu sein. Mit der Materie kenn ich mich überhaupt nicht aus.
Kann mir da wer helfen? |
||
mpmxyz |
So, Nov 27, 2011 19:52 Antworten mit Zitat |
|
---|---|---|
Funktionieren die Standardfunktionen etwa nicht? (siehe Desktop)
mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Sereyanne |
So, Nov 27, 2011 20:55 Antworten mit Zitat |
|
---|---|---|
mpmxyz hat Folgendes geschrieben:
Was hat das mit der Größe der Taskleiste zu tun? Sorry wenn ich aufem Schlauch stehe.... |
||
n-Halbleiter |
So, Nov 27, 2011 23:52 Antworten mit Zitat |
|
---|---|---|
Ich denke, mpmxyz meint Desktop in Verbindung mit ClientWidth/ClientHeight. Nur müsste man eruieren, ob diese Funktionen die Taskleiste miteinbeziehen oder nicht; die BBP-Hilfe spricht von der Auflösung.. Ich habe kein BP zur Hand, daher kann ich das nicht testen. | ||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
ozzi789 |
Mo, Nov 28, 2011 9:10 Antworten mit Zitat |
|
---|---|---|
Windows verwendet, wie fast jede Software (jaja ich vergleich jetzt ein OS mit ner Software) eine Versionsnummer.
Anhand diesen kannst du auch den Namen der Version rausfinden. Grob gesagt: 2000 =5.00.XXX XP = 5.1.XXXX Server 2003 =5.2.XXXX Vista =6.0.XXXX 7 =6.1.XXXX Anhand dieser Informationen solltest du ohne Probleme das aktuell verwendete Windows ermitteln können. Auch interessant könnte folgendes für dich sein, HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows NT\ CurrentVersion Anhand der Taskleistengrösse die OS Version zu ermitteln, ist schon sehr kreativ, muss ich dir lassen Grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
mpmxyz |
Mo, Nov 28, 2011 20:02 Antworten mit Zitat |
|
---|---|---|
@ozzi789
Mir ging es um das hinter der Versionsfrage liegende Problem. So viel ich verstanden habe, ist es nämlich so, dass Sereyanne die Größe der Taskleiste bzw. den übrigend Platz auf dem Desktop abfragen möchte. Bei mir funktioniert es über die Differenz von GadgetHeight und ClientHeight des Desktops. (Ich nutze aber BlitzMax und möchte zur Zeit nicht ausprobieren, ob die Virenwarnung zum BlitzPlus-Installer ein falscher Alarm sein könnte.) So bekomme ich hier als Ergebnis, dass die Windows 7-Taskleiste 48 Pixel hoch ist. MfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Sereyanne |
Di, Nov 29, 2011 8:46 Antworten mit Zitat |
|
---|---|---|
ozzi789 hat Folgendes geschrieben: Anhand der Taskleistengrösse die OS Version zu ermitteln, ist schon sehr kreativ, muss ich dir lassen
Ich glaube, da hast du mich missverstanden. Eigentlich brauch ich nur die Höhe der Taskleiste und das OS überhaupt nicht. Den Weg mit dem OS bin ich nur gegangen, weil ich dachte, dadurch am leichtesten an die Höhe der Taskleiste ranzukommen. Bis mir dann einfiel, dass man die Taskleiste ja auch manuell anpassen kann, da war dann mein Weg für die Katz. mpmxyz hat Folgendes geschrieben: Bei mir funktioniert es über die Differenz von GadgetHeight und ClientHeight des Desktops. (Ich nutze aber BlitzMax und möchte zur Zeit nicht ausprobieren, ob die Virenwarnung zum BlitzPlus-Installer ein falscher Alarm sein könnte.)
So bekomme ich hier als Ergebnis, dass die Windows 7-Taskleiste 48 Pixel hoch ist. Virenwarnung? Ist mir neu. Hab Plus schon vor ner Ewigkeit installiert. Aber wie meinst du das mit GadgetHeight und ClientHeight? Ich hab mir beide Befehle durchgelesen, aber ich komm nicht drauf, wie ich damit die Größe der Taskleiste ermitteln soll. Desktop-Auflösung ist klar. Aber "den übrigend Platz auf dem Desktop"? Wenn ich diesen Wert hätte, könnte ich damit auch logischerweise die Höhe der Taskleiste ermitteln. Aber wie komm ich an diesen Wert? |
||
Übersicht BlitzBasic BlitzPlus
Powered by phpBB © 2001 - 2006, phpBB Group