Ich sehe da wirklich keinen Fehler... Vielleicht bin ich aber auch blind... Naja, irgendjemand wird dir bestimmt helfen können ;).
Beiträge von name22
-
-
-
Zitat
aber da das Problem offensichtlich allgemeinerer Natur ist,
Nein, ich habe schon so oft mit diesen Befehlen gearbeitet und nie ein Ähnliches Problem gehabt. Also machst wohl eher du etwas falsch ;).Zitatund das Skript aus mehr als tausend unübersichtlichen Zeilen Code besteht,
Dann poste den relevanten Ausschnitt. -
Man kann evtl. auch noch einen Obfuscator verwenden um den Code zu verschleiern und unübersichtlich zu machen.
-
Hier eine Erklärung der Technik (Ob du es glaubst oder nicht, das habe ich über Google unter dem Begriff "Frontbuffer" gefunden...). Wie man das mit GDI+ macht ist in Ubuntus GDI+ Tutorial beschrieben. Das ist jetzt ungefähr das 10te mal, dass ich dir empfehle dieses Tutorial zu lesen
. Irgendwie habe ich das Gefühl du bist einfach nur faul. -
Das kannst du mit AutoIt vergessen... Ich würde dir empfehlen ein Linux basiertes Betriebsystem zu schreiben, wenn du solch große Ambitionen hast. Aber das muss man halt auch erstmal können ;).
-
Ich hab mal ein wenig herumexperimentiert, und bei mir funktioniert es, wenn ich das Label vor den Bildern erstelle.
-
Bei mir funktioniert es, aber das könnte natürlich auch damit zusammenhängen, dass ich die Bilder nicht habe welche bei dir vielleicht das Verschieben verhindern. Funktioniert es bei dir wenn du alle Bilder in einen anderen Ordner verschiebst?
-
Du musst alle Radiobuttons die nachher zu einer Gruppe gehören sollen nacheinander erstellen, also so:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 690, 443, 192, 124)
$Label1 = GUICtrlCreateLabel("Frage .... ?", 16, 24, 68, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
$Frage = GUICtrlCreateGroup("Frage", 8, 8, 553, 193)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Radio1 = GUICtrlCreateRadio("Antwort 1", 24, 48, 233, 25)
$Radio2 = GUICtrlCreateRadio("Antwort 2", 24, 71, 233, 25)
$Radio3 = GUICtrlCreateRadio("Antwort 3", 24, 94, 233, 24)
$Radio4 = GUICtrlCreateRadio("Antwort 4", 24, 117, 233, 25)
$Label2 = GUICtrlCreateLabel("60 Sekunden", 160, 160, 125, 26)
GUICtrlSetFont(-1, 14, 800, 0, "Arial")
$Group1 = GUICtrlCreateGroup("Zeit", 152, 142, 132, 49)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Weiter", 24, 157, 113, 28, 0)
$Group2 = GUICtrlCreateGroup("Fertig", 16, 142, 129, 49)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitCase $Radio1
[/autoit]
Case $Radio2
Case $Radio3
Case $Radio4
EndSwitch
WEnd -
Wie wäre es mit einem Script? Meine Hellseher Fähigkeiten sind ein wenig eingerostet...

-
Das wäre nur ein Explorer Ersatz und kein Betriebssystem...
-
Sorry, da hab ich deine Funktion wohl zu schnell überflogen :(. Die HTML Entitäten werden dadurch selbstverständlich nicht "übersetzt". Lediglich die Umlaute etc. werden korrekt codiert.
-
Schau dir am besten mal das Array Tutorial von Bugfix an (ist in seiner Signatur). Ansonsten säße ich morgen noch hier und würde dir erklären wie das geht.

Das ist eine angepasste Version meines Beispiels, welche die Daten aus einer Datei mit einer bestimmten Struktur ausließt.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIListView.au3>;- Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]#cs Aufbau der Datei
[/autoit] [autoit][/autoit] [autoit]
<START>
<TITLE:"Titel1">
<TAGS:"Tag1">
<TEXT:"Line1
Line2">
<END>
<START>
<TITLE:"Titel2">
<TAGS:"Tag1, Tag2, Tag3">
<TEXT:"Line1
Line2
Line3">
<END>
#ce$sData = FileRead(@ScriptDir & "\Data.txt")
[/autoit] [autoit][/autoit] [autoit]
$aSplit = StringRegExp($sData, '(?s)<START>(.+?)<END>', 3)Global $aHelp[UBound($aSplit) + 1][4] = [[UBound($aSplit)]]
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aHelp[0][0]
[/autoit] [autoit][/autoit] [autoit]
$aTitle = StringRegExp($aSplit[$i - 1], '<TITLE:"(.+?)">', 1)
$aTags = StringRegExp($aSplit[$i - 1], '<TAGS:"(.+?)">', 1)
$aText = StringRegExp($aSplit[$i - 1], '(?s)<TEXT:"(.+?)">', 1)If IsArray($aTitle) And IsArray($aTags) And IsArray($aText) Then
[/autoit] [autoit][/autoit] [autoit]
$aHelp[$i][0] = $aTitle[0]
$aHelp[$i][1] = $aTags[0]
$aHelp[$i][2] = $aText[0]
EndIf
Next$hWnd = GUICreate("ListView Search by name22", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$cList_Help = GUICtrlCreateListView("Name|Tags", 5, 5, 390, 360)
_GUICtrlListView_SetColumnWidth($cList_Help, 0, 230)
_GUICtrlListView_SetColumnWidth($cList_Help, 1, 156)
$cInput_Search = GUICtrlCreateInput("", 5, 370, 340, 25)
GUICtrlSetFont(-1, 10)
$cButton_Search = GUICtrlCreateButton("Search", 350, 370, 45, 25)
GUISetState()For $i = 1 To $aHelp[0][0]
[/autoit] [autoit][/autoit] [autoit]
$aHelp[$i][3] = GUICtrlCreateListViewItem($aHelp[$i][0] & "|" & $aHelp[$i][1], $cList_Help)
GUICtrlSetOnEvent(-1, "_ListClick")
NextGUICtrlSetOnEvent($cButton_Search, "_Search")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_ExitFunc _Search()
[/autoit] [autoit][/autoit] [autoit]
$sSearch = GUICtrlRead($cInput_Search)
If StringReplace($sSearch, " ", "") = "" Then Return MsgBox(16, "Error", "Bitte Suchwort eingeben")$aCurSel = _GUICtrlListView_GetSelectedIndices($cList_Help, True)
[/autoit] [autoit][/autoit] [autoit]
If $aCurSel[0] = 0 Then
$iIndex = 0
Else
$iIndex = $aCurSel[$aCurSel[0]] + 1
EndIf$iStringInStr = 0
[/autoit] [autoit][/autoit] [autoit]
For $i = $iIndex + 1 To $aHelp[0][0]
$iStringInStr = StringInStr($aHelp[$i][0], $sSearch)
If $iStringInStr Then
$iIndex = $i
ExitLoop
EndIf
Next
If Not $iStringInStr Then
For $i = 1 To $aHelp[0][0]
$iStringInStr = StringInStr($aHelp[$i][0], $sSearch)
If $iStringInStr Then
$iIndex = $i
ExitLoop
EndIf
Next
If Not $iStringInStr Then Return MsgBox(16, "Error", "Suchwort nicht gefunden")
EndIf
_GUICtrlListView_SetItemSelected($cList_Help, $iIndex - 1, True, True)
GUICtrlSetState($cList_Help, $GUI_FOCUS)
EndFunc ;==>_SearchFunc _ListClick()
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $aHelp[0][0]
If $aHelp[$i][3] = @GUI_CtrlId Then
$iIndex = $i
ExitLoop
EndIf
NextMsgBox(64, $aHelp[$iIndex][0], $aHelp[$iIndex][2])
[/autoit]
EndFunc ;==>_ListClick -
So ich hoffe du verstehst das Beispiel halbwegs...
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIListView.au3>;- Author: name22 (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $aHelp[3][4] = [[1]]
[/autoit] [autoit][/autoit] [autoit]
$aHelp[1][0] = "AutoIt - Das einzig wahre"
$aHelp[1][1] = "AutoIt, Auto, Cool, Toll, Schön, Super"
$aHelp[1][2] = "AutoIt ist total cool!"$hWnd = GUICreate("ListView Search by name22", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$cList_Help = GUICtrlCreateListView("Name|Tags", 5, 5, 390, 360)
_GUICtrlListView_SetColumnWidth($cList_Help, 0, 230)
_GUICtrlListView_SetColumnWidth($cList_Help, 1, 156)
$cInput_Search = GUICtrlCreateInput("", 5, 370, 340, 25)
GUICtrlSetFont(-1, 10)
$cButton_Search = GUICtrlCreateButton("Search", 350, 370, 45, 25)
GUISetState()For $i = 1 To $aHelp[0][0]
[/autoit] [autoit][/autoit] [autoit]
$aHelp[$i][3] = GUICtrlCreateListViewItem($aHelp[$i][0] & "|" & $aHelp[$i][1], $cList_Help)
GUICtrlSetOnEvent(-1, "_ListClick")
NextGUICtrlSetOnEvent($cButton_Search, "_Search")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_ExitFunc _Search()
[/autoit] [autoit][/autoit] [autoit]
$sSearch = GUICtrlRead($cInput_Search)
If StringReplace($sSearch, " ", "") = "" Then Return MsgBox(16, "Error", "Bitte Suchwort eingeben")$aCurSel = _GUICtrlListView_GetSelectedIndices($cList_Help, True)
[/autoit] [autoit][/autoit] [autoit]
If $aCurSel[0] = 0 Then
$iIndex = 0
Else
$iIndex = $aCurSel[$aCurSel[0]]
EndIfFor $i = $iIndex + 1 To $aHelp[0][0]
[/autoit] [autoit][/autoit] [autoit]
$iStringInStr = StringInStr($aHelp[$i][0], $sSearch)
If $iStringInStr Then
$iIndex = $i
ExitLoop
EndIf
Next
If Not $iStringInStr Then
For $i = 1 To $aHelp[0][0]
$iStringInStr = StringInStr($aHelp[$i][0], $sSearch)
If $iStringInStr Then
$iIndex = $i
ExitLoop
EndIf
Next
If Not $iStringInStr Then Return MsgBox(16, "Error", "Suchwort nicht gefunden")
EndIf
_GUICtrlListView_SetItemSelected($cList_Help, $iIndex - 1, True, True)
GUICtrlSetState($cList_Help, $GUI_FOCUS)
EndFunc ;==>_SearchFunc _ListClick()
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $aHelp[0][0]
If $aHelp[$i][3] = @GUI_CtrlId Then
$iIndex = $i
ExitLoop
EndIf
NextMsgBox(64, $aHelp[$iIndex][0], $aHelp[$iIndex][2])
[/autoit]
EndFunc ;==>_ListClick -
Mein Suchtool ist eigentlich nur dazu gedacht Wörter in einem Edit Control zu finden und sie zu markieren. Im Grunde ist die wichtigste Funktion die du für dein Vorhaben brauchst StringInStr ;). Wenn du eine Art Hilfe machen möchtest, empfehle ich dir alle Artikel, Tags und Namen in ein 2D Array zu packen. Dann kannst du später einfach das ganze Array nach dem Suchwort durchstöbern und die Suche sogar auf Tags, Inhalt, oder Überschrift limitieren.
-
InetGetSource ist das selbe wie InetRead...
[autoit='_INetGetSource']
; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: _INetGetSource
; Description ...: Gets the source from an URL without writing a temp file.
; Parameters ....: $s_URL - The URL of the site.
; $bString - If True the data is returned in string format, otherwise binary format.
; Return values .: Success - The read string and sets @extended to the number of bytes returned.
; Failure - An empty string and and sets @error to non-zero.
; Author ........: Wouter van Kesteren.
; ===============================================================================================================================
Func _INetGetSource($s_URL, $bString = True)
Local $sString = InetRead($s_URL, 1)
Local $nError = @error, $nExtended = @extended
If $bString Then $sString = BinaryToString($sString)
Return SetError($nError, $nExtended, $sString)
EndFunc ;==>_INetGetSource
Deine Internetverbindung können wir auch nicht beschleunigen. :pinch:
Und wenn du BinaryToString mit 4 als 2tem Parameter verwendest brauchst du AspirinJunkies Funktion noch nicht einmal. -
Mit StringRegExp geht das schneller, allerdings nur wenn du den Quelltext bereits hast... Ansonsten geht das gar nicht anders. Willst du unbedingt mit den IE Funktionen arbeiten, oder würde dich die InetRead Funktion zufriedenstellen?
[autoit]$aBody = StringRegExp($sHTML, '(?s)<body>(.+)</body>', 3)
[/autoit]
ConsoleWrite($aBody[0] & @CRLF) -
Beispiel:
Spoiler anzeigen
[autoit]$hWnd = GUICreate("Test", 300, 100)
[/autoit] [autoit][/autoit] [autoit]
$cList = GUICtrlCreateList("", 5, 5, 290, 90)
GUICtrlSetData(-1, "001|002|003|004|005|006|007|008|009|010")
GUISetState()While True
[/autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $cList
MsgBox(64, "List", GUICtrlRead($cList))
EndSwitch
WEnd -
Als erstes nimms du bitte das include aus der Funktion raus, und packst es an den Scriptanfang oder so. Danach enfernst du die While Schleife um den Exit Befehl. Dein Script funktioniert nicht, weil FileOpen nicht den Inhalt der Datei zurückgibt, sondern sie im gewünschten Modus öffnet und ein "Handle" zurückgibt, du brauchst FileRead. Wenn du die Hilfe lesen würdest, wüsstest du das... Außerdem Würde ich das StringReplace komplett entfernen, da mein RegExp Pattern seine Aufgabe komplett erfüllt. Und wenn du in Zukunft schnelle und kompetente Hilfe erwartest solltest du genaue Fehlerbeschreibungen liefern. "Das geht irgendwie nicht..." Ist keine
genaueFehlerbeschreibung. -
Gut und genau das macht mein Script.
ClipGet() liest Daten aus dem Zwischenspeicher aus. Kopier einfach mal den Inhalt deiner ersten ini in die Zwischenablage und führ dann mein Script aus.