Schließe mich meinen vorpostern an und wünsche Dir alles erdenklich Gute zum Geburtstag und viel Glück im neuen Lebensjahr.
Gruß
Greenhorn
Schließe mich meinen vorpostern an und wünsche Dir alles erdenklich Gute zum Geburtstag und viel Glück im neuen Lebensjahr.
Gruß
Greenhorn
Hi,
natürlich erinnere ich mich an Dich und das Projekt. ![]()
Sieht doch schon ganz gut aus.
Bin gespannt was daraus wird ...
Gruß
Greenhorn
Hi,
poste mal die Konsolenausgabe von SciTE nach dem Kompilieren ...
Gruß
Greenhorn
Hi,
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("Form1", 682, 680, 206, 148);,$WS_POPUP)
$Input1 = GUICtrlCreateInput("", 304, 168, 329, 21)
$Edit1 = GUICtrlCreateEdit("", 304, 248, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "Edit1")
$Edit2 = GUICtrlCreateEdit("", 304, 320, 329, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "Edit2")
$suchen = GUICtrlCreateButton("suchen", 304, 200, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
MessageLoop ( )
[/autoit] [autoit][/autoit] [autoit]Func MessageLoop ()
[/autoit] [autoit][/autoit] [autoit]Local $sBuffer
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While (TRUE)
Switch (GUIGetMsg( ))
Case $suchen
$sBuffer = GuiCtrlRead($Input1)
If (StringRegExp ($sBuffer, "(Banane)|(Banana)|(lange Stange)")) Then
Funktion_1()
ElseIf (StringRegExp ($sBuffer, "(Tomate)|(Tomato)|(spanische Tomaten)")) Then
Funktion_2()
EndIf
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]func Funktion_1()
$Text = "Aberglaube"
GUICtrlSetData($Edit1, $Text)
$Text2 = "Langweilig"
GUICtrlSetData($Edit2, $Text2)
EndFunc
Func Funktion_2()
Local $iRnd = Random(1, 2, 1)
Switch $iRnd
Case 1
; Das erste vom Zufallsprinzip soll das sein
$Text = "Spielzeug"
GUICtrlSetData($Edit1, $Text)
$Text2 = "Droge"
GUICtrlSetData($Edit2, $Text2)
Case 2
; Das zweite vom Zufallsprinzip soll das sein
$Text = "Obst"
GUICtrlSetData($Edit1, $Text)
$Text2 = "Ente"
GUICtrlSetData($Edit2, $Text2)
EndSwitch
EndFunc ;==>Funktion_2
Gruß
Greenhorn
Ja, das Programm ist noch im Beta-Stadium.
Die Problematik mit verschachtelten Strukturen/Unions ist mir auch schon aufgefallen.
Mal sehen, wenn ich Zeit und Lust habe, werde ich es mir ansehen.
Die DEVMODE Struktur hatte ich schon einmal hier übersetzt.
Gruß
Greenhorn
Aber dies funktioniert genau so wenig und "AF41" wird als Text und nicht als Hex abgespeichert, obwohl ich 'b' als Parameter angegeben habe.
Selbstverständlich wird es als "Text" gespeichert. Auch eine Textdatei ist eine binäre Datei, so wie alle Dateien.
Zahlensysteme existieren nur im Kopf. Der Computer versteht nur Nullen und Einsen.
Du möchtest jetzt vier Bytes Text als zwei Bytes Hex speichern.
Deine vier Bytes ASCII "AF41" binär: 0100 0001 (=A) 0100 0110 (=F) 0011 0100 (=4) 0011 0001 (=1).
Gruß
Greenhorn
Ähm .... BAHNHOF ....
Wenn die Funktionen nach den C Aufrufkonventionen deklariert sind, dann musst du dem Rückgabewert der Funktion im DllCall ein "cdecl:" voranstellen.
Also z.B.:
Local $aRes = DllCall ($vixdll, "cdecl:INT", "VixHost_Connect", _
"INT", $apiVersion, _
"INT", $hostType, _
"str", $hostName, _
"INT", $hostPort, _
"str", $userName, _
"str", $password, _
"INT", $options, _
"INT", $propertyListHandle, _
"PTR", $callbackProc, _
"PTR", $clientData)
Gruß
Greenhorn
Ja, das könnte auch gut sein. ![]()
Jedoch ist "extern C" kein eindeutiger Hinweis. Die WinAPI-Header z.B. enthalten fast nur stdcall als Aufrufkonvention, bzw. fastcall für x64.
Naja, wie auch immer, BLinz hat nun alle Hände voll zu tun, mit der Fehlersuche ...
Viel Spaß dabei und möglichst wenig Frust. ![]()
Gruß
Greenhorn
Ja, nun kommt der spannendste Teil: das Debuggen.
![]()
Ich würde lieber ConsoleWrite anstatt MsgBox zum Debuggen verwenden.
Und du solltest die Dokumentation zur DLL, bzw. des SDK studieren (denke aber das hast du sicherlich schon getan).
Führst du das Skript mit Administratorrechten aus ?
Füge ein ConsoleWrite in den Funktionsrumpf von VixHost_Connect ein, um zu überprüfen wann der Absturz eintritt, vor dem Aufruf von DllCall, oder danach ... ?
Hier noch eine Funktion um Arrays in der Konsole auszugeben, damit kannst du $aRes prüfen ...
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
[/autoit] [autoit][/autoit] [autoit]Func ConsoleWriteArray (ByRef Const $array, $sArrayName = "")
[/autoit] [autoit][/autoit] [autoit]Local $cnColumns
Local $cnDimension
Local $cnRows
Local $cnElements
If (not IsArray ($array)) Then
ConsoleWrite (StringFormat ("!--- ConsoleWriteArray - Fehler: %s ist kein Array!\n", $sArrayName))
Return 0
EndIf
$cnDimension = UBound ($array, 0)
[/autoit] [autoit][/autoit] [autoit]If ($cnDimension > 3) Then
ConsoleWrite (StringFormat ("!--- ConsoleWriteArray - Fehler: %d\n", $sArrayName, $cnDimension))
ConsoleWrite (StringFormat ("!--- Max. Anzahl Dimensionen: %d\n", 3))
ConsoleWrite (StringFormat ("!--- %s - Anzahl Dimensionen: %d\n", $sArrayName, $cnDimension))
Return 0
EndIf
ConsoleWrite (StringFormat ("--- Arrayvariable %s\n--- Anzahl Dimensionen: %d\n", $sArrayName, $cnDimension))
[/autoit] [autoit][/autoit] [autoit]$cnRows = UBound ($array, 1)
$cnColumns = UBound ($array, 2)
$cnElements = UBound ($array, 3)
Switch ($cnDimension)
[/autoit] [autoit][/autoit] [autoit]Case 1
;...
ConsoleWrite (StringFormat ("--- Anzahl Elemente: %d\n", $cnRows))
For $i = 0 To $cnRows - 1
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite (StringFormat ("; %s [%d] = %s\n", $sArrayName, $i, $array[$i]))
Next
Case 2
;...
ConsoleWrite (StringFormat ("--- Anzahl Elemente: %d\n", $cnRows))
For $i = 0 To $cnRows - 1
[/autoit] [autoit][/autoit] [autoit]For $j = 0 To $cnColumns - 1
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite (StringFormat ("; %s [%d][%d] = %s\n", $sArrayName, $i, $j, $array[$i][$j]))
Next
Next
Case 3
;...
ConsoleWrite (StringFormat ("--- Anzahl Elemente: %d\n", $cnRows))
For $i = 0 To $cnRows - 1
[/autoit] [autoit][/autoit] [autoit]For $j = 0 To $cnColumns - 1
[/autoit] [autoit][/autoit] [autoit]For $k = 0 To $cnElements - 1
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite (StringFormat ("; %s [%d][%d][%d] = %s\n", $sArrayName, $i, $j, $k, $array[$i][$j][$k]))
Next
Next
Next
Case Else
;...
EndSwitch
ConsoleWrite (StringFormat ("----------------------------\n\n", 0))
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];«««««««««««««««««««««««««««««««« End Of File «««««««««««««««««««««««««««««««««
[/autoit]Gruß
Greenhorn
... getestet ist die aber noch nicht, oder?
Nein, und ich habe das "#include-once" im Skript vergessen ...
Du musst noch die Parameter überprüfen, ob sie per Referenz übergeben werden und evtl. verändert werden.
Gruß
Greenhorn
[autoit]danke^^
Gibt es eigentlich keine Möglichkeit, dass er nur das fertige script bekommt, aber das Bild dennoch im script zu sehen ist?
FileInstall
[/autoit]
Und das Bild musst du ihm trotzdem schicken, wenn er das Skript kompilieren will ... ![]()
Gruß
Greenhorn
Und hier die VixH.au3 ... ![]()
Gruß
Greenhorn
Hi,
dazu müsste man die "vix.h" sehen ...
Gruß
Greenhorn
Herzlichen Glückwunsch nachträglich zum Burzeltag, alte Spinne ! ![]()
... Schon wieder ein Jahr älter
...
... und jedes Jahr läuft immer schneller, denkt man ...
Gruß
Greenhorn
Dann schau doch mal hier nach Deinem Modell und probiere es mit KeyM@n ...
Bist Du Donaldinho?
Gruß
Greenhorn
Tastaturmodell ... ?
Gruß
Greenhorn
Hi,
die "graphics.Clear()" hat nichts in der Nachrichtenschleife verloren. (Auch nicht zum Testen)
Dieser Link sollte dir den Anfang erleichtern ...
Die Windows GDI+ (Teil 1)
Gruß
Greenhorn
Hi,
sieht so aus als wäre es mit der AutoItObject UDF realisiert. Die Struktur ist für DirectX ...
ProgAndy kann dir da sicherlich weiterhelfen ...
Gruß
Greenhorn
Die Themen aus der MSDN solltest du auch lesen ...
Dynamic-Link Libraries
Ein einfaches Beispiel:
DLL
Gruß
Greenhorn