Welchen Sinn macht eine zweite GUI, wenn sie immer sichtbar ist?
Dann reicht es doch, wenn du die Elemente der GUI auf der Main GUI platzierst und nur optisch abtrennst.
Beiträge von BugFix
-
-
Ja, das geht. Aber schau doch vorher ob das nicht mit Scriptomatic zu lösen geht.
-
Warum lest ihr nicht die Hilfe?
Zitat von Hilfe zu StdinWrite[autoit]Alles anzeigen; Demonstrates the use of StdinWrite()
[/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>$foo = Run("sort.exe", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
[/autoit] [autoit][/autoit] [autoit]
; Write string to be sorted to child sort.exe's STDIN
StdinWrite($foo, "rat" & @CRLF & "cat" & @CRLF & "bat" & @CRLF)
; Calling with no 2nd arg closes stream
StdinWrite($foo); Read from child's STDOUT and show
[/autoit]
MsgBox(0, "Debug", StdoutRead($foo)) -
-
Ich würde mal probieren:
[autoit]Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)
[/autoit]
Und dann 'upx yourfile.exe' einsetzen.EDIT:
Wer mit UPX nichts anfangen kann - UPX ist ein Packprogramm zum Packen von EXE-Dateien.
Der Vorteil - die gepackten EXE müssen vor dem Ausführen nicht entpackt werden.
Hier zu finden. -
Habs mal bei mir getestet. Habe aber ein paar Sleeps eingebaut - ohne die gehts nicht. Klappt so tadellos:
Spoiler anzeigen
[autoit]Run('rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL PrintersFolder')
[/autoit]
send ("{ALT}")
send ("A")
send ("A")
send ("{HOME}")
send ("EPSON") ;Name des Druckers
send ("{ALT}")
send ("D")
send ("D")
Sleep(100)
Send("^{TAB}")
Sleep(100)
Send("^{TAB}")
Sleep(100)
Send("{TAB}")
Sleep(100)
Send("{TAB}") ; Focus auf Button "Druckkopfreinigung" -
Hi und Willkommen.
Mach dir mal keine Sorgen wegen des Alters, ich bin schon zum 3.ten Mal 15

-
Vertrau der Hilfe
[autoit]
- das ist richtig.
Hier, das was du wohl wolltest:ConsoleWrite(' 90° : ' & _AreaKreisSektor(9, 90) & @CRLF)
[/autoit]
ConsoleWrite('180° : ' & _AreaKreisSektor(9, 180) & @CRLF)
Func _AreaKreisSektor($Radius, $Winkel)
Local Const $pi = 3.14159265358979
Return $Radius^2*($pi*$Winkel/360)
EndFunc -
Ich hab nur deine Formel 1:1 umgesetzt. Ob sie sachlich richtig ist, weiß ich nicht.
[autoit]
Die Berechnung des Sinus hab ich analog aus der Hilfe entnommen:$degToRad = $pi / 180
[/autoit]
$y = Sin(90 * $degToRad) ;sine of 90°Aber ich werd jetzt mal mein Tabellenbuch vorholen und schauen, wie die Formel zur Berechnung ist. Dann melde ich mich nochmal.
EDIT:
Ich glaube, ich weiß, wo das Problem liegt.
Also meine Berechnung ist korrekt.
Aber ich gehe mal davon aus, dass du gar kein Kreissegment meinst!
Du willst sicher den Flächeninhalt eines "Tortenstücks" ermitteln - das ist aber kein Kreissegment sondern ein Kreissektor!
Schau mal unter Wikipedia nach Kreissegment - dort ist es gut abgebildet.Und für dein Tortenstück die Fläche ist doch simpel:
Teilfläche = Fläche Vollkreis / 360 * Winkel
Ask = Winkel / 360 * pi * Radius² -
Dann korrigiere mal deine Formel:
[autoit]ConsoleWrite(' 90° : ' & _AreaKreisSegment(9, 90) & @CRLF)
[/autoit]
ConsoleWrite('180° : ' & _AreaKreisSegment(9, 180) & @CRLF)
Func _AreaKreisSegment($Radius, $Winkel)
Local Const $pi = 3.14159265358979
Local $degToRad = $pi / 180
Return $Radius^2*(($pi*$Winkel/360)-(Sin($Winkel*$degToRad)/2))
EndFuncEdit: Oops, da hatte ich doch glatt den Radius mit dem Rest potenziert
- nu stimmts aber -
Meines Wissens kannst du nur 1 Wildcard verwenden.
Du müßtest also die Aktion mit jeweils 1 Wildcard nacheinander ausführen. Danach kannst du ja die Arrays mit _Array2DJoin() aus meiner Signatur zusammenfügen. -
Schreib den Inhalt in eine Temporäre Datei und drucke diese aus:
[autoit]Func _FilePrintCom($iFile)
[/autoit]
If Not FileExists($iFile) Then Return SetError(1,0,0)
$objShellApp = ObjCreate("Shell.Application")
$objShellApp.ShellExecute($iFile,0,0,"PRINT",0)
EndFunc -
z.B. so:
[autoit]$Edit = GUICtrlCreateEdit("", left, top, width, height, $ES_WANTRETURN)
[/autoit] -
zum 1.
Ja, dort kannst du auch Variablen verwenden.zum 2.
FileWrite schreibt den gesamten Inhalt einer Variablen in eine (vorher zum Schreiben geöffnete) Datei.
Wenn du keine Zeilenumbrüche in der Variablen hast, steht alles in einer Zeile.
FileWriteLine schreibt den Inhalt in eine Zeile und fügt, falls nicht vorhanden, automatisch einen Zeilenumbruch an. -
Hab das auch mal getestet. Scheint ein Bug von 3.2.10.0 zu sein, denn mit AU3LIB in alten Versionen funktioniert es tadellos.
Schreib doch dein Problem mal in das Bugforum im EN-Forum.
-
[autoit]
ReDIM $nr[$q + 1]
[/autoit]
$nr[$q] = $qWas soll das bedeuten? Wieso änderst du die Größe von $nr in Abhängigkeit von $q?
Hier tritt ein schon öfter angesprochenes Problem auf: Variablennamen ohne Sachbezug.
Ich hab keine Ahnung, welche Rolle $q bei dir spielt und aufgrund der Skriptgröße auch keine Lust zu suchen ob ich es herausfinde.
Es ist wesentlich einfacher (auch für dich, wenn du später nochmal in dein Skript schaust) Variablennamen zu verwenden, die einen eindeutigen Bezug auf ihre Aufgabe zulassen. Sonst ist es für einen Außenstehenden bei großen Skripten nicht zumutbar, das nachzuvollziehen. -
Zitat von Fast2
Aber ich hätte nicht gedacht dass ContinueLoop die Schleife fortsetzt(wie ich beim Name vermutet habe) sondern von vorne beginnt.
Das ist jetzt eine Fehlinterpretation.
Von vorn beginnen würde ja bei einer Zählergesteuerten Schleife bedeuten, dass wieder mit dem ersten Zählerwert begonnen wird.
ContinueLoop bedeutet nichts anderes, als dass ein neuer Schleifendurchlauf beginnt - die Schleife also ohne Berücksichtigung evtl. noch folgenden Codes sofort fortgesetzt wird.
Falls in einer Zählergesteuerten Schleife ContinueLoop bei Eintritt in die letzte Zählerabarbeitung aktiviert wird, würde dies indem Fall sogar zur sofortigen Beendigung der Schleife führen.
-
Also ich kann keinen Fehler finden in der Funktion. Allerdings ist dein Aufruf nicht korrekt.
Hier mal ein Bsp. von mir, wie es funktioniert (wobei dieses unsinnig ist, da Quelle und Ziel für denselben Root angegeben sind und demzufolge eine rekursive Abbildung der Ordnerstruktur "Quelle" zum Pfad der Ordnerstruktur "Ziel" hinzugefügt wird)
[autoit]
Ordner-Struktur:$quelle = 'C:\TEST_ONLY\Quellordner' ; hier MUSS der Pfad als String eingegeben werden
[/autoit][autoit][/autoit][autoit]
$ziel = 'C:\TEST_ONLY\Zielordner' ; hier können Makros verwendet werden
$InstallDatei = 'C:\TEST_ONLY\setup.au3' ; hier ebenfalls KEINE Makros verwenden_WriteInstall($quelle, $ziel, $InstallDatei, 0, 0)
[/autoit]Inhalt "setup.au3"
[autoit]If Not FileExists("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner") Then
[/autoit]
DirCreate("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner")
EndIf
FileInstall("C:\TEST_ONLY\Quellordner\Neu Textdatei (2).txt", "C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner\Neu Textdatei (2).txt")
If Not FileExists("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner") Then
DirCreate("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner")
EndIf
FileInstall("C:\TEST_ONLY\Quellordner\Neu Textdatei (3).txt", "C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner\Neu Textdatei (3).txt")
If Not FileExists("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner") Then
DirCreate("C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner")
EndIf
FileInstall("C:\TEST_ONLY\Quellordner\Neu Textdatei.txt", "C:\TEST_ONLY\Zielordner\TEST_ONLY\Quellordner\Neu Textdatei.txt") -
Hast du die Funktion korrekt aufgerufen?
Versuchs mal mit der GUI-Version, das sollte definitiv einfacher sein.
-
@pee
Die Auswertung würde ja für alle Skripts auf demselben System laufen - insofern ist die Hardware völlig außen vor, da für alle identisch.
Gerade die Skripte zeigten ja, dass ein (zeilenzahlmäßig) größeres Skript kleiner sein kann. Deshalb wollte ich eigentlich keine "zählbaren" Parameter anwenden, sondern lieber leistungsbezogene.AspirinJunkie
Ist doch schon mal ein erster Punkt.
Mal sehen, was wir noch alles zusammen bekommen.