Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kompatibilität von API-Funktionen

Kompatibilität von API-Funktionen
30.08.2014 19:04:44
Michael Schneyder

Guten Abend aus Wien,
ich programmiere gerade eine kleine Buchhaltungssoftware für KMUs. Das funktioniert bislang auch recht gut - solange ich das Ganze auf meinem Excel 2007 (32bit) laufen lasse.
Für ein paar spezielle Funktionen habe ich im Netz API-Funktionen gesucht und gefunden (z.B. Fensterfixierung, Rahmen von UFs entfernen, usw.). Diese hab ich eingebaut und alles läuft. Das Programm sollte aber später auch auf anderen Systemen laufen und da liegt mein Problem: bei z.B. Excel 2010 64bit bekomme ich einen Laufzeitfehler 9 (Index außerhalb gültigem Bereich) und das wars. Nach eingehender Recherche bin ich immerhin so schlau geworden, dass ich diese Funktionen bei einer 64bit-Version anders ansprechen muss (z.B. ptrlong, usw.).
Meine VBA-Kenntnisse sind soweit in Ordnung, bloß stehe ich bei den Funktionen völlig an und auch stundenlange Suchen im Netz haben mir nur partiell weitergeholfen. Wäre es möglich, dass ihr mir hier helft? Im Idealfall sollte das Programm erst automatisch abfragen, welche Version verwendet wird und dann die entsprechenden Deklarationen festlegen (ab Excel 2007, 32bit und 64bit).
Hier einmal die Deklarationen soweit ich sie im Netz gefunden hab:
Declare PtrSafe Function DeleteMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare PtrSafe Function DrawMenuBar Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function GetSystemMenu Lib "user32.dll" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
#If VBA7 Then
#If Win64 Then
Declare PtrSafe Function GetWindowLongPtr Lib "user32.dll" Alias "GetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Declare PtrSafe Function SetWindowLongPtr Lib "user32.dll" Alias "SetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#Else
Declare Function GetWindowLongPtr Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Declare Function SetWindowLongPtr Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#End If
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
#Else
Declare Function GetWindowLongPtr Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#End If
Declare PtrSafe Function ReleaseCapture Lib "user32.dll" () As Long
Declare PtrSafe Function SetWindowPos Lib "user32.dll" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Public Const MF_BYCOMMAND = &H0
Public Const SC_MOVE = &HF010
Public Const GC_CLASSNAMEMSEXCELFORM = "ThunderDFrame"
Public Const GWL_STYLE = -16
Public Const WS_CAPTION = &HC00000
Public Const HTCAPTION = 2
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HWND_TOPMOST = -1
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public hWndForm As LongPtr, hwndMenu As LongPtr

Irgendwo hier sollte der "Fehler" liegen. Ich freue mich über jede Hilfe und bin dankbar wieder was Neues lernen zu können.
LG aus Wien
Michael

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kompatibilität von API-Funktionen
04.09.2014 09:17:41
robert
Hi Michael,
hast Du hier unter "RECHERCHE-Archivsuche" schon gesucht ?
Gruß
robert ( auch aus Wien )

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige