Höhe der Taskleiste ermitteln (o. mit advapi Betriebssystem)

Übersicht BlitzBasic BlitzPlus

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

Sereyanne

Betreff: Höhe der Taskleiste ermitteln (o. mit advapi Betriebssystem)

BeitragSa, Nov 19, 2011 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Nov 19, 2011 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
OS <> "OS"
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Sereyanne

BeitragSa, Nov 19, 2011 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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!

user posted image

ozzi789

BeitragDi, Nov 22, 2011 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink


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 Cool
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Eingeproggt

BeitragDi, Nov 22, 2011 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Embarassed

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Sereyanne

BeitragDi, Nov 22, 2011 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink


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 Cool

Sorry.... ich steh jetzt aufem Schlauch Embarassed Kann damit irgendwie nichts anfangen. Damit erreiche ich bei mir nur das hier:
user posted image

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 Embarassed

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

BeitragDi, Nov 22, 2011 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Nov 23, 2011 10:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragMi, Nov 23, 2011 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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:
user posted image
Woran erkenne ich jetzt, dass das Win 7 ist???

Lastmayday

BeitragDo, Nov 24, 2011 7:50
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal diesen link an (unter dem punkt Remarks): http://msdn.microsoft.com/en-us/library/ms724834

ozzi789

BeitragDo, Nov 24, 2011 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mit 6.1 kann ich einiges anfangen Rolling Eyes

http://de.wikipedia.org/wiki/Microsoft_Windows Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Sereyanne

BeitragSo, Nov 27, 2011 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Hilfe. Leider bringt mich das nicht weiter Sad

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:
Also mit 6.1 kann ich einiges anfangen Rolling Eyes

http://de.wikipedia.org/wiki/Microsoft_Windows Wink

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

BeitragSo, Nov 27, 2011 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 27, 2011 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Nov 27, 2011 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktionieren die Standardfunktionen etwa nicht? (siehe Desktop)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Sereyanne

BeitragSo, Nov 27, 2011 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
mpmxyz hat Folgendes geschrieben:
Funktionieren die Standardfunktionen etwa nicht? (siehe Desktop)
mfG
mpmxyz

Was hat das mit der Größe der Taskleiste zu tun? Sorry wenn ich aufem Schlauch stehe....
 

n-Halbleiter

BeitragSo, Nov 27, 2011 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Nov 28, 2011 9:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing


Grüsse
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

mpmxyz

BeitragMo, Nov 28, 2011 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragDi, Nov 29, 2011 8:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789 hat Folgendes geschrieben:
Anhand der Taskleistengrösse die OS Version zu ermitteln, ist schon sehr kreativ, muss ich dir lassen Laughing

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?

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group