Ja willkommen und zur Bielefeldverschwörung kann ich nur sagen.
Bielefeld gibt es wirklich, leider.
Ich war schon da aber überzeugt euch selbst.
Gruß Dietmar
Ja willkommen und zur Bielefeldverschwörung kann ich nur sagen.
Bielefeld gibt es wirklich, leider.
Ich war schon da aber überzeugt euch selbst.
Gruß Dietmar
ok mal ein Auszug aus einem altem Script
[autoit]Dim $setupdir
Dim $scriptdir = @ScriptDir
If StringRight($scriptdir, 1) <> "\" Then $scriptdir &= "\"
If Not FileExists($scriptdir & "Bin\dd.exe") Then
_Setup()
Else
$setupdir = $scriptdir
EndIf
If Not FileExists($setupdir & "Bin\dd.exe") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Bin\dd.exe", $setupdir & "Bin\dd.exe")
If Not FileExists($setupdir & "Bin\dd-gui.ini") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Bin\dd-gui.ini", $setupdir & "Bin\dd-gui.ini")
If Not FileExists($setupdir & "Bin\diskio.dll") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Bin\diskio.dll", $setupdir & "Bin\diskio.dll")
If Not FileExists($setupdir & "Bin\dd-icons.dll") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Bin\dd-icons.dll", $setupdir & "Bin\dd-icons.dll")
If Not FileExists($setupdir & "Media\utopiawi.wav") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Media\utopiawi.wav", $setupdir & "Media\utopiawi.wav")
If Not FileExists($setupdir & "Media\linux.jpg") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Media\linux.jpg", $setupdir & "Media\linux.jpg")
If Not FileExists($setupdir & "Media\dd For windows.htm") Then FileInstall("C:\Autoit\Eigene Scripte\Dietmar\DD-Gui\Media\dd For windows.htm", $setupdir & "Media\dd For windows.htm")
If $setupdir <> $scriptdir Then
FileCopy(@ScriptFullPath,$setupdir & "DD-Gui.exe")
FileCreateShortcut($setupdir & "DD-Gui.exe",@DesktopDir & "\DD-Gui.lnk")
FileCreateShortcut($setupdir & "DD-Gui.exe",@StartMenuCommonDir & "\DD-Gui.lnk")
Run($setupdir & "DD-Gui.exe")
Exit
EndIf
Func _Setup()
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
If _Language() = "German" Then
$iMsgBoxAnswer = MsgBox(33,"DD-Gui Installationsprüfung","DD-Gui wird zum ersten Mal gestartet." & @CRLF & @CRLF & "Möchten Sie DD-Gui installieren?" & @CRLF & @CRLF & "Es werden nur Dateien in das Zielverzeichnis kopiert," & @CRLF & "es werden keine Dateien registriert." & @CRLF & @CRLF & "[OK] startet die Installation und anschliessend DD-Gui" & @CRLF & "[ABBRECHEN] beendet das Programm. ")
Else
$iMsgBoxAnswer = MsgBox(33,"DD-Gui Installations check","DD-Gui starts the first time." & @CRLF & @CRLF & "Would you like to install DD-Gui?" & @CRLF & @CRLF & "Only files will copied to your target dir," & @CRLF & "the files won`t be registerd. " & @CRLF & @CRLF & "[OK] starts the installation and afterwards DD-Gui" & @CRLF & "[CANCEL] terminate this program. ")
EndIf
Select
Case $iMsgBoxAnswer = 1 ;OK
If _Language() = "German" Then
$setupdir = FileSelectFolder("Bitte Zielverzeichnis erzeugen/auswählen.", "",1)
Else
$setupdir = FileSelectFolder("Create or choose a folder.","",1)
EndIf
If @error = 1 Then
_Setup()
Else
If StringRight($setupdir, 1) <> "\" Then $setupdir &= "\"
If Not FileExists($setupdir & "Bin") Then DirCreate($setupdir & "Bin")
If Not FileExists($setupdir & "Media") Then DirCreate($setupdir & "Media")
If Not FileExists($setupdir & "Help") Then DirCreate($setupdir & "Help")
EndIf
Return $setupdir
Case $iMsgBoxAnswer = 2 ;Cancel
Exit
EndSelect
EndFunc
Mittlerweile sind die Texte in ner Ini und hole mir das passende Array in Abhängigkeit von der Funktion _Language().
Aber das soll dich nicht stören. Ich habe die benötigten Dateien in die Exe integriert, beim ersten Aufruf prüfe ich ob schon alles da liegt.
Wenn nein kommt die Funktion Setup, hier kann man dann ein Installverzeichnis auszuwählen. Abschliessend werden noch Verknüpfungen angelegt und dieselbe Exe die man ursprünglich gestartet hat im Installordner gestartet und das laufende Programm beendet.
Wenn das Setup nicht kommt werden zumindest fehlende Dateien repariert.
so auch ok ?
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
$file="c:\Gelöst.txt"
[/autoit] [autoit][/autoit] [autoit]GUICreate("1 x 1 Übung",220,315)
$1 = GUICtrlCreateButton("1er Reihe",10,10,200)
$2 = GUICtrlCreateButton("2er Reihe",10,40,200)
$3 = GUICtrlCreateButton("3er Reihe",10,70,200)
$4 = GUICtrlCreateButton("4er Reihe",10,100,200)
$5 = GUICtrlCreateButton("5er Reihe",10,130,200)
$6 = GUICtrlCreateButton("6er Reihe",10,160,200)
$7 = GUICtrlCreateButton("7er Reihe",10,190,200)
$8 = GUICtrlCreateButton("8er Reihe",10,220,200)
$9 = GUICtrlCreateButton("9er Reihe",10,250,200)
$alles = GUICtrlCreateButton("Ganzes kleines 1x1",10,280,200)
GUISetState() ; will display an empty dialog box
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $1
while 1
$a = 1
$b = Random(1,9,1)
$erg = InputBox('Rechenaufgabe', 'Wie viel ist ' & $a & ' mal ' & $b & ' ?', '')
If $a * $b = $erg Then
MsgBox(0, 'Aufgabe', 'Richtig!')
FileWriteLine($file,$a & "*" & $b & " Das Ergebnis: " & $erg & " war richtig.")
Else
MsgBox(0, 'Aufgabe', 'Falsch!')
FileWriteLine($file,$a & "*" & $b & " Das Ergebnis: " & $erg & " war falsch.")
EndIf
wend
EndSelect
WEnd
nach c:\ kannst du evtl. je nach OS / UAC nicht schreiben, nimm sonst @Desktopdir oder so.
mit _FileReadToArray liest du den Inalt einer datei in ein Array aber der Thredstarter müsste jetzt eigentlich wissen wie man,
a: an ein einzelnes Element kommt
b: oder alle in einer Schleife ausliest.
du meinst es aso ernst, dir fehlt so etwas...
[autoit]If 2 < 3 then InetGet($config4,@scriptdir & $filename)
[/autoit]
sofern wir ausgelesende numerische werte vergleichen und in Config4 eine Url steht.
stell dir einfach vor 2 nd 3 wären von wo auch immer ausgelesen worden.
Für nen Schnelltest
[autoit]If 2 < 3 then InetGet("http://sourceforge.net/projects/vlc/files/1.1.4/win32/vlc-1.1.4-win32.exe/download","d:\vlc-1.1.4-win32.exe")
[/autoit]? dann machen wir mal therotisch weiter
ich würde m it inetget mir eine Datei nach tmp herunterladen wo die aktuelle Versionsnummer steht.
dann Wert1 mit Wert2 aus tmp datei vergleichen, wenn tmpdatei höher inetget mit URL&Filename+Versionsnummer aus tmpfile.
MsgBox(0,"",$avArray[6])
[/autoit]zu 4.)
da die sich ja vom Aufbau schon nicht groß unterscheiden, würde ich mit einer Childgui arbeiten.
Die legst du dann über das Hauptfenster oder beendest die Hauptgui, wenn nicht child , umschalten kannst du ja auch im Unterprogramm.
Dann die Inhalte variabel machen, also in der Childgui prüfen was angezeigt werden muss.
Zum Beispiel die Werte in eine Ini parken. So brauchst du nicht alles doppelt und dreifach.
Aufbau der Ini
[Gui1]
Wert1=1,00€
Wert2=2,00€
Wert3=3,00€
Wert4=4,00€
Wert5=5,00€
Label1=
...
Bild1="bild1_1.jpg"
[Gui2]
Wert1=1000,00€
Wert2=2000,00€
Wert3=3000,00€
Wert4=4000,00€
Wert5=5000,00€
Label1=
...
Bild1="bild2_1.jpg"... usw
zu den Radiobuttons du kannst auc einen Default auswählen.
Einfach
GUICtrlSetState(-1,$GUI_CHECKED)
[/autoit]unter deinen default Wert schreiben.
Hier ist sie, wird aber nicht wirklich benötigt da man dort auch z.B. etwas <> 2000 eintragen kann um einen Effekt zu sehen.
Func _CountAllFiles($sStDir, $iFlag = 3) ; by AspirinJunkie - benötigt .Net für Stack - $Flag auf 1 für Dateien, 2 für Ordner, 3 für beide
Local $cStack = ObjCreate("System.Collections.Stack")
If @error Then Return SetError(1, 1, -1)
Local $Counter = 0, $FFFF, $FFNF, $sDir
If StringRight($sStDir, 1) = '\' Then $sStDir = StringTrimRight($sStDir, 1)
If Not FileExists($sStDir) Then Return SetError(2, 0, "")
$cStack.Push($sStDir)
[/autoit] [autoit][/autoit] [autoit]While $cStack.Count > 0
$sDir = $cStack.Pop
$FFFF = FileFindFirstFile($sDir & '\*')
If $FFFF <> -1 Then
Do
$FFNF = FileFindNextFile($FFFF)
If @error Then ExitLoop
If @extended Then
$cStack.Push($sDir & '\' & $FFNF)
If BitAND($iFlag, 2) Then $Counter += 1
Else
If BitAND($iFlag, 1) Then $Counter += 1
EndIf
Until 0
EndIf
WEnd
Return $Counter
EndFunc
Hallo ich habe ein "kleines Problem" beim Erweitern / umbauen der UDF von Bugfix.
Ich wollte halt eine Progressbar hinzufügen und den Output in eine Datei umleiten.
Das funktionierte auch schon allerdings war dort die Anzahl fix und die Ausgabedatei absolut in der Funktion benannt.
Nun wollte ich die Werte und ob Progress überhaupt da sein soll beim Funktionsaufruf mit übergeben.
In der Messagebox stehen anfangs noch die richtigen Werte drin, überschreibt die dann aber mit den defaults aus dem Subfoldersfunktionaufruf, beim 2.Mal.
Irgendwie habe ich da ein Brett vorm Kopf und bevor ich die Sache noch weiter verkompliziere frage ich doch mal
Besten Dank an Bugfix für die UDF, nutze ich schon recht lange.
Besten Dank auch an AspirinJunkie für _CountAllFiles, ist wirklich fix.
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;
; geändert durch Dietmar // Progress integriert und Ausgabe in INI-Datei mit Dateieigenschaften
;
;==================================================================================================
Dim $Progress_count =0
;~Dim $Progress_enable
;~Dim $Progress_limit
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0', $sProgress_enable=1, $sProgress_limit=0, $sExport_file="c:\dummy.ini")
;~ MsgBox(4096,"",$sPath & @CR & $sExt & @CRLF & $iDir & @CRLF & $iRetType & @CRLF & $sDelim & @CRLF & $sProgress_enable & @CRLF & $sProgress_limit & @CRLF & $sExport_file)
;~ Exit
$sPath_Len = StringLen($sPath)
If $sProgress_limit = 0 Then
$sProgress_enable = 0
Else
If $sProgress_enable = 1 Then
$sProgress_count = 0
ProgressOn("Dateiliste von '" & $sPath & "' wird erstellt", "Bitte haben Sie etwas Geduld.")
EndIf
EndIf
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim,$sProgress_enable,$sProgress_limit,$sExport_file,$sPath_Len)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
If $sProgress_enable = 1 Then ProgressOff()
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF, $Progress_enable=1, $Progress_limit=2000, $Export_file="d:\dummy.ini",$Path_Len=1)
[/autoit] [autoit][/autoit] [autoit];~ MsgBox(4096,"",@CRLF & $Ext & @CRLF & $Dir & @CRLF & $Delim & @CRLF & $Progress_enable & @CRLF & $Progress_limit & @CRLF & $Export_file & @CRLF & $sPath_Len)
;~ Exit
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
IniWrite($Export_file,StringTrimRight(StringTrimLeft($file.path,$Path_Len),StringLen($file.name)),$file.Name,'"' & $file.Size & "|" & $file.DateCreated & "|" & $file.DateLastModified & "|" & FileGetVersion($file.Path,"FileVersion") & "|" & FileGetVersion($file.Path,"ProductVersion") & '"')
If $Progress_enable = 1 Then
$Progress_count = $Progress_count + 1
ProgressSet($Progress_count/($Progress_limit/100), $Progress_count & " von " & $Progress_limit & " Dateien ermittelt")
EndIf
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
[/autoit]Aufgerufen wird das ganze aus der Hauptgui wie folgt
[autoit]_GetFilesFolder_Rekursiv($searchdir, '*', 0, 0, 0, 1, _CountAllFiles($searchdir,1), $tmp_file)
[/autoit]Und dies hier wird genommen anstatt die zur übergebenen Funktion
[autoit]$Progress_enable=1, $Progress_limit=2000, $Export_file="d:\dummy.ini",$Path_Len=1
[/autoit]Wäre über Tipps erfreut
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 579, 283, 192, 124)
$Label1 = GUICtrlCreateLabel("Bitte Betrag eingeben", 48, 32, -1, 17)
$Label2 = GUICtrlCreateLabel("Bitte Betrag eingeben", 224, 32, -1, 17)
$Label3 = GUICtrlCreateLabel("Zwischensumme", 400, 32, 124, 17)
$Input1 = GUICtrlCreateInput("Input1", 48, 56, 129, 21)
$Input2 = GUICtrlCreateInput("Input2", 224, 56, 129, 21)
$Input3 = GUICtrlCreateInput("Input3", 400, 56, 129, 21)
$Button1 = GUICtrlCreateButton("Rechen", 424, 200, 97, 33, $WS_GROUP)
$Group1 = GUICtrlCreateGroup("", 48, 88, 129, 169)
$Radio1 = GUICtrlCreateRadio(" + 1,00€ ", 72, 105, -1, 25)
$Radio2 = GUICtrlCreateRadio(" + 2,00€ ", 72, 135, -1, 25)
$Radio3 = GUICtrlCreateRadio(" + 3,00€ ", 72, 165, -1, 25)
$Radio4 = GUICtrlCreateRadio(" + 4,00€ ", 72, 195, -1, 25)
$Radio5 = GUICtrlCreateRadio(" + 5,00€ ", 72, 225, -1, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Jo klappt danke , iniread wär ich ja nie draufgekommen
Du gehst wie folgt vor.
1. beim Aufruf prüfen ob schon "installiert/configuriert" also durch vorhandensein einer Ini von dir oder einem regkey
Fileexists Iniread Regread
2. Beim Ende des Installers dein Program als runonce in die registry eintragen, so startet es erneut du meinst doch den Windowsstart oder
Beim erneuten Aufruf sollte er ja wissen das es installiert ist und normallaufen.
Du kannst noch als Paramater /config einbauen um die Konfiguration erneut anzustossen.
Den Installer packst Du in eine Funktion die dann nur bei /config oder Erstaufruf startet.
Wie komm ich an die URL Info eine Intenetverknüpfungsdatei ?
so in etwa wie Filegetversion("Datei","URL")
Gruß Dietmar
klar mit openvpn wozu da autoit, läuft bei mir auf dem Debian System ist halt multiPlattform
Ein Server viele Clients, die entweder, sich gegenseitig sehen können oder nur 1:1 (Server-Clientx)
startest Du die kompilierte exe aus dem Scriptdir Verzeichnis ?
Beim Trennen sperrt MS Tastaur und Maus!
mit VNC würde es funktionieren
Lass Linus mal lieber am Kernel schrauben, das ist wichtiger
Wie geil ist das denn
ja so gehts gut dann kann ich nun die komplexere gui auf resizefunktionalität umstellen.
das war ja nur ein Dummybeispiel um die Frage zu verdeutlichen.
Hab da halt ne Menge Prödel auf der Gui aber mit (-1, ) ist es dank C&P recht simpel
Besten dank nochmal.
Ist as jetzt der aktuelle richtige Weg oder stehen da wieder Änderungen an?
Habe da einen Beitrag von Bugfix gesehen wo er im "engl." Forum eine recht schroffe Antwort erhielt und recht angepis... war war so um 2007 rum.