WinAPI Library (Snippets) (1163 Beispielcodes)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von RSBasic »

Dann funktioniert der Code von nco2k & WeePe nur unter 64 Bit. Den Code müsste man auch für 32 Bit anpassen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (1.077)

Beitrag von ts-soft »

Wie wäre es denn, mit diesem Code?
GetWindowsProductKey
http://www.purebasic.fr/german/viewtopi ... 99#p282999

Funktioniert in 32- und 64-Bit, sowie ASCII und Unicode, seit 2010 ohne Fehler :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von RSBasic »

Jupp, dann ersetze ich den durch deinen Code. :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von tft »

Ja .. danke, Funktioniert tip top.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: WinAPI Library (Snippets) (1.077)

Beitrag von TheCube »

Gibt es eine Möglichkeit die Anzahl -echter- Kerne zu ermitteln ?

Weil ... der folgende Code aus der WinAPI-Lib zeigt bei meinem 2-Kerner mit HT ja 4 Kerne an,
was ja irgendwie nicht falsch, aber auch nicht wirklich richtig ist.

Code: Alles auswählen

Procedure.l cpu_count()
  Protected SI.SYSTEM_INFO
  GetSystemInfo_ (@SI)
  ProcedureReturn SI\dwNumberOfProcessors
EndProcedure 

MessageRequester("","Anzahl der Prozessoren: "+Str(cpu_count()),0)
Das "Prozessor-Spezifikationen ermitteln" der WinAPI-Lib gibt mir (glaube ich) leider nicht die nötige Zusatzinfo.

//EDIT 10.07.:
Nach MSDN (http://msdn.microsoft.com/en-us/library ... S.85).aspx) wäre GetLogicalProcessorInformation() eine Möglichkeit.
Werde die Tage mal mein Glück versuchen ... bin da nicht so firm.
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: WinAPI Library (Snippets) (1.077)

Beitrag von Shardik »

Es ist nicht mehr nötig, die Anzahl logischer CPUs mit API-Funktionen zu ermitteln, weil es seit PB 5.10 die native Funktion CountCPUs() gibt, die dies plattform-übergreifend erledigt... :wink:
TheCube hat geschrieben://EDIT 10.07.:

Nach MSDN (http://msdn.microsoft.com/en-us/library ... S.85).aspx) wäre GetLogicalProcessorInformation() eine Möglichkeit.
Nein, GetLogicalProcessorInformation() ermittelt auch nur die logischen Prozessoren. Der richtige Weg laut MSDN wäre die Verwendung von GetLogicalProcessorInformationEx():
MSDN hat geschrieben:Note For information about the physical processors shared by logical processors, call GetLogicalProcessorInformationEx with the RelationshipType parameter set to RelationProcessorPackage (3).
Eine einfachere Möglichkeit besteht darin, die Anzahl physischer Cores durch eine WMI-Abfrage zu ermitteln:

Code: Alles auswählen

ProgramID = RunProgram("Cmd", "/C WMIC CPU Get NumberOfCores", "",
  #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)

If ProgramID
  While ProgramRunning(ProgramID)
    If AvailableProgramOutput(ProgramID)
      Output$ + ReadProgramString(ProgramID)
    EndIf
  Wend

  CloseProgram(ProgramID)

  If Trim(Output$) <> ""
    MessageRequester("Info", Output$ + #CR$, #PB_MessageRequester_Info)
  EndIf
EndIf
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von RSBasic »

WinAPI Library 1.4.3 wurde veröffentlicht (156 Beispielcodes wurden angepasst)

Ich habe nun insgesamt 156 Forenlinks in den Code-Dateien nachträglich eingefügt.
27 Codes konnte ich nicht verlinken, da diese entweder per E-Mail oder in der WinAPI Library eingereicht oder im nicht mehr existierenden PureBasic-Lounge-Forum gepostet wurden.

Außerdem habe ich jetzt auch endlich die Einreichen-Funktion repariert bzw. die Verbindungsdaten angepasst und neue Codes können jetzt wieder eingereicht werden.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: WinAPI Library (Snippets) (1.077)

Beitrag von Nino »

Herzlichen Dank dafür!
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: WinAPI Library (Snippets) (1.077)

Beitrag von Kiffi »

Wie immer: Daumen hoch! :allright:

(nächstes Jahr ist 10-jähriges; meine Güte, wie die Zeit verfliegt... :shock:)

Grüße ... Peter

P.S.: Das wäre doch mal ein Super-Projekt, um es in SpiderBasic umzusetzen <gd&r>)
Hygge
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: WinAPI Library (Snippets) (1.077)

Beitrag von TheCube »

@ Kiffi: Danke für die Antwort. :)
GetLogicalProcessorInformationEx() hatte ich beim überfliegen gesehen, aber dachte
fälschlicherweise die ältere Variante ab Win XP (ohne Ex) täte es auch schon.
Den Weg über die WinAPI fände aber trotz deiner WMI-Abfrage Lösung weiterhin interessant.

Meine andere Idee wäre andersrum gewesen:
Mit PB's CountCPU() die logischen Kerne ermitteln, dann ein CPU-Flag Hyperthreading vorhanden/aktiv
auslesen und dann ggf. durch 2 teilen um auf die Anzahl echter Kerne zu kommen. Wahrscheinlich umständlicher Unsinn ...
Antworten