Das hat nix mit 'auskennen' zu tun sondern mit der fehlenden Bereitschaft, die Hilfe zu lesen und mal den Hinweisen aus den vergangenen Beiträgen nachzugehen. Wobei in diesem Fall nicht viel Aufwand nötig gewesen wäre. Die Lösung wurde ja quasi auf dem Silbertablett präsentiert.
Beiträge von i2c
-
-
Also entweder träum ich schon oder ....
[autoit]InetGet("http://xxxxxxx.de/test.exe",@scriptDir & "\test.exe", 1, 0)
[/autoit]
Jetzt willst du test.exe verstecken. Die liegt im Pfad @scriptDir & "\test.exe".
Was ist das Problem? Du kennst doch den Pfad, den du FileSetattrib() übergeben musst.Mir drängt sich grad wieder das Gefühl auf, das ich beim ersten Blick in diesen Thread hatte. Da will irgendeiner ohne grossen Aufwand und möglichst wenig Eigeninitiative jemand anderem eine Datei unterjubeln. Spassprogramm? Forenregeln lesen!
-
Was sol ie Sucherei. Du schreibst die Datei doch nach @scriptDir&"\test.exe"
-
Du schreibst im Startpost, du lädst sie runter und willst sie verstecken.
Wenn du sie runterladen lässt, weisst du auch wo sie liegt.
FileSetAttrib erledigt den Rest.Von verschieben oder umbenennen war nirgendwo die Rede.
-
Ich schau mir das Skript heut nicht mehr an, will in's Bett.
Du willst eine Frage eingeben und das Skript soll eine dazu passende Antwort geben?1. INI erstellen. Eine Sektion
2. Das Skript liest per IniReadSection() die Sektion Cleverbot ein. Ergebnis ist ein 2d Array.
3. Eingabe der Frage entgegennehmen.
4. Die erste Spalte des Arrays nach der Frage abgrasen (FOR $i=1 to $aIni[0][0])Der Bot wird natürlich cleverer, wenn man die eingegebene Frage vorher zerlegt und nach Mustern sucht, z.B. Fragewörter. Dadurch könnte man schinmal einen Teil der vorhandenen Fragen aussortieren. Danach nach den einzelnen Wörtern der eingegeben Frage im Array suchen. Bei jedem Fund einen Zähler für das Arrayelement hochzählen. Wurde das gesammte Array durchsucht, wird die Antwort von dem Index ausgegeben, der den höchsten Zähler hat.
Das wär jetzt meine erste, grobe Idee.
Edit:
Denkbar und warscheinlich auch sinnvoller für einen grossen Datenbestand wäre eine SQL Datenbank. Text und Inidateien sind in ihrer Grösse limitiert. -
Syntaktisch korekt wäre es so. Wenn du SciTE4AutoIt verwendest, dann drück ab und zu mal Strg+T. Dann fallen dir solche Fehler schneller auf.
Spoiler anzeigen
[autoit]#region - Timestamp
[/autoit] [autoit][/autoit] [autoit]
;2011-06-15 23:09:45
#endregion - Timestamp#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form2 = GUICreate("", 620, 657, 182, 144, $WS_POPUP)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 633, 529)
GUICtrlSetData(-1, "")
$Input1 = GUICtrlCreateInput("", 0, 560, 513, 21)
$senden = GUICtrlCreateButton("senden", 528, 560, 75, 25, $WS_GROUP)
$Beenden = GUICtrlCreateButton("Beenden", 528, 608, 75, 25, $WS_GROUP)
$Pic1 = GUICtrlCreatePic("Background.jpg", 0, 520, 636, 360, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)Local $sBuffer
[/autoit] [autoit][/autoit] [autoit]
Dim $Text
Dim $Fragen
Dim $Antworten
_FileReadToArray("Antwort.txt", $Fragen)
_FileReadToArray("Frage.txt", $Antworten)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit]
Switch GUIGetMsg()
Case $senden
$Antworten = GUICtrlRead($Input1)
For $i = 1 To UBound($Fragen) - 1
If $Fragen[$i] = $Antworten Then
If StringRegExp($Antworten, $Fragen[$i]) Then
$iRnd = Random(1, 2, 1)
Switch $iRnd
; hier fehlt mindestens ein Case
GUICtrlSetData($Edit1, $Antworten[$i])
EndSwitch
EndIf
EndIf
Next
EndSwitch
WEnd
Lies mein Edit in meinem letzten Beitrag. -
Falsche verschachtelung zwischen Zeile 29 und 37. For Schleife schliessen, Switch ohne Case, EndSwitch vor die EndIfs.
Mit Konsole ist die Ausgabe von SciTE gemeint. Das kleine Fenster das beim Ausführen des Skripts unterhalb des Editors eingeblendet wird.
Edit:
Um hier irgendwann mal zum Abschluss zu kommen:
1. Was soll das Tool machen.
2. Gibt es eine Vorlage dieser ominösen Textdatei? -
Sorry, schwer von Begriff?
_FileReadToArray() nimmt nur 2 Parameter entgegen, den Dateipfad und das Array. Du übergibst aber 3. Wo ist das Problem? -
Zitat
C:\Users\i2c\Desktop\DEVELOPE\AutoIt\1.au3(24,56) : ERROR: _FileReadToArray() called with wrong number of args.
_FileReadToArray("Antwort.txt","|", $Fragen)
Steht doch alles da. Du hast die Funktion mit zu vielen/zu wenigen Parametern aufgerufen.Das Klammerninferno bei While und Switch ist unnötig.
-
Win 7 Ultimate 64bit
Fedora 15 64bit
Debian 6 32bit -
Nix *schieb Schuld auf Hilfe*.
Wenn man ein Fremdwort nicht versteht, dann schlägt man seine Bedeutung nach.
Die AutoIt Hilfe ist weder Duden noch Fremdwortlexikon. -
Danke, jetzt stimmt er

-
Schau dir mal mein Edit im letzten Post an und benutz bitte den Spoiler BBCode für längere Codeausschnitte.
-
Ist eine Art grafische Rückkopplung in deinem Popup. Der Inhalt des Media Center Fensters wird mitsammt deinem Popup im Popup angezeigt. Dadrin geht's dann immer fröhlich so weiter. Passiert nicht immer. Meist dann, wenn das MMC Fenster vorher schon offen ist.
Win7 Ultimate x64
-
Bevor ihr weiter an einer korrekten Syntax rumwerkelt - man erstellt kein GUI in einer While-Schleife (Zeile 25). Die gesammte erste Schleife ist überflüssig. Erstell die GUIs in Funktionen und schau dir mal GUIGetMsg() in der Hilfe an. Mit der Rückgabe eines Arrays kannst du alle GUIs in einer einzigen Schleife verwalten.
edit: Oder besser gleich in den OnEventMode wechseln.
edit 2:
Ansatz für OnEvent
[autoit]#region - Timestamp
[/autoit] [autoit][/autoit] [autoit]
;2011-05-31 16:33:24
#endregion - Timestamp#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)Global $pspGUI
[/autoit] [autoit][/autoit] [autoit]$mainGUI = GUICreate("Form2", 618, 402, 289, 167)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
$Pic1 = GUICtrlCreatePic("C:\Users\MSI\Desktop\Unbenannt.jpg", 0, 0, 617, 401, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$PSP = GUICtrlCreateButton("PSP Flash", 8, 160, 65, 33, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_pspGUI")
$PS3 = GUICtrlCreateButton("PS3 Flash", 8, 344, 65, 33, $WS_GROUP)
$Wii = GUICtrlCreateButton("WII Flashen", 312, 160, 65, 33, $WS_GROUP)
$DS = GUICtrlCreateButton("DS Flashen", 304, 344, 65, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
Sleep(100)
WEndFunc _exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_exitFunc _pspGUI()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $mainGUI)
$pspGUI = GUICreate("Gaara4 PSP Flasher", 618, 402, 218, 135)
GUISetOnEvent($GUI_EVENT_CLOSE, "_pspGUIExit")
$Pic1 = GUICtrlCreatePic("C:\Users\MSI\Desktop\rr.jpeg", 0, 0, 617, 401, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$PSP = GUICtrlCreateButton("PSP GO FW< 6.35", 16, 104, 161, 81, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_pspk635")
$PSP2 = GUICtrlCreateButton("PSP GO FW 6.35", 224, 104, 161, 81, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_psp635")
$PSP3 = GUICtrlCreateButton("PSP GO FW>6.35", 424, 104, 161, 81, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_pspg635")
$PSP4 = GUICtrlCreateButton("PSP FW<6.35", 16, 208, 161, 81, $WS_GROUP)
$PSP8 = GUICtrlCreateButton("PSP FW 6.39 Beta", 16, 304, 161, 81, $WS_GROUP)
$PSP5 = GUICtrlCreateButton("PSP FW 6.35", 224, 208, 161, 81, $WS_GROUP)
$Warnung = GUICtrlCreateButton("Warnung/Credits", 224, 304, 161, 81, $WS_GROUP)
$PSP6 = GUICtrlCreateButton("PSP FW >6.35", 424, 208, 161, 81, $WS_GROUP)
$Beenden = GUICtrlCreateButton("Beenden", 424, 304, 161, 81, $WS_GROUP)
GUISetState(@SW_SHOW)
EndFunc ;==>_pspGUIFunc _pspk635()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 0, "mach was für FW < 6.35")
EndFunc ;==>_pspk635Func _psp635()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 0, "mach was für FW 6.35")
EndFunc ;==>_psp635Func _pspg635()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 0, "mach was für FW > 6.35")
EndFunc ;==>_pspg635Func _pspGUIExit()
[/autoit] [autoit][/autoit] [autoit]
GUIDelete($pspGUI)
GUISetState(@SW_SHOW, $mainGUI)
EndFunc ;==>_pspGUIExit#cs
[/autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $PSP
FileInstall("D:\projekt\go6.20\go6.20.exe", @TempDir & "\go6.20.exe", 1)
Run(@TempDir & "\go6.20.exe")
FileDelete(@TempDir & "\go6.20.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Pro-Update starten 2mal x drücke 2. File Flasher starten x drücke 3. Pro Update löschen 4. Unter Music Hack Mode starten", 500)
Case $PSP2
FileInstall("D:\projekt\go6.35\go6.35.exe", @TempDir & "\go6.35.exe", 1)
Run(@TempDir & "\go6.35.exe")
FileDelete(@TempDir & "\go6.35.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Pro-Update starten 2mal x drücke 2. File Flasher starten x drücke 3. Pro Update löschen 4. Unter Music Hack Mode starten", 500)
Case $PSP3
FileInstall("D:\projekt\godown\godown.exe", @TempDir & "\godown.exe", 1)
Run(@TempDir & "\godown.exe")
FileDelete(@TempDir & "\godown.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Downgrader starten 2. PSP startet neu und 0 drücken 3. Pro-Update starten 2mal x drücke 4. File Flasher starten x drücke 5. Pro Update löschen 6. Unter Music Hack Mode starten", 500)
Case $PSP4
FileInstall("D:\projekt\6.20\6.20.exe", @TempDir & "\6.20.exe", 1)
Run(@TempDir & "\6.20.exe")
FileDelete(@TempDir & "\6.20.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Pro-Update starten 2mal x drücke 2. File Flasher starten x drücke 3. Pro Update löschen 4. Unter Music Hack Mode starten", 500)
Case $PSP8
FileInstall("D:\projekt\6.39\6.39.exe", @TempDir & "\6.39.exe", 1)
Run(@TempDir & "\6.39.exe")
FileDelete(@TempDir & "\6.39.exe")
MsgBox(4096, "Anleitung", " Pro Update staren und 2 mal X drücken Fertig bei neu start wiederholen", 20)
Sleep(15000)
Case $PSP5
FileInstall("D:\projekt\6.35\6.35.exe", @TempDir & "\6.35.exe", 1)
Run(@TempDir & "\6.35.exe")
FileDelete(@TempDir & "\6.35.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Pro-Update starten 2mal x drücke 2. File Flasher starten x drücke 3. Pro Update löschen 4. Unter Music Hack Mode starten", 500)
Case $Warnung
MsgBox(4096, "Credits", "BY Gaara4,Liquidzigong,Coldbird and Virustotl! !ch oder andere haften nicht für Schäden", 10)
Case $PSP6
FileInstall("D:\projekt\downgrade\downgrade.exe", @TempDir & "\downgrade.exe", 1)
Run(@TempDir & "\downgrade.exe")
FileDelete(@TempDir & "\downgrade.exe")
Sleep(15000)
MsgBox(4096, "Anleitung", "1. Downgrader starten 2. PSP startet neu und 0 drücken 3. Pro-Update starten 2mal x drücke 4. File Flasher starten x drücke 5. Pro Update löschen 6. Unter Music Hack Mode starten", 500)
Case $Beenden
Exit
EndSwitch
WEnd
Case $PS3
GUIDelete()
$Form1_1 = GUICreate("Form1", 618, 402, 199, 136)
$Pic1 = GUICtrlCreatePic("C:\Users\MSI\Desktop\pppps.jpg", 0, 0, 617, 401, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
$PS3R = GUICtrlCreateButton("Install", 8, 112, 73, 25, $WS_GROUP)
$Gaara = GUICtrlCreateButton("Install", 8, 216, 73, 25, $WS_GROUP)
$Kmeaw = GUICtrlCreateButton("Install", 8, 312, 73, 25, $WS_GROUP)
$INFO1 = GUICtrlCreateButton("INFO1", 112, 112, 65, 25, $WS_GROUP)
$INFO2 = GUICtrlCreateButton("INFO2", 112, 216, 65, 25, $WS_GROUP)
$INFO3 = GUICtrlCreateButton("INFO3", 112, 312, 65, 25, $WS_GROUP)
$Credits = GUICtrlCreateButton("Credits", 544, 368, 65, 25, $WS_GROUP)
$Pic2 = GUICtrlCreatePic("C:\Users\MSI\Desktop\Henv2\fw.jpg", 432, 176, 185, 81, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $PS3R
EndSwitch
WEnd
EndSwitch
#ce -
Dein Skript erzeugt bei mir interessante grafische Effekte ^^.
Warum das so ist möchte ich aus Zeitgründen im Moment nicht näher durchleuchten.Wenn ich WM_NCHITTEST registriere und das Skript starte, lässt sich dein Popup allerdings wie gewünscht verschieben. Wo liegt also das Problem?
-
Beispiel - WM_NCHITTEST
[autoit]#Region - Timestamp
[/autoit] [autoit][/autoit] [autoit]
;2011-05-31 15:29:19
#EndRegion#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>#region - GUI Create
[/autoit] [autoit][/autoit] [autoit]
$GUI=GUICreate('',200,200,-1,-1, $WS_POPUP)
GUISetState()
#endregionGUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
[/autoit] [autoit][/autoit] [autoit]#region - GUI SelectLoop
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
#endregionFunc WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam)
[/autoit]
Local $iProc
$iProc = DllCall("user32.dll", "int", "DefWindowProc", _
"hwnd", $hWnd, "int", $Msg, "int", $wParam, "int", $lParam)
If @error Then SetError(@error, 0, 0)
$iProc = $iProc[0]
If $iProc = $HTCLIENT Then Return $HTCAPTION
Return $GUI_RUNDEFMSG
EndFunc -
Hat ja niemand behauptet, das man es nicht kann

HotString.au3
[autoit]; Authors: Manadar, GarryFrost
[/autoit] [autoit][/autoit] [autoit]
; Contributor: WideBoyDixon#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <Array.au3>#include-once
[/autoit] [autoit][/autoit] [autoit]Dim $hHook
[/autoit] [autoit][/autoit] [autoit]
Dim $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Dim $hmod = _WinAPI_GetModuleHandle(0)
Dim $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
Dim $buffer = ""
Dim $hotstrings[1]
Dim $hotfuncs[1]
Dim $hWnd = GUICreate("")
GUIRegisterMsg($WM_KEYDOWN, "_GUIKeyProc")Func _HotStringSet($hotstring, $func)
[/autoit] [autoit][/autoit] [autoit]
_ArrayAdd($hotstrings, $hotstring)
_ArrayAdd($hotfuncs, $func)
EndFuncFunc _EvaluateKey($keycode)
[/autoit] [autoit][/autoit] [autoit]
If (($keycode > 64) And ($keycode < 91)) _ ; A - Z
Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9
$buffer &= Chr($keycode)
$buffer = StringRight($buffer, 50)_CheckHotkeys($buffer)
[/autoit] [autoit][/autoit] [autoit]
EndIf
EndFunc ;==>EvaluateKeyFunc _CheckHotkeys($s)
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 to UBound($hotstrings)-1
if ( $hotstrings[$i] = StringRight($s, StringLen($hotstrings[$i])) ) Then
Call($hotfuncs[$i])
EndIf
Next
EndFuncFunc _GUIKeyProc($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
_EvaluateKey(Number($wParam))
EndFunc;===========================================================
[/autoit] [autoit][/autoit] [autoit]
; callback function. This function must return as quickly as possible or it will stall and block user input
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
$vkKey = DllStructGetData($tKEYHOOKS, "vkCode")
_WinAPI_PostMessage($hWnd, $WM_KEYDOWN, $vkKey, 0)
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProcFunc OnAutoItExit()
[/autoit]
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc ;==>OnAutoItExitSpoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <HotString.au3>
_HotStringSet("Hi", "_antwort")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _antwort()
[/autoit]
MsgBox(0,0,"Selber Fisch :P")
EndFuncedit: Seh grad, im Prinzip das selbe wie in Xenos Beispiel.
-
Scheint keine Standard-Ini zu sein. Von daher wird IniWrite() warschinlich nichts bringen.
in etwa so
[autoit]#Region - Timestamp
[/autoit] [autoit][/autoit] [autoit]
;2011-05-30 22:54:02
#EndRegion - Timestamp#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]$aFiles = _FileListToArray($sOrdner, "*.ini", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit]
For $i = 0 To $aFiles[0]
$sFile = FileRead($sOrdner & $aFiles[$i])
$sFile = StringRegExpReplace($sFile, "xy=.*", "xy=-1", 1)
FileWrite($sOrdner & $aFiles[$i], $sFile)
Next -
Ein, zwei gezielte reguläre Ausdrücke dürften schon das richtige sein.
Wie wär's denn, wenn du mal den Quelltext anhängst.