Hallo zusammen,
dieser Abschnitt hat mich mal wieder sehr viele Nerven gekostet.
Werde noch alles in Ruhe testen.
Für die tollen Tipps
herzlichen Dank an alle!
Liebe Grüße
Ilse
Hallo zusammen,
dieser Abschnitt hat mich mal wieder sehr viele Nerven gekostet.
Werde noch alles in Ruhe testen.
Für die tollen Tipps
herzlichen Dank an alle!
Liebe Grüße
Ilse
Hey,
das war doch nur ein Beispiel.
Natürlich kenn ich ControlCommand usw.
Darum geht es doch nicht.
Zitat
Sind das immer Mausklicks oder Ähnliches?
Ja, aber auch
Funcs, ShellExcecute, Inputboxen Splash...
im Prinzip kleine "Programme"!
Das mit der AutoItCompiler Alternative
würde bedeuten:
Meine ini greift auf au3 Files zu.
die weden dann kompiliert und gestartet?
Ich kopiere den Aut2Exe Ordner ins Scriptverzeichnis...?
Oder ist es besser einfach alle au3 Files als exe zu machen
und die exe Files mit der Ini aufzurufen?
Ilse
Es handelt sich um viele kleine Lösungen.
z.B. Text-Anpassung
ein kleiner Code
#include<txt-Func.au3>
ShellExecute("Info.txt", "", @ScriptDir, "edit")
MouseClick("left",1166,375,1)
MouseClick("left",1129,585,1)
MouseClick("left",1452,277,1)
MouseClick("left",879,901,1)
exit
[/autoit]Dynamisch, weil ich das ganze ständig erweitern muß.
Das Main-Programm ist fertig, es kommen aber immer weitere CodeTeile dazu,
auf die das Main-Programm zugreift.
Es werden lediglich au3 Files ergänzt und die Ini erweitert.
Wenn ich das ganze mit #includes einbinden würde, müßte jedesmal am Hauptprogramm
was geändert werden.
Huh...Der Sachverhalt.
Kurz mit meinen Worten:
1. Es gibt eine Ini mit Pfaden zu au3 Files
2. Ein Hauptprogram (Main.exe) organisiert das ganze (greift auf Ordner, au3 Files und Masken zu.
3. Eine Combobox liest die Ini und startet die Au3
Das mit einzelnen au3 Files und der Ini ist sehr übersichtlich.
Es kommen ständig weitere dazu und so ist das ganze gut zu organisieren.
Ich wollte zuerst alle au3 Files in Exe Files kompilieren
und dann später mit ShellExcecute starten...
muß ich anscheinend auch so machen, oder hast du eine Idee?
Liebe Grüße
Ilse
Hallo Aspirin Junkie,
aber wie kriege ich das ganze rein,
damit mein Script was mit AutoIt3ExecuteScript anfangen kann?
Muß ich was includieren?
Ich probiere schon den ganzen morgen.
Ich habe mal zum Testen das gebastelt:
Einfach beide Files ins Scriptverzeichnis!
Wie "Schnitzel" schon gesagt hat: Die \ werden hier nicht angezeigt!
Main.au3
Au3File.au3
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Main", 615, 438, 192, 124)
$btnAu3 = GUICtrlCreateButton("Start", 408, 112, 179, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnAu3
$ProgLink = @ScriptDir&""&"Au3File.au3"
Run(@AutoItExe & ' /AutoIt3ExecuteScript ' & $ProgLink)
EndSwitch
WEnd
Dann die Datei die geöffnet wird:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Files", 615, 438, 192, 124)
$btnStart = GUICtrlCreateButton("Ein Au3-File", 32, 40, 155, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnStart
$ProgLink2 = @ScriptDir&""&"Main.au3"
Run(@AutoItExe & ' /AutoIt3ExecuteScript ' & $ProgLink2)
EndSwitch
WEnd
Wird die Main.au3 kompiliert dann startet nichts mehr!
@ Aspirin Junkie
...mußte kurz weg...
hier mal die Pfadangaben der Msgboxen der Main.exe
sind identisch mit der Main.au3
MsgBox(0,"", @AutoItExe)
MsgBox(0,"", @ScriptDir&""&"Meine.au3")
MsgBox(0,"", @AutoItExe & ' /AutoIt3ExecuteScript ' & $ProgLink)
1.
Zitat
c:\Users\PC\Autoit\2011\Main.exe
2.
Zitat
c:\Users\PC\Autoit\2011\Meine.au3
3.
Zitat
c:\Users\PC\Autoit\2011\Main.exe/Autoit3ExecuteScript
c:\Users\PC\Autoit\2011\Meine.au3
Was ich nicht verstehe:
Zitat
Keine Ahnung wie du darauf kommst, dass die Pfadangabe korrekt ist
Wenn es doch Probleme mit den Pfaden gibt, dann sollte das ganze doch auch nicht
mit den AU3 Files funktionieren. Es wird lediglich eine EXE gemacht!
P.S.: Pfadnachtrag
C:\Programm Files\Autoit3\autoit3.exe
Guten Morgen Aspirin Junkie,
diese debug-Varianten habe ich alle hinter mir.
Ich mache nicht sofort einen neuen Thread auf ohne mir Gedanken zu machen.
Ich lasse mir zum deguggen immer MsgBoxen anzeigen,
überprüfe alles mögliche...erst wenn ich nicht mehr weiterkomme....
Also:
1. Pfadangaben stimmen.
2. Auch in den ExeDateien werde Pfade korrekt angezeigt
3. Dateinamen hat keine Leerzeichen
4. Rechte Maustaste RunScript (beide funktionieren)
5. Scite (Main F5 Go) als au3 funktioniert
6. Main.exe zeigt den korrekten Pfad zur ausführenden au3.Datei
Keine Ahnung was ich noch debuggen kann
Liebe Grüße
Ilse
Hallo,
der Tag beginnt mal wieder mit einem Problem.
Ich versuch das ganze mal zu erklären.
1. Es gibt eine Main.au3
2. Diese Main Datei hat einen Button START
3. Mit diesem Button wird eine andere AU3 im Scriptverzeichnis gestartet.
Soweit kein Problem.
Aber dann:
1. Ich kompiliere die Main.au3 (Main.exe)
2. Der Button Start macht nun nichts mehr (Seltsam)
Hier mal der Code des Buttons
Case $btnProgStart
$ProgLink = @ScriptDir&""&"Meine.au3" ; hier ist das Script das gestartet werden soll
Run(@AutoItExe & ' /AutoIt3ExecuteScript ' & $ProgLink)
;ShellExecute("Meine.au3.exe","",@ScriptDir,"open"); auch wenn das Script kompiliert wurde
;run(@ScriptDir &""&"Meine.au3","",@SW_MAXIMIZE)
endif
[/autoit]Beide Scripte funktionieren einzeln einwandfrei.
Liebe Grüße
Ilse
Nochmal
Danke an alle.
Ist manchmal ganz schön heftig, an was man alles denken muß.
Ilse
Huh...
ich hab's...
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Code = GUICtrlCreateEdit("", 64, 64, 353, 297)
$btnOpen = GUICtrlCreateButton("Öffnen", 448, 64, 139, 25)
$btnSave = GUICtrlCreateButton("Speichern", 448, 96, 139, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnOpen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Local $var = FileOpenDialog("OPEN", @ScriptDir & "", "Code (*.au3;*.txt)", 1)
[/autoit] [autoit][/autoit] [autoit]If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Else
$var = StringReplace($var, "|", @CRLF)
Local $datei = FileOpen($var, 0)
$inhalt_der_file = FileRead($datei)
GUICtrlSetData($Code,$inhalt_der_file)
[/autoit] [autoit][/autoit] [autoit]EndIf
;FileClose
Case $btnSave
[/autoit] [autoit][/autoit] [autoit]Local $datei = FileOpen($var, 2)
FileWrite($var, GuictrlRead($Code))
EndSwitch
[/autoit] [autoit][/autoit] [autoit]WEnd
FileClose
Ja, das habe ich versucht...klappt leider nicht!
Ich habe mal ne kleine Gui gebastelt, damit man das mal testen kann.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Code = GUICtrlCreateEdit("", 64, 64, 353, 297)
$btnOpen = GUICtrlCreateButton("Öffnen", 448, 64, 139, 25)
$btnSave = GUICtrlCreateButton("Speichern", 448, 96, 139, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnOpen
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]Local $var = FileOpenDialog("OPEN", @ScriptDir & "", "Code (*.au3;*.txt)", 1)
[/autoit][autoit][/autoit][autoit]If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Else
$var = StringReplace($var, "|", @CRLF)
Local $datei = FileOpen($var, 0)
$inhalt_der_file = FileRead($datei)
GUICtrlSetData($Code,$inhalt_der_file)
[/autoit][autoit][/autoit][autoit]EndIf
[/autoit][autoit][/autoit][autoit]FileClose
[/autoit][autoit][/autoit][autoit]Case $btnSave
[/autoit][autoit][/autoit][autoit]Local $datei = FileOpen($var, 2)
FileWrite($var, GuictrlRead($Code))
FileClose
[/autoit][autoit][/autoit][autoit]EndSwitch
WEnd
Hab auch alles mal angepasst für 1 File!
Grüße
Ilse
Hallo Schnitzel,
ja, das habe ich auch schon hinter mir.
Irgendwie denke ich mal wieder falsch!
Local $datei = FileOpen($var,2)
Hier wird beim öffnen kein Text in das Editfeld geschrieben!
[autoit]
Local $datei = FileOpen($var,0)
Hier wird Text geschrieben, Ich kann also das Editfeld bearbeiten.
Muß ich bei
Case $btnSave
FileOpen und FileClose erneut einbauen?
Bin etwas durcheinander...
Hallo,
nach etlichen Fehlversuchen muß ich mich
leider schon wieder geschlagen geben.
Das Problem:
1. Ich öffne eine Textdatei und lade den Inhalt in ein EDIT-Feld ($Code)
Das klappt!
2. Ich ändere bzw. lösche Teile des Textes und klicke auf speichern
Das Problem:
Der geänderte Text wird der original-Textdatei hinzugefügt.
Wenn ich versuche FileDelete einzubauen erhalte ich eine Fehlermeldung.
Mein Code
Case $bnFilecode
Local $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."
[/autoit] [autoit][/autoit] [autoit]Local $var = FileOpenDialog($message, @ScriptDir & "", "Code (*.au3;*.txt)", 1 + 4)
[/autoit] [autoit][/autoit] [autoit]If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Else
$var = StringReplace($var, "|", @CRLF)
MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
Local $datei = FileOpen($var, 0)
$inhalt_der_file = FileRead($datei)
GUICtrlSetData($Code,$inhalt_der_file)
[/autoit] [autoit][/autoit] [autoit]EndIf
; bis hierhin PRIMA: Die Datei wird im EDITFELD $Code angezeigt
;Ich ändere nun den Text (im EDITFELD) und klicke auf speichern
Case $btnsave
Msgbox(4096,"",$var); der Pfad incl. Dateiname wird gezeigt!
;FileDelete($var) ; ging nicht (Berechtigung....?)
FileWrite($var, GuictrlRead($Code)); mein GUI EDITFELD heißt $Code
;Hier wird der Text der Datei hinzugefügt.
FileClose
Liebe Grüße
Ilse
Dank Dir.
Alles Prima jetzt.
Liebe Grüße
Ilse
Hallo Skerg,
schön dass du dich meldest.
Habe den Fehler gefunden.
Darf ich dich nochwas fragen?
Ich habe ein Gui EDITFELD ($Code)
In dieses Feld möchte ich den Inhalt laden.
Komme da mit GuictrlSetData nicht weiter
Case $bnFilecode
Local $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."
[/autoit] [autoit][/autoit] [autoit]Local $var = FileOpenDialog($message, @ScriptDir & "", "Code (*.au3;*.txt)", 1 + 4)
[/autoit] [autoit][/autoit] [autoit]If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Else
$var = StringReplace($var, "|", @CRLF)
MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
Local $datei = FileOpen($var, 0)
GUICtrlSetData($Code,$datei)
EndIf
[/autoit]Vielleicht kannst du ja kurz drüberschauen.
Liebe Grüße
Ilse
Hallo,
Folgendes Problem.
Ich klicke einen Button um eine Datei zu löschen.
Alles scheint korrekt...
1. Ich lasse mir den Pfad ausgeben
2. Datei ist auch da...
$Datei = $sDataDir2&""&$sLink
Msgbox(4096,"",$Datei); korrektes Verzeichnis, Pfad c:\...\...\Google.au3
FileDelete($Datei) ; Die Datei bleibt im Ordner und wird nicht gelöscht!
; das geht auch nicht
FileDelete($sDataDir2&""&$sLink)
FileDelete($sDataDir2&"\"&$sLink)
Habe keine Ahnung woran das liegt!
Ilse
Hallo Tweaky,
hab's geschafft!
Zitat
mit IniDelete die komplette Sektion löschen
Das war der entscheidende Tipp!
Liebe Grüße
Ilse
Hallo,
ich habe folgendes Problem.
Ich muß meine INI per Code neu durchnumerieren.
Meine INI sieht am ANFANG so aus:
[Namen]
1=Peter
2=Hans
3=Erika
4=Paul
5=Ida
[Link]
1=exe\1.au3
2=exe\2.au3
3=exe\3.au3
4=exe\4.au3
5=exe\5.au3
Dann werden aber z.B. Einträge gelöscht oder neu hinzugefügt.
Danach sieht meine INI so aus.
Z.B, Key 1 und 4 werden gelöscht!
[Namen]
2=Hans
3=Erika
5=Ida
[Link]
2=exe\2.au3
3=exe\3.au3
5=exe\5.au3
Nun hätte ich gerne, dass die Nummern nochmal stimmen.
Es soll neu nummeriert werden: So sollte es aussehen
[Namen]
1=Hans
2=Erika
3=Ida
[Link]
1=exe\2.au3
2=exe\3.au3
3=exe\5.au3
So hier mal mein Code:
$AIni = $sDataDir & "" & GUICtrlRead($idcbo) & ".ini" ; der kpl Pfad zur INI also c:\.......Programm.ini = OK!
;Msgbox(4096,"",$Aini)
Local $var = IniReadSection($AIni, "Namen"); alle Einträge der Sektion lesen!
If @error Then
MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
Else
For $i = 1 To $var[0][0]
MsgBox(4096, "", "Nr: " & $var[$i][0] & @CRLF & "Name: " & $var[$i][1]); Die jeweilige Zahl+Eintrag wird angezeigt=OK!
;also
;~ 2=Hans
;~ 3=Erika
;~ 5=Ida
;Die Zähler sollten nun neu geschrieben werden: 1,2,3...
;ab hier komme ich nicht mehr weiter!
;IniWrite($AIni, "Namen", $var[$i][$i], $var[$i][1])
;IniDelete($AIni, "Namen", $var[$i][0])
;IniWrite($AIni, "Namen", $var[$i][$i], "")
;$Zahl = $var[$i][0]+1
Next
;MsgBox(4096, "",$Zahl )
EndIf
Liebe Grüße
Ilse
Hallo,
möchte abschliesend auch meinen Kommentar dazu abgeben.
Ich arbeite so am liebsten.
Gerade wenn man programmiert.
Jedesmal Rechtsklick.... finde ich nicht so toll.
Rechtsklick RunScript ist mir auch bekannt.
Aber die Lösung alles in der INI zu machen das funktioniert jetzt prima.
Nochmals herzlichen DANK
Skerg
Hallo Skerg,
genau das habe ich gesucht!
SUPER!
Vielen Dank!
Liebe Grüße
Ilse