danke
Sehr komisch, eig. hat es gestern schon woanders einen Fehler gegeben und die eckige Klammer habe ich eig. hinzugefügt, wurde dann aber irgendwie zurückgesetzt :O
Wie dämlich, na ja, danke!
Beiträge von masterRobb
-
-
Also,
[autoit]
ich komme einfach nicht auf das Problem:MsgBox (0,"",$4GewPicsDatei[0][0])
[/autoit]
For $i = 0 To 4
For $x = 0 To 4
Select
Case $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And _
$4GewPicsDatei[$i+3[$x+3] = $4GewRedYellow
EndSelect
Next
NextZur Info: $4GewPicsDatei[][] ist 8x8 groß und es werden nur Buchstaben drin gespeichert. Der Aufruf der MsgBox vor der for-Schleife funktioniert, innerhalb der for-schleife, auch für den Fall [0][0], funktioniert es nicht mehr.
Das Eigenartige: mit exakt der selben Struktur habe ich kurz davor bereits eine Abfrage des Arrays gemacht und die funktioniert. Hier aber nicht? Wieso? Ideen? Ich verzweifleFehlermeldung: ==> Array variable subscript badly formatted.:
If $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And $4GewPicsDatei[$i+3[$x+3] = $4GewRedYellow Then
If $4GewPicsDatei[$i][$x] = $4GewRedYellow And $4GewPicsDatei[$i+1][$x+1] = $4GewRedYellow And $4GewPicsDatei[$i+2][$x+2] = $4GewRedYellow And $4GewPicsDatei[$i+^ ERROR -
Hi,
gibt es in AutoIt eine Funktion mit der man Eigenschaften eines durch GuiCtrlCreatePic() erstellen Bildes abfragen kann?
Also z.B. welches Bild in diesem Pic hochgeladen ist bzw. dessen Dateipfad oder so was?Und noch eine weitere Frage:
wie kann ich ein solches Bild ändern? oder muss ich es dann noch mal "createn"?
_______
Sry, dass ich schon wieder ein Topic öffne - bin gerade etwas verpeilt he he -
danke, aber geht es auch irgendwie den Button "soft" zu machen, also im Prinzip transparent und den Pfeil wegzulassen?
Habe noch eine weitere Frage:
Gibt es eine Funktion die den Dateipfad des Bildes eines GUICtrlCreatePic()s zurückgibt?
Oder irgendetwas in diese Richtung? ich finde nichts, bräuchte es aber -> das Programm muss dann abfragen welches Bild in einem GUICtrlCreatePic() drin ist -
hmm, habe mich schon gewundert, weshalb diese DllCalls nichts gebracht haben
Gibt es eine Möglichkeit einen solchen Softbutton auch ohne Pfeil zu machen? -
ehrlich gesagt keine Ahnung ist schon lange her als ich das genommen habe und ich glaube ich habe es auch nicht selbst geschrieben
Bei mir haben die DllCalls schon eine Wirkung auf den Button - das werden dann so "Softbuttons" oder so, blöder weise mit nem Pfeil.
Funktioniert das bei dir nicht? -
füg mal den Button mit den DllCalls in eine Form ein und starte
=> die sind "transparent" und die haben leider auch nen Pfeil -
ah, cool, danke.
wüsste eig. jemand wie ich den Button durchsichtig kriege, den Pfeil aber weg? -
Hi
[autoit]
Folgendes Problem:
ich habe mit DllCall das Design meines Buttons geändert, kann diesen aber nicht mehr rückgängig machen.
Also wenn ich den DllCall jetzt auskommentier etc. bringt das nichts.
Was muss ich machen, damit die Buttons wieder normal aussehen?$TTTCompStart = GUICtrlCreateButton("Computergegner: Start", 30, 190, 180, 60, 14, -1)
[/autoit]
DllCall("user32.dll", "UINT", "SendMessage", "handle", GUICtrlGetHandle(-1), "UINT", $BCM_SETNOTE, "ptr*", 0, "wstr")
DllCall("user32.dll", "UINT", "SendMessage", "handle", GUICtrlGetHandle(-1), "UINT", $BCM_SETSHIELD, "ptr*", 0, "BOOL", False) -
-
Hallo,
wie kann man in eine bereits bestehende GUI durch eine Funktion
z.B. ein Button hinzufügen? -
ok, super, danke.
Ich denke damit wären alle meine Probleme geklärt, ich bedanke mich bei allen die geholfen oder versucht haben zu helfen, danke! -
Wo kann ich die Constants nachschauen?
Habe mal in der Hilfe bei mir nachgeschaut von "$BCM-SETNOTE" konnte ich nichts findenUnd danke schon mal für die Bemühungen
-
ja, ich werde dein Tutorial auch genau durchgehen
Nur weiß ich (glaube ich) wie ein DllCall funktioniert - ich kann es auch bei einfachen Funktionen wie Beep und so machen.
Aber wenn es um die Funktion SendMessage aus der user32.dll geht verstehe ich nicht ganz genau was für Parameter ich übergeben kann um welches Design zu kriegen.
Und ich finde das auch nicht bei deren Beschreibung.
In meinem Beispiel wurden ja auch Variablen benutzt, die autoIt scheinbar schon kennt...
_________________
Hilft mir da dein Tutorial auch weiter? -
mmm, vlt. hast du recht, eig. brauche ich ein ganzes Tutorial
-> das "Tutorial", dass ich hatte war eher etwas... mager XDUnd danke für das Tut von bug-fix
Ich werde es mal durchgehen und euch danach vermutlich mit Fragen quälen :3
€dit: habe es gerade nur mal kurz überflogen und das ist eigentlich nicht so die Problematik - glaube ich
Ich habe eher ein Problem herauszufinden WELCHE Parameter ich übergeben kann, weil das scheinen irgendwelche festgelegten Konstanten zu sein.
Na ja, ich werde es genauer durchgehen, es wäre dennoch vlt. hilfreich, wenn mir jemand schon mal ein Beispiel erstellen könnte
für DllCalls die das Design bestimmter GUI-Instanzen verändern -
Hey,
ich bin vor nicht all zu langer Zeit vor die Funktion "DllCall" getreten.
[autoit]
Und habe mir aus einem anderen Quellcode auch bisschen was abschauen können und ein kleines Tutorial habe ich auch hinter mir.
Das Tutorial war allerdings nur geringfügig hilfreich$button = GUICtrlCreateButton("button", 30, 190, 180, 60, 14, -1)
[/autoit]
DllCall("user32.dll", "UINT", "SendMessage", "handle", GUICtrlGetHandle(-1), "UINT", $BCM_SETNOTE, "ptr*", 0, "wstr")
DllCall("user32.dll", "UINT", "SendMessage", "handle", GUICtrlGetHandle(-1), "UINT", $BCM_SETSHIELD, "ptr*", 0, "BOOL", False)Da ich allerdings SEHR GERNE mit DllCall arbeiten würde, speziell für ein besseres GUI-Design würde ich gerne eure Hilfe in Anspruch nehmen
Also folgende Fragen:
1. wie arbeite ich mit DllCall - GANZ GROBE Erklärung (damit die, die das Thema googlen was finden)
2. wie finde ich in der WinAPI die Funktionen, die mich interessieren
UND: wie kann ich verstehen was die Funktionen so richtig machen, bzw. die Parameter machen. (in msdn.microsoft.com konnte ich nicht richtig herauslesen was welcher Parameter zu bedeuten hat | bzw. was man da
übergeben kann um ein entsprechendes Design zu setzen)
3. wäre jemand so nett mit DllCall einige Beispiele bezüglich der Design-Änderung einer GUI zu erstellen (z.B. Form, Button, Label etc.)
[wenn möglich natürlich mit Erklärungen]
______
Ansonsten alle Informationen, die mich diesbezüglich interessieren könnten, sind selbstverständlich auch sehr erwünscht
______
Danke schon mal an alle die sich das Thema durchgelesen haben und an die, die mir versuchen zu helfen€dit: "$BCM_SETNOTE", "$BCM_SETSHIELD" (siehe Beispiel) - eig. brauche ich viel mehr dafür eine Erklärung
-
Der Vollständigkeits halber hier noch meine Lösung:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Include <File.au3>
#include <Array.au3>
#Include <String.au3>HotKeySet ("{Numpad5}","fileToHex")
[/autoit] [autoit][/autoit] [autoit]
HotKeySet ("{end}","ende")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep (1000)
WEndFunc fileToHex()
[/autoit] [autoit][/autoit] [autoit]
$pfadSave = @DesktopDir&"\HexFunktion.txt"
$datPfad = InputBox("Dateipfad","Geben sie den Dateipfad"&@CRLF&"an:")
$funcName = InputBox("Funktionsname","Geben Sie den gewünschten"&@CRLF&"Funktionsnamen an:")
If FileExists ($pfadSave) Then
FileDelete ($pfadSave)
EndIf
$fHandle = FileOpen($datPfad, 16)
$file = FileRead($fHandle)
$file = Hex($file)
If Not _FileCreate($pfadSave) Then
MsgBox(0,"Error","Erstellen der "&$pfadSave&"-Datei nicht möglich")
Exit
EndIf
Dim $string[int(StringLen($file)/100)+1]
$txtHandle = FileOpen($pfadSave, 1)
;
FileWriteLine($pfadSave, "Func "&$funcName&"()")
;wegen "=" beim Ersten und "&=" bei allen Anderen
$string[0] = StringLeft($file, 100)
$file = StringRight($file,StringLen($file)-100)
FileWriteLine($pfadSave, @TAB&'$file = "0x'&$string[0]&'"')
;
For $i = 1 To ((int(StringLen($file)/100)))
$string[$i] = StringLeft($file, 100)
$file = StringRight($file,StringLen($file)-100)
FileWriteLine($pfadSave, @TAB&'$file &= "'&$string[$i]&'"')
Next
;
FileWriteLine ($pfadSave, @TAB&'$file &= "'&$file&'"')
;
$tpn = _StringExplode($datPfad,"\") ;tempPfadName
;$tpnF = $tpn[UBound($tpn)-1]
FileWriteLine($pfadSave, @TAB&'$fHandle = FileOpen(@TempDir &"\'&$tpn[UBound($tpn)-1]&'", 18)')
FileWriteLine($pfadSave, @TAB&"FileWrite($fHandle, $file)")
FileWriteLine($pfadSave, @TAB&"FileClose($fHandle)")
FileWriteLine($pfadSave, "EndFunc")
MsgBox(0,"Erfolg","Das File wurde erfolgreich"&@CRLF&"in Hex codiert")
EndFuncFunc ende()
[/autoit]
Exit
EndFuncViel Quellcode für wenig, ich weiß.
Dennoch möchte ich es mal erklären:
Das Script wandelt einen File in Hex-Code um und speichert diesen dann in einem Textdokument auf dem Desktop.
Das ganze wird bereits in einer AutoIt-kompatiblen Funktion ausgegeben, die man dann in beliebe Scripts einfügen kann.
[man kann ein File in Binärcode auslesen - Binärcode in Hexcode umrechnen lassen]
[der Rest ist nur noch Schnick-Schnack]Ruft man die Funktion auf, befindet sich das Bild in einem temporären Ordner.
Den genauen Dateipfad kann man unten in der Funktion noch mal rauslesen (@TempDir &"...")
Auf diesen Dateipfad kann man nun ganz normal zugreifen und somit mit GuiCtrlCreatePic() das Bild in die GUI laden.
________________Wie sinnvoll das ganze ist? - ich mag Pinguine ;P
-
WOW!
Meinen höchsten Respekt für diese ausgezeichnete und ausführliche Erklärung! Danke!
Dürfte mir helfen, ich probiere dann mal selbst ein Bild Codieren zu lassen und dann wieder anzeigen zu lassenAlso wenn ich dann mein Bild in Binärcode codiert habe und dieser im Skript steht, muss ich diesen dann sozusagen wieder als "file" erstellen und kann dann in der GUI auf diesen file zugreifen, richtig?
-
danke für das Verständnis
ich glaube allerdings, dass ihr schon enorm viel Geduld mit mir haben müsstet, damit ich das verstehen könnte - überschreitet meine Fähigkeiten wohl doch bei WeitemAber wenn ihr es doch versuchen wollt:
Beim FileToBase64:
mmm, wie fangen wir am besten an - möglichst kleine Schritte.
Also: Ich kann das Script ausführen und eine z.B. .png Datei Codieren lassen.
Nun kriege ich eine Funktion und die Codierung - wozu dient die Funktion die ich kriege?
Und was für eine "Codierung" habe ich dann?
Was muss ich dann Schritt für Schritt machen um mit dieser Codierung etwas anfangen zu können? Im Idealfall in eine GUI diese als Picture zeigen zu lassen.Die andere Lösungsmöglichkeit, die mir Krabat netter weise geschickt hat funktioniert bei mir irgendwie nicht. Also die Funktionen, die gegeben werden funktionieren bei mir nicht - da gibt es dann unzählige Fehlermeldungen
_______________________
Für die, die sich damit auskennen - ist Krabats Lösungsvorschlag für mich besser geeignet?______________________
Und nur so nebenbei: Kennt einer von euch ein gutes Tutorial für DllCalls, welches evtl. auch speziell Designs für GUIObjekte(heißt das so?) - also Buttons, Inputboxen etc. beinhaltet? -
@Krabat
leider funktioniert gar nichts von dem bei mir
Alleine schon die Scripts die da offengelegt werden scheinen Fehlerhaft zu sein
Und ich bezweifle auch stark, dass es das ist was ich suche
Aber danke für deine MüheUnd danke für jeden, der versucht hat zu helfen
Nun gut, ich möchte mal lieber aufhören euch zu belästigen und schließe mal lieber den Thread - sollte jemand dennoch noch eine Lösung haben => schreibt mich persönlich an