Wer AutoIt beherrscht und sich ein wenig mit Messages und Objekten befasst hat, der wird sich an PowerBASIC auch keinen Zahn ausbrechen und kann erstaunliche Ergebnisse erzielen.
Hier mal ein Beispiel für den Syntax:
hWnd = CreateWindowEx(0, _ ' extended Window style
$ClassName, _ ' window class name
$ClassName, _ ' window caption
%WS_OVERLAPPEDWINDOW, _ ' window style
...
BYVAL %NULL, _ ' window menu handle
hInstance, _ ' program instance handle
BYVAL %NULL) ' creation parameters
ShowWindow hWnd, iCmdShow
UpdateWindow hWnd
' Create a timer event every 30 mSec
hTimer = SetTimer(hWnd, 0, 30, BYVAL %NULL)
DO WHILE GetMessage(Msg, %NULL, 0, 0)
TranslateMessage Msg
DispatchMessage Msg
LOOP
Alles anzeigen
Ist sehr vertraut, nicht? ;). Hier mal ein kleines Beispiel für eine Dll. Diese gibt einfach nur eine MsgBox mit dem übergebenen Parameter aus, und den Sinn des Lebens zurück, 42
#COMPILER PBWIN 10
#COMPILE DLL
#INCLUDE ONCE "Win32api.inc"
GLOBAL ghInstance AS DWORD
FUNCTION MyFunction1 ALIAS "MyFunction1" (BYVAL Param1 AS LONG) EXPORT AS LONG
' hier sonstiges
MSGBOX "Hi! Du hast mir folgendes geschrieben: " + STR$(Param1)
FUNCTION = 42 ' return
END FUNCTION
SUB MySub1 ALIAS "MySub1" (BYVAL Param1 AS LONG) EXPORT
' Hier kann sonstwas rein.
END SUB
Alles anzeigen
Und zum Aufrufen in AutoIt:
[autoit]$hDll = DllOpen("MyDLL.dll")
$aResult = DllCall($hDll, "long", "MyFunction1", "long", 1234)
MsgBox(64, "minx", "Die Dll hat folgendes geschrieben: "&$aResult[0])
Oder fürs neue AutoIt:
[autoit]MsgBox(64, "minx", "Die Dll hat folgendes geschrieben: "& DllCall(DllOpen("MyDLL.dll"), "long", "MyFunction1", "long", 1234)[0] )
[/autoit]Keine AHnung ob PB inzwischen kostenlos ist, ich habe es von meinem Vater. Es ist wirklich wahnsinnig schnell. Zum Beispiel im direkten Vergleich die Graphics-Befehle von Au3 und PB. Es sind die gleichen, nur das es bei PB mehr gibt, und das sie eine unerhörte Geschwindigkeit haben. Klar kann man auch in PB GDI(+) nutzen, aber das ist absolut nicht nötig. Es gibt übrigens Graphicbefehle die Bildbearbeitung ermöglichen, die vermisse ich bei Au3 sehr.
Der ganze Source und die Dll ist hier .
So long!