Funktion aus Dll laden

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Trust

Betreff: Funktion aus Dll laden

BeitragSa, Nov 10, 2012 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich möchte gerne einige Funktionen aus der user32.dll mit BMax benutzen, was eigentlich auch kein Problem darstellen sollte. Allerdings bringt mir BMax immer die Fehlermeldung, dass ich versuche, einen nicht inizialisierten Funktionspointer aufzurufen.
Mir ist es ein Rätsel wieso, denn mir scheint der Code absolut richtig.

Hier mal der Beispielcode:
BlitzMax: [AUSKLAPPEN]

SuperStrict
Framework brl.blitz
Import brl.polledInput
Import pub.win32
Import brl.standardio

' DLL-Zeugs
Local dllHandle:Int = LoadLibraryA("User32.dll")
If dllHandle = 0
Print "Dll konnte nicht geladen werden"
End
EndIf
Global GetWindowTextA:Int(hwnd:Int, lpString:Byte Ptr, cch:Int)"Win32" = GetProcAddress(dllHandle,"_GetWindowTextA@9")
If Int(Varptr GetWindowTextA) = 0
Print "Funktion konnte nicht geladen werden"
End
EndIf
' Ende Dll-Zeugs

Repeat

'Aktives Fenster
Local window:Int = GetForegroundWindow()
'Fensternamen herausfinden
Local array:Byte[255]
' -- Hier kommt die Fehlermeldung --
Local copiedStringlenght:Int = GetWindowTextA(window, array, 255)


' Fensternamen ausgeben
Print String.fromCString(array)

If KeyHit(KEY_ESCAPE) Or AppTerminate() Then End
End
Forever
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

BtbN

BeitragSa, Nov 10, 2012 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nicht einfach direkt mit Extern einbinden?

Trust

BeitragSa, Nov 10, 2012 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich könnt mich in den Hintern beissen, warum einfach wenns auch kompliziert geht.
Danke BtbN!

Hier der Code mit Extern:

BlitzMax: [AUSKLAPPEN]
SuperStrict

Framework em.pty

Import brl.standardIO

Include "Keycodes.bmx"

Extern "Win32"
' user32.dll
Function GetWindowTextA:Int(hwnd:Int, lpString:Byte Ptr, cch:Int)
Function GetAsyncKeyState:Int(vKey:Int)
Function GetKeyState:Int(vKey:Int)
Function GetForegroundWindow:Int()
End Extern

Repeat
'Aktives Fenster
Local window:Int = GetForegroundWindow()
'Fensternamen herausfinden
Local array:Byte[255]
Local copiedStringlenght:Int = GetWindowTextA(window, array, 255)


' Fensternamen ausgeben
Print String.fromCString(array)

If GetAsyncKeyState(VK_ESCAPE) Then End
Forever
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group