GetProductInfo API

14/02/2008 - 10:16 von Patrick Denke | Report spam
Ich versuche unter Vista die installierte Edition mit der GetProductInfo
API zu ermitteln
Diese ist in der MSDN folgendermaßen beschrieben:

BOOL WINAPI GetProductInfo(
__in DWORD dwOSMajorVersion,
__in DWORD dwOSMinorVersion,
__in DWORD dwSpMajorVersion,
__in DWORD dwSpMinorVersion,
__out PDWORD pdwReturnedProductType
);

Wie muß ich die Funktion in VB6 deklarieren? Wie wird der Datentyp PDWORD
verwendet? Wie muß ich Funktion aufrufen?

Hier ein Ausug aus meinem Code:

Private Declare Function GetProductInfo Lib "kernel32.dll" ( _
ByVal dwOSMajorVersion As Long, _
ByVal dwOSMinorVersion As Long, _
ByVal dwSPMajorVersion As Long, _
ByVal dwSPMinorVersion As Long, _
ByRef pdwReturnedProductType As Any) As Boolean

Sub GetVistaEdition()

Dim OSminor&, OSmajor&, SPminor&, SPmajor&, OSProductType&
Dim returnValue As Boolean

returnValue = GetProductInfo(OSmajor, OSminor, _
SPmajor, SPminor, _
OSProductType)
...
...

returnValue ist hier immer 0, also not succeded.

Gruß Patrick
 

Lesen sie die antworten

#1 Thorsten Albers
14/02/2008 - 10:51 | Warnen spam
Patrick Denke schrieb im Beitrag
<5hncvq0bexot$...
Ich versuche unter Vista die installierte Edition mit der GetProductInfo
API zu ermitteln
...
Private Declare Function GetProductInfo Lib "kernel32.dll" ( _
ByVal dwOSMajorVersion As Long, _
ByVal dwOSMinorVersion As Long, _
ByVal dwSPMajorVersion As Long, _
ByVal dwSPMinorVersion As Long, _
ByRef pdwReturnedProductType As Any) As Boolean

Sub GetVistaEdition()

Dim OSminor&, OSmajor&, SPminor&, SPmajor&, OSProductType&
Dim returnValue As Boolean

returnValue = GetProductInfo(OSmajor, OSminor, _
SPmajor, SPminor, _
OSProductType)
...
...

returnValue ist hier immer 0, also not succeded.



1. C/C++ 'BOOL' muß in VB 'As Long' deklariert werden. C/C++ 'BOOL' hat 4
Bytes Speicherbreite, VB 'Boolean' nur 2.

2. In Parametern, die als '_in' etc. bezeichnet sind, müssen Werte
übergeben werden, damit die Funktion korrekt ausgeführt wird. Die mind.
erforderlichen Werte scheinen zu sein: 6, 0, 0, 0.

3. 'ByRef pdwReturnedProductType As Any' kannst Du hier ruhig zu 'ByRef
pdwReturnedProductType As Long' àndern, denn eine andere Rückgabe als ein
DWORD gibt es nicht.

-
THORSTEN ALBERS Universitàt Freiburg
albers@
uni-freiburg.de
-

Ähnliche fragen