Eckige Klammern bedeuten: diese Parameter sind optional. Wenn du dafür Werte einsetzt, natürlich die Klammern weglassen.
Beiträge von BugFix
-
-
Hier mal mit Bildern:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Alles andere erklärt sich selbst.
-
Weist du wie oft ich das in diesem Forum gefragt habe ??? und wie viele Antworten ich bekommen habe "0"
Naja, liegt vielleicht daran, dass das Thema nicht sehr "tutorialfreundlich" ist.
Es gibt so viel verschiedene Möglichkeiten und jedes mal sind andere Dinge zu berücksichtigen. Wenn du das alles ins Tut schreibst, verstehts wieder keiner.Am Besten:
Konkret fragen nach bestimmten Dingen. Dann hat man immer einen Ansatz, zu dem man einen Weg aufzeigen kann.
Kannst ja mal eine Fragenliste erstellen, die man dann anhand von Beispielen abarbeitet.
Also eine GDI+ FAQ erstellen. -
Gibt es dafür auch eine AutoIt Syntax?
Ich glaube ja, aber das ist wenig empfehlenswert. Jeder User bekommt eine eigen Farbe beim Schreiben. So sieht man gut, wer was korrigiert. Da stört Syntaxhervorhebung nur. -
dies aber ohne Globale Variable.
Meines Erachtens nicht möglich. Aber warum willst du unbedingt eine Globale Variable vermeiden. -
Was ist denn Gobby, wenn ich mal fragen darf?
Sowas wie ein Workspace?
Guckst du: Gobby -
Ich weiß nicht, welche Version du von TrueImage hast. Schau mal ob unter \Programme\Acronis die Datei "TrueImageCmd.exe" vorhanden ist. Falls ja - damit kannst du per Kommandozeilenaufruf Images erstellen. Das läßt sich gut automatisieren.
-
Acronis ist nicht für Send/Controlsend geeignet. Würde ich bei einem Imageprogramm eh tunlichst vermeiden.
Zumindest bei den Versionen, die mir vorliegen, werden keine Windows-Ctrl verwendet. -
Immer wieder dasselbe.
Schau mal hier: Forenregeln[Thread Closed]
-
Aber wie bekomme ich es hin, dass er dann wirklich am Speicherort eine TXT datei erstellt und den Inhalt des Edit-Fensters hineinschreibt?
Der FileSaveDialog gibt dir Pfad\Dateinamen zurück unter dem die Datei gespeichert werden soll.
[autoit]
Also:; Pfad festlegen
[/autoit]
$path = FileSaveDialog(...)
; Inhalt lesen und speichern
$inhalt = GUICtrlRead($edit)
$fh = FileOpen($path, 1) ; zum Schreiben öffnen
FileWrite($fh, $inhalt)
FileClose($fh) -
Hi,
hier mal ein Skriptbsp., wie man ein eigenes Consolenfenster erstellt und in die Console schreibt bzw. aus ihr liest.Wichtig! Läuft nur wenn es kompiliert wurde!
[autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
Funktioniert nur, wenn es kompiliert wird!
#ceLocal Const $FOREGROUND_BLUE = 0x1
[/autoit] [autoit][/autoit] [autoit]
Local Const $FOREGROUND_GREEN = 0x2
Local Const $FOREGROUND_RED = 0x4
Local Const $BACKGROUND_BLUE = 0x10
Local Const $BACKGROUND_GREEN = 0x20
Local Const $BACKGROUND_RED = 0x40
Local Const $BACKGROUND_INTENSITY = 0x80
Local Const $BACKGROUND_SEARCH = 0x20
Local Const $FOREGROUND_INTENSITY = 0x8
Local Const $FOREGROUND_SEARCH = 0x10
Local Const $ENABLE_LINE_INPUT = 0x2
Local Const $ENABLE_ECHO_INPUT = 0x4
Local Const $ENABLE_MOUSE_INPUT = 0x10
Local Const $ENABLE_PROCESSED_INPUT = 0x1
Local Const $ENABLE_WINDOW_INPUT = 0x8
Local Const $ENABLE_PROCESSED_OUTPUT = 0x1
Local Const $ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
Local Const $STD_OUTPUT_HANDLE = -11
Local Const $STD_INPUT_HANDLE = -10
Local Const $STD_ERROR_HANDLE = -12
Local Const $INVALID_HANDLE_VALUE = -1Global $hConsoleOutput, $hConsoleInput
[/autoit] [autoit][/autoit] [autoit]; Console starten und Handle für In / Out holen
[/autoit] [autoit][/autoit] [autoit]
If AllocConsole() Then
$hConsoleOutPut = GetStdHandle($STD_OUTPUT_HANDLE)
If $hConsoleOutPut = $INVALID_HANDLE_VALUE Then MsgBox(0, 'Fehler', "STDOUT-Handle nicht möglich")
$hConsoleInPut = GetStdHandle($STD_INPUT_HANDLE)
If $hConsoleOutPut = $INVALID_HANDLE_VALUE Then MsgBox(0, 'Fehler', "STDIN-Handle nicht möglich")
Else
MsgBox(0, 'Fehler', "Console konnte nicht erstellt werden!")
EndIf; Titel setzen und Textattribute gelbe Schrift auf blauem Grund
[/autoit] [autoit][/autoit] [autoit]
SetConsoleTitle('Meine Test-Console')
If @error Then MsgBox(0, 'Fehler', 'Titel fehlgeschlagen')
SetConsoleTextAttribute($hConsoleOutPut, BitOR($FOREGROUND_RED,$FOREGROUND_GREEN,$FOREGROUND_INTENSITY,$BACKGROUND_BLUE))
If @error Then MsgBox(0, 'Fehler', 'Attribute fehlgeschlagen'); Text in Console schreiben
[/autoit] [autoit][/autoit] [autoit]
ConsoleWriteLine("Hallo Welt!")
If @error Then MsgBox(0, 'Fehler', 'Schreibe Zeile fehlgeschlagen')
_ConsoleWrite("Bitte gib deinen Namen ein: ")
If @error Then MsgBox(0, 'Fehler', 'Schreiben fehlgeschlagen'); Text aus Console in MsgBox verwenden
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', "Dein Name: " & ConsoleReadLine() ); alles schließen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
CloseHandle($hConsoleOutPut)
CloseHandle($hConsoleInPut)
FreeConsole()#region - Console Funcs
[/autoit] [autoit][/autoit] [autoit]Func AllocConsole()
[/autoit] [autoit][/autoit] [autoit]
Local $ret = DllCall("kernel32", "long", "AllocConsole")
If $ret[0] = 0 Then Return SetError(1,0,0)
Return 1
EndFuncFunc FreeConsole()
[/autoit] [autoit][/autoit] [autoit]
DllCall("kernel32", "long", "FreeConsole")
EndFuncFunc CloseHandle($hObject)
[/autoit] [autoit][/autoit] [autoit]
DllCall("kernel32", "long", "CloseHandle", "long", $hObject)
EndFuncFunc GetStdHandle($nStdHandle)
[/autoit] [autoit][/autoit] [autoit]
Local $ret = DllCall("kernel32", "long", "GetStdHandle", "long", $nStdHandle)
If $ret[0] = 0 Then Return SetError(1,0,0)
Return $ret[0]
EndFuncFunc WriteConsole($hConsoleOutPut, $sText)
[/autoit] [autoit][/autoit] [autoit]
Local $lpBuffer = DllStructCreate("char[" & StringLen($sText) & "]"), $lpNumberOfCharsWritten = DllStructCreate('int')
DllStructSetData($lpBuffer, 1, $sText)
Local $ret = DllCall("kernel32", "long", "WriteConsoleA", "long", $hConsoleOutPut, "ptr", DllStructGetPtr($lpBuffer), _
"long", StringLen($sText), "ptr", DllStructGetPtr($lpNumberOfCharsWritten), "long", 0)
If $ret[0] = 0 Then Return SetError(1,0,0)
Return $ret[0]
EndFuncFunc ConsoleWriteLine($sInput)
[/autoit] [autoit][/autoit] [autoit]
_ConsoleWrite($sInput & @CRLF)
If @error Then Return SetError(1,0,0)
EndFuncFunc _ConsoleWrite($sInput)
[/autoit] [autoit][/autoit] [autoit]
WriteConsole($hConsoleOutPut, $sInput)
If @error Then Return SetError(1,0,0)
EndFuncFunc ReadConsole($hConsoleInPut, $ConsoleReadLine)
[/autoit] [autoit][/autoit] [autoit]
Local $lpBuffer = DllStructCreate("char[80]"), $lpNumberOfCharsRead = DllStructCreate('int')
DllStructSetData($lpBuffer, 1, $ConsoleReadLine)
Local $ret = DllCall("kernel32", "long", "ReadConsoleA", "long", $hConsoleInPut, "ptr", DllStructGetPtr($lpBuffer), _
"long", StringLen($ConsoleReadLine), "ptr", DllStructGetPtr($lpNumberOfCharsRead), 'long', 0)
If $ret[0] = 0 Then Return SetError(1,0,0)
Return DllStructGetData($lpBuffer, 1)
EndFuncFunc ConsoleReadLine()
[/autoit] [autoit][/autoit] [autoit]
Local $ZeroPos, $ConsoleReadLine = ''
For $i = 0 To 79
$ConsoleReadLine &= Chr(0)
Next
$ConsoleReadLine = ReadConsole($hConsoleInPut, $ConsoleReadLine)
$ZeroPos = StringInStr($ConsoleReadLine, Chr(0))
If $ZeroPos > 0 Then $ConsoleReadLine = StringLeft($ConsoleReadLine, $ZeroPos - 3)
Return $ConsoleReadLine
EndFuncFunc SetConsoleTitle($lpConsoleTitle)
[/autoit] [autoit][/autoit] [autoit]
Local $ret = DllCall("kernel32", "long", "SetConsoleTitleA", "str", $lpConsoleTitle)
If $ret[0] = 0 Then Return SetError(1,0,0)
Return 1
EndFuncFunc SetConsoleTextAttribute($hConsoleOutPut, $wAttributes)
[/autoit] [autoit][/autoit] [autoit]
Local $ret = DllCall("kernel32", "long", "SetConsoleTextAttribute", "long", $hConsoleOutPut, "long", $wAttributes)
If $ret[0] = 0 Then Return SetError(1,0,0)
Return 1
EndFunc#endregion - Console Funcs
[/autoit] -
PS: Kommt mir bitte nicht mit irgendwelchen AGB's gewisser Paidmailer.
Ich möchte dass programm nur interessehalber schreiben und weil ich es als eine schöne Herausforderung ansehe
Wenn dich die AGB's der Anbieter genausowenig interessieren, wie unsere Forenregeln, muß dir auch klar sein, dass es von uns keine Hilfe geben wird!
[Thread Closed]
-
oder du schaust in die AutoIt-Hilfe:
Appendix -- CLSIDs of Special Folders -
Alternativ kannst du das Control auf einem Child-Window erstellen und diesen Fenster durchscheinend darstellen.
[autoit]#include <EditConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$GUImain = GUICreate('Main', 170, 200, -1, -1, Default, $GUI_WS_EX_PARENTDRAG)
GUICtrlCreatePic(@Systemdir & "\oobe\images\merlin.gif", 10, 10, 150, 180)
GUICtrlSetState(-1, $GUI_DISABLE)$GUIEdit = GUICreate("", 150, 180, 10, 20, $WS_POPUP, $WS_EX_MDICHILD, $GUImain)
[/autoit][autoit][/autoit][autoit]
WinSetTrans($GUIEdit, "", 150)
$Edit = GUICtrlCreateEdit('', 0, 10, 170, 190)GUISetState(@SW_SHOW, $GUIEdit)
[/autoit][autoit][/autoit][autoit]
GUISetState(@SW_SHOW, $GUImain)Do
[/autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE -
Alle anderen Fragen sind schon beantwortet.
[autoit]
Du brauchst Notepad nicht automatisieren, sondern kannst die Datei direkt umwandeln. Nicht getestet, aber sollte laufen:#Include <WinAPI.au3>
[/autoit]
Local $fh = FileOpen('UniCodeFile.txt', 32) ; Windows default mode UTF16 Little Endian
Local $strUC = FileRead($fh)
Local $len = StringLen($strUC) +1
FileClose($fh)
Local $tString = DllStructCreate("wchar[" & $len & "]")
DllStructSetData($tString, 1, $strUC)
Local $strANSI = _WinAPI_WideCharToMultiByte(DllStructGetPtr($tString))
FileWrite(@ScriptDir & '\meineANSI.txt', $strANSI) -
Also die Registry-Befehle sind m.E. gut dokumentiert. Wenn es um das Verständnis bezüglich der Registry selbst geht, kannst du ja mal ein wenig googeln. Da findest du sicher gute Tuts.
Zum Thema Dll:
Ich habe mal im EN-Forum ein Tut dazu gesehen. Hab den Link aber nicht parat. Das war für den Anfang recht informativ.
Ansonsten kann ich dir zu diesem Thema nur raten: Üben, Üben, nochmals Üben. Programmiere einfach mal bestehende Funktionen nach, indem du die Dll-Calls verwendest (z.B. StringLower, StringUpper etc.). Hier findest du eine gute Übersicht mit den Dll: Windows API Referenz
Viel Erfolg, und wenn es irgendwo hakt - einfach fragen
-
Ah, da hatte ich mich vertan
[autoit]
FileInstall braucht ja die Quelle als reinen String. Das hier:Func _Install ()
[/autoit]
For $i = 1 To 10
DirCreate("C:\BS\PICCHANGE\" & $i)
FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
Next
EndFuncgeht also nicht (leider).
DirCreate kannst du in der Schleife laufen lassen, aber FileInstall mußt du dann doch für jede Datei einen Befehl schreiben. -
Hi,
ist jetzt nicht getestet - aber ich hab dein Skript erst mal gewaltig gekürzt. Den Aufruf zum Wallpaper wechseln habe ich an AdlibEnable vergeben
Spoiler anzeigen
[autoit]Global Const $SPIF_SENDWININICHANGE = 0x2
[/autoit] [autoit][/autoit] [autoit]
Global Const $SPIF_UPDATEINIFILE = 0x1
Global Const $SPI_SETDESKWALLPAPER = 20
Global $arBild[10]
For $i = 0 To 9
$arBild[$i] = "C:\BS\PICCHANGE\" & $i+1 & "\bild.bmp"
Next
Global $pos = 0#Include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
$size = FileGetSize("C:\BS\PICCHANGE\1\" & $arBild[0])
If $size = 0 then _Install ()Func _Install ()
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 10
DirCreate("C:\BS\PICCHANGE\" & $i)
FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
Next
EndFuncOpt("TrayMenuMode",1) ; Standard Traymenüeinträge (Script pausieren/beenden) werden nicht angezeigt.
[/autoit] [autoit][/autoit] [autoit]$E = TrayCreateMenu("Einstellungen")
[/autoit] [autoit][/autoit] [autoit]
$I = TrayCreateItem("Intervall", $E)
$B = TrayCreateItem("Bilder Tauschen", $E)
$AB = TrayCreateItem("About")
$EX = TrayCreateItem("Beenden")TraySetState()
[/autoit] [autoit][/autoit] [autoit]
AdlibEnable('_chgWallpaper', 300000)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = TrayGetMsg()
Switch $msg
Case $AB
Msgbox(64,"Über:","AutoIt3-Tray-Beispiel")
Case $EX
Exit
EndSwitch
WEndFunc _chgWallpaper()
[/autoit]
If $pos = 10 Then $pos = 0
DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, _
"uint", 0, "str", $arBild[$pos], "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
$pos += 1
EndFuncEdit: Noch etwas gekürzt

-
Oder einfach in der SciTE-Config anpassen:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Bitte dran denken, die Funktionen der Listview-UDF erwarten das Handle, NICHT die ID. Auch wenn einige Funktionen mit der ID funktionieren, sollte man lieber gleich das Handle verwenden, erspart einiges an Fehlersuche.