PDA

Vollständige Version anzeigen : 32- bzw. 64 Bit und Windows-Systemaufrufe


hcscherzer
06.06.2012, 09:32
Public Declare Sub Sleep _
Lib "Kernel32" (ByVal dwMilliseconds As Long)

Public Declare Function GetProcessVersion _
Lib "Kernel32" (ByVal ProcessId As Long) As Long

Hat jemand einen Tipp oder ein Beispiel (oder einen Link darauf), wie ich diese beiden Systemaufrufe in meine Umgebung einbaue, so dass sie sowohl mit 32- als auch mit 64-Bit Versionen von Access compiliert und ausgeführt werden?

Die Option mit PtrSafe funktioniert nicht ... und am liebsten hätte ich so etwas wie eine Präprozessor-Direktive, die das bedingt ausführt ... nur habe ich leider bisher nichts gefunden.

Louisleon
06.06.2012, 10:58
Hallo,

schau mal hier:
Compatibility Between the 32-bit and 64-bit Versions of Office 2010 (http://msdn.microsoft.com/en-us/library/ee691831.aspx)
incl. Compiler Directiven ;-)
und zu "PtrSafe"
The PtrSafe attribute indicates to the VBA compiler that the Declare statement is targeted for the 64-bit version of Office 2010.

HTH

Gruß

LL

hcscherzer
06.06.2012, 12:49
Au ja. Das ist ja einfach. In einem globalen Modul deklarieren:
#If Win64 Then
Public Declare PtrSafe Sub Sleep _
Lib "Kernel32" (ByVal dwMilliseconds As Long)
#Else
Public Declare Sub Sleep _
Lib "Kernel32" (ByVal dwMilliseconds As Long)
#End If

Zuerst war ich irritiert, weil der #else Zweig auf dem 64-Bitter angemault wurde und nach wie vor im Editor rot angezeigt wird ... aber es klappt problemlos. Vielen Dank!