evtl mit RunAs ?
Sehe mal in die Hilfe und auch die dort unter RunAS aufgelistete verwandte Funktionen.
Beiträge von Alina
-
-
Moin Donsen64-Ingo
Ich weiß ja nicht, was Du beruflich machst, so kann ich Dir weder zustimmen, noch ...
-
Aber das es so schlimm ist war mir dann doch nicht bewusst.
Also mir war von Anfang an bewusst, das ich nicht mehr konnte damals als Batchdateien zu erstellen, als ich hier her gekommen bin. Mich begeisterte AutoIt und dann auch die EDV. Hat
mir beruflich und privat sehr viel erleichtert und ich habe auch sehr viel gelernt, neben AutoIt auch sehr viel über andere Bereiche der EDV (Soft- und Hardware). Mich hat es so begeistert, was mit AutoIt zu machen ist, das ich jedem sagen kann, es macht spaß sich mit AutoIt auseinander zu setzen. Hier im Forum bekommt man immer Hilfe, und wenn man sie hier nicht findet, gibt es einige, die auch bei den anders sprachigen AutoIt Foren rein schauen. Überall bekommt man freundliche Hilfe, solange man die wenigen Forenregeln beachtet.
.
Also geh mit SPASS an die Sache, wenn es für DICH privat ist, das Du dich mit AutoIt beschäftigst.
.
Ein Schmunzeler (heißt das so?)
Durch den Beitrag hier, habe ich mich mit StringInStr auseinander gesetzt und wieder einiges dazu gelernt. Also, das zeigt, durch Deinen Beitrag haben nun mindestens zwei (Du und ich) etwas dazu gelenrt.water:
Mist, nun hat die NSA ein weiteres Wissen über mich. Sie wissen das ich mit StringInStr wahrscheinlich umgehen kann. DANGER-NSA-AKTE-ALINA auf rot setzen. -
Hatte noch überlegt, da ich nicht schlafen konnte, es in diese Richtung zu machen, das ich für jede/m Teilnehmer/in die Termine in eine globale Auflistung schreibe, also insgesammt dann ja 20 Teilnehmer/innen, was auch bedeutet zwei mal 365 Tage in diese 20 globalen Auflistungen einschreiben/eintragen.
Aber wie das dann richtig nutzen mit der oben gezeigten GUI? Oder die Daten irgendwie aus der
Exceltabelle ziehen (als *csv abspeichern und diese dann auslesen)? Ich habe da irgendwie ein großen Knoten in meinem Kopf.Idee der Datenerfassung manuell unter Einsicht der Exceltabelle:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $Gruppe1[11]=[10,1,2,3,4,5,6,7,8,9,10]
ConsoleWrite('Aktueller MA GR 1: ' & $Gruppe1[6] & @CR)Global $Gruppe2[11]=[10,1,2,3,4,5,6,7,8,9,10]
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Aktueller MA GR 2: ' & $Gruppe2[1] & @CR); Später statt Januartermine dann alle Termine in dem Zeitraum 01.01.2015 bis 31.12.2015
[/autoit] [autoit][/autoit] [autoit]
; 29.12.2014 - 31.12.2014 dienen dem Verständnis wie es zu den Zahlenfolgen kommt.
;Januartermine: $Azu16 = 1 für 1. Gruppe und 6 für 6. Person
Global $Azu16[4] =["29.12.2014","12.01.2015","26.01.2015"]
ConsoleWrite('Azu Gruppe-1 Nr.-6: ' & $Azu16[1] & @CR) ; Testausgabe;Januartermine: ; $Azu21 = 1 für 2. Gruppe und 1 für 1. Person
[/autoit]
Global $Azu21[4] =["29.12.2014","12.01.2015","26.01.2015"]
ConsoleWrite('Azu Gruppe-2 Nr.-1: ' & $Azu21[1] & @CR) ; Testausgabe -
Moin Moin zusammen.
Ich habe ab dem Montag den 29.12.2014 zwei Gruppen, mit jeweils zehn Teilnehmer/innen.
Diese haben jeder einen Tag innerhalb von 14 Tagen, an dem sie für bestimmte Abläufe
zuständig ist.Am 29.12.2014 sind in der Gruppe-1: Nr.-6 und in Gruppe-2 Nr.-1. Am nächsten Tag erhöht
sich die Nr.-6 auf Nr.-7 und die Nr.-1 auf Nr.-2. Nach der Nr.-10 kommt dann wieder die
Nr.-1.Das geht so bis zum 31.12.2015, ABER: vor oder nach Feiertagen verschiebt es sich, so das
möglichst schnell die bekannte Reihenfolge wieder aufgenommen werden kann.Ich habe das als Excelliste und könnte damit mein Vorhaben zwar umsetzen, würde es aber
lieber in AutoIt scripten.Nur wie? Denn ich habe noch gar keine Idee, wie und wo ich da anfangen soll. Wenn es funktioniert
werde ich einige solche "Aufgabenverteilungspläne mit regelmäßigen Aufgaben für die Auszubildenen"
erstellen, um es ihnen einfacher zu machen. Aber erst einmal einen, für den Durchblick.Ich habe es mir so gedacht, das in einer InputBox zum Beispiel "6" und in der zweiten "1"
steht und dann die Tage mit vollständigem Datum ausgegeben werden, in den in Gruppe-1 die "6"
steht und in Gruppe-2 die "1". Ist nur eine Zahl angegeben, dann soll für die andere Gruppe
na klar keine Angaben gemacht werden, da sie nicht vorhanden ist. Bei der "0" soll nichts
angegeben werden. Zusätzlich soll die Ausgabe erfolgen, wer als nächstes dran ist und zwar
in einer MsgBox.Ich habe mal die Ecelliste beigefügt.
- rot = Sonn- und zu beachtende Feiertage.
- grün = die Bereichswochen die irgendwie abweichend sind (Feiertage in der Nähe)
Habe die Tage mal in einer Spalte durchnummeriert. Evtl. kann man damit was anfangen?Die GUI:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>$Form1 = GUICreate("Aufgabenverteilung mit 14-tägiger Widerholung.", 421, 438, 192, 124)
[/autoit] [autoit][/autoit] [autoit]
$Label1 = GUICtrlCreateLabel("Aufgabenverteilung mit 14-tägiger Widerholung.", 8, 8, 399, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Gruppe 1", 8, 40, 79, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Gruppe 2", 128, 40, 79, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("6", 88, 40, 33, 28)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("1", 216, 40, 25, 28)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Anzeige = GUICtrlCreateButton("Anzeige", 256, 40, 153, 25)
$Ergebnisanzeige = GUICtrlCreateEdit("", 8, 80, 401, 345)
;GUICtrlSetData(-1, "Ergebnisanzeige")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitCase $Anzeige
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,"Info","Wenn Button gedrückt wurde, soll unten die Ausgabe erfolgen.")
MsgBox(64,"Info","Wenn Button gedrückt wurde, soll zusätzlich eine MsgBox auf gehen und ausgeben, wer am Folgetag dran ist.")EndSwitch
[/autoit]
WEndIch bin echt gespannt, ob und wie das umzusetzen ist.
-
evtl. so? siehe Zeie 23 & 24 und beachte folgendes noch.
Ordner in den Kopiert werden soll ggf. erst einmal erstellen. Zeile 23.
HIer ist es nun so, das er jedes mal erstellt wird. Entweder vorher abfragen, ob der Ordner besteht oder nach der Installation den Ordner incl. Inhalt wieder löschen. So wie Du es möchtest/brauchst/es sinnvoll ist.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Dragonwrath Downloader", 270, 110, 192, 124)
$Progress1 = GUICtrlCreateProgress(8, 8, 250, 17)
$Label1 = GUICtrlCreateLabel("Speed", 115, 32, 35, 37)
$Button1 = GUICtrlCreateButton("Download", 8, 76, 255, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
MsgBox(0,"","Achtung der Download Prozess kann nicht Gestoppt werden!")
DirCreate("C:\Ordner")
_INet_Download("http://downloads.sourceforge.net/sevenzip/7z920.exe","C:\Ordner" & "\dragonwrath.exe",$Progress1,$Label1)
MsgBox(0,"","Fertig... Jetzt Starte bitte die dragonwrath.exe!")
Exit(0)
EndSwitch
WEnd;===============================================================================
[/autoit]
;
; Description: Downloads a file from the internet in the backround, so the script will be continued a. Also
; sets Progressbar and Speed. Speed must be a label to set.
; Author(s): Burak Kavak
; Syntax: _INet_Download($hDownload, $hTitle[, $vProgress, $vSpeed])
; Parameter(s):
; $hDownload - The URL to download from the internet (required)
; $hTitle - The path where to download the file (with filename) (required)
; $vProgress - The control ID a progressbar if you want to show the progress from the download (default is 0)
; $vSpeed - The control ID of a label where you want to show the KB/s
;
; Return Value(s):
; If the file can't be found - Sets @error to 0
; If the downlaod URL is empty - Sets @error to 1
; If the title - Sets @error to 2
;
;===============================================================================
Func _INet_Download($hDownload, $hTitle, $vProgress = 0, $vSpeed = 0)
If $hDownload = "" Then
SetError(2)
Exit
EndIf
If $hTitle = "" Then
SetError(3)
Exit
EndIf
If $hDownload And $hTitle And $vProgress And $vSpeed <> "" Then
$hGetFile = InetGet($hDownload, $hTitle,1,1)
If $hGetFile = 0 Then
SetError(0)
Exit
EndIf
Sleep(300)
$vTimer = TimerInit()
Do
$hGetProgress = Round((InetGetInfo($hGetFile,0)/InetGetSize($hDownload, 1))*100,0)
GUICtrlSetData($vProgress, $hGetProgress)
$hGetSpeed = Round(InetGetInfo($hGetFile, 0)/TimerDiff($vTimer), 0)
GUICtrlSetData($vSpeed, $hGetSpeed & " KB/s")
Sleep(200)
Until InetGetInfo($hGetFile, 2)
GUICtrlSetData($vProgress, "100")
EndIf
If $vProgress And $vSpeed = 0 And $hDownload And $hTitle <> "" Then
$hGetFile = InetGet($hDownload, $hTitle,1,1)
If $hGetFile = 0 Then
SetError(0)
Exit
EndIf
Do
Sleep(200)
Until InetGetInfo($hGetFile, 2)
EndIf
If $vProgress = 0 And $hDownload And $hTitle And $vSpeed <> "" Then
$hGetFile = InetGet($hDownload, $hTitle,1,1)
If $hGetFile = 0 Then
SetError(0)
Exit
EndIf
Sleep(250)
$vTimer = TimerInit()
Do
$hGetSpeed = Round(InetGetInfo($hGetFile, 0)/TimerDiff($vTimer), 0)
GUICtrlSetData($vSpeed, $hGetSpeed & " KB/s")
Sleep(200)
Until InetGetInfo($hGetFile, 2)
EndIf
If $vSpeed = 0 And $hDownload And $hTitle And $vProgress <> "" Then
$hGetFile = InetGet($hDownload, $hTitle,1,1)
If $hGetFile = 0 Then
SetError(0)
Exit
EndIf
Sleep(300)
Do
$hGetProgress = Round((InetGetInfo($hGetFile,0)/InetGetSize($hDownload, 1))*100,0)
GUICtrlSetData($vProgress, $hGetProgress)
Sleep(200)
Until InetGetInfo($hGetFile, 2)
GUICtrlSetData($vProgress, "100")
EndIf
EndFuncnehn???
-
Du "petz petz". Aber eine Fehler hat sich eingeschlichen bei dem NSA Profil.
Die NSA darf mich mal gaanz gerne haben. :p -
Ich habe zwar nur einen nachweislichen IQ von 141, aber ich brauche keine Bedienungsanleitung für dieses Forum, inkl. Gefahrenhinweisen.
.
Ich bin blond genug. -
-
@BugFix, auf keinen Fall !!!
-
Jetzt bekomme ich keine Fehlermeldung mehr.
Mit dem DLL Viewer von nirsoft.net finde ich alles aus der DLL jetzt.
Danke allen ! -
Moin AspirinJunkie.
Mit den StringRegExpReplace und den Pattern tue ich mich schon bei dem verstehen schwer. Habe es mal
Patternerklärung so ???
Spoiler anzeigen
(
. Findet jedes einzelne Zeichen (außer Zeilenumbrüche).
{1,40} Wiederholt die bisherigen Zeichenmindestens 1mal und maximal inklusive 40 mal.
)
(
?= prüft, was vor der Übereinstimmung stehen darf.
\ "escapen" o. "maskieren").
s Findet alle Leerzeichentypen: Chr(9) bis Chr(13), welche Tabulator, Zeilenschaltung, senkrechter Tab, Seitenvorschub, Wagenrücklauf und das Leerzeichen sind ( Chr(32)
| Oder. Der Ausdruck auf der einen Seite oder auf der anderen Seite wird gefunden.
$ Findet ein Zeilenende innerhalb der Datenmenge.
)Zum Verständnis für mich bzw. Frage: Bedeutet {1,40} nun, das er das 1. bis 40, Zeichen das er findet an $TEMP ab gibt, als $1, dann setzt er ein @CRLF und sucht weiter 41-81, usw. und wenn keine 40 mehr zusammen kommen ($ hat ja das Zeilenende gefunden), dann "fertig" mit $Temp füllen! Richtig?
Ich habe einfach das Problem, das ich nicht weiß, wie ich im Kopf denken muss, mir die richtige Frage die zu lösen für stellen kann, damit ich endlich mal verstehe, wie das pattern funktioniert.
-
Ich habe mir gerade die oben zur Verfügung gestellten drei Dateien "gezogen" und mir, weil ich auch eine Ausgabe die bestimmt nicht so gedacht ist.
Erst die Versionsangabe, dann mit einem Time 20.0149 das Exit mit dem Code -1073741819.
Sieht so aus:Spoiler anzeigen
[autoit]
[/autoit]
Version: 2.0.8
!>15:19:33 AutoIt3.exe ended.rc:-1073741819
>Exit code: -1073741819 Time: 20.149
Okay, da dachte ich dann, schau dir mal die DLL an. und ich finde die ist ganz schön leeeeeer, oder wie kommt es, das mit nur das angezeicht wird, was auf dem beiliegenden Foto zu sehen ist? -
@hexpirator
Dafür sind wir hier, zum helfen.
.
@KloMeister
Das mit StringSplit war von mir so gewählt, damit hexpirator erst ein "Neues" dazwischen hat und nicht gleich so viel.
Das mit Else / ElseIf habe ich eigentlich nur gemacht, damit hexpirator evtl. selber schauen kann, was er möchte, wenn er sich die Hilfe durch sieht und ihm dann einfällt, es könnte auch noch eine Zwischenschicht geben, da ist dann ElseIf dran und das habe ich ihm dann ja schon gezeigt. -
Alina:
Danke für deinen Tipp mit "WinMerge" aber die Codedateien von Oscar und "mir" (die Idee mit den Label's als Kacheln kommt von BugFix) sind unterschiedlich wie Katz und Maus.Grüße,
klarosKlar ist das Katze & Maus. Ich wollte Dir damit auch sagen, das Du so mal schauen kannst, ob Ihr irgenbdwo gleiche "Ansätze" habt und dann schauen kannst, wie BugFix den Ansatz gelöst hat. Aber das ist dieses mal vielleicht doch sehr viel Katze & Maus. Sorry.
-
Das ist eine sehr gute Frage, die mich gleich auf eine Idee bringt. Wenn es möglich wäre, könnte man ja z. B. bestimmte Auswahlmöglichkeiten z. B. fett darstellen.
-
Ich, aber wie einige sich denken können, sicherlich nicht aus privaten Gründen, sondern aus beruflichen. Kenne da die verschieden EULA in einigen Sprachen. Also die ist bzgl. o. g. Bezug überall unbedenklich.
-
Übernachtmodus:
Excelformel: =Wenn(Startzeit>Zielzeit;fu_nachtmodus;fu_tagmodus)bedeutet doch im Umbau:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$Startzeit = "1800"
$Zielzeit = "0500"; =Wenn(Startzeit>Zielzeit;fu_nachtmodus;fu_tagmodus)
[/autoit] [autoit][/autoit] [autoit]
If $Startzeit > $Zielzeit Then
nachtmodus()
ElseIf $Startzeit < $Zielzeit Then
tagmodus()
EndIf
;EndIfFunc nachtmodus()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,"Nachtmodus","Es ist Nacht und draußen ist es dunkler als am Tag.")
EndFuncFunc tagmodus()
[/autoit]
MsgBox(64,"Tagmodus","Es ist Tag und im Sommer schein dann auch mal die Sonne.")
EndFuncDas einmal als Ansatz für den Übernachtmodus. Start- und Zielzeit kannst Du HHMMSS nehmen, oder mit StringSplitt die HH,MM und SS in ein Array ausgeben lassen und dann nur die beiden ersten Arrays verwenden ohne die Doppelpunkte. Zum Beispiel für 21:37:58 nimmst Du array[1]&array[2], was dann folgendes Ergebniss hat 2137 (vierstellig für das Scriptbeispiel von mir. Ansonsten: fragen !!!
Edit: Beitrag ist zwar erst ca. elf Stunden alt, aber ich habe mal etwas weiter gescriptet und versucht es so gut es geht und nach besten Wissen und Gewissen dokumentiert.
Ich versuche da die Zeiten in mathematische Zahlen umzuwandlen und dann mit diesen Werte zu arbeiten. Also ist 0630 (für Startzeit 6:30 Uhr) größer als 1630 (für Endzeit 16:30), dann Tagmodus, ansonsten Nachtmodus. Das war groß erklärt, was ich vor hatte. Ich weiß nicht ob StringSplit so die ideale Lösung ist, aber ich denke mal, das ist zumindest ein Lösungsweg/-ansatz. Sollte ich die Aussage von KloMeister, die da lautet: " Ich glaube, dass AutoIt in dem Fall nicht richtig mit der Formatierung klar kommt, da es sich ja nicht direkt um eine mathematische Zahl handelt." einfach so stehen lassen oder zumindest versuchen einen Lösungsweg/-ansatz zu suchen und zu finden? Und da ich mal wieder viel zu früh an meinem ersten langen Wochenende wach gewurden bin, im Bett lag und ich plötzlich überlegte, ob mal das evtl. doch umsetzen könnte. Punkte weg und dann habe ich doch zwei mathematische Zeichen, solange ich das Format HH:MM in der InputBox beachte. Also aufgestanden, Kaffee gemacht, Brötchen in Opfen, PC an und dann nach einem kleinen Frühstück mit heutiger Tageszeitung und Kaffee das umgesetzt, was irgendwie im Kopf war. Ergebniss:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$an_zeit = InputBox("Startzeit","Startzeit festlegen. Format ---> HH:MM","06:30")
$end_zeit = InputBox("Endzeit","Endzeit festlegen. Format ---> HH:MM","16:00");Daten aus der InputBox auslesen und in jeweils zwei Teile splitten beim Doppelpunkt
[/autoit] [autoit][/autoit] [autoit]
$s_answer = StringSplit($an_zeit, ":") ; Ergebnis: $s_answer[1] und $s_answer[2] ; also: 0630
$e_answer = StringSplit($end_zeit, ":"); Ergebnis: $e_answer[1]&$e_answer[2] ; also 1600; meine Nutzung der Excel-Formel "=Wenn(Startzeit>Zielzeit;fu_nachtmodus;fu_tagmodus)"
[/autoit] [autoit][/autoit] [autoit]
If $e_answer[1]&$e_answer[2] < $s_answer[1]&$s_answer[2] Then
nachtmodus()
ElseIf $e_answer[1]&$e_answer[2] > $s_answer[1]&$s_answer[2] Then
tagmodus()
EndIf; ab hier die Funktionen die ich nutze
[/autoit] [autoit][/autoit] [autoit]
Func nachtmodus()
MsgBox(64,"Nachtmodus","Es ist Nacht und draußen ist es dunkler als am Tag.")
EndFuncFunc tagmodus()
[/autoit]
MsgBox(64,"Tagmodus","Es ist Tag und im Sommer schein dann auch mal die Sonne.")
EndFunc -
... aber kann sein, dass dies gegen die MS EULA verstößt.
Gegen die MS EULA verstößt man nicht, nur ob es Sinn macht, das ist die Frage.
-
Hi Osar,
nö, dein Script verstehe ich nicht ...
Ne, ne ich hab's mir gerade erst mal kurz zur Gemüte geführt - weil am Mac sitzend noch nicht gestartet ...
Und außerdem: Riesen-Dank dafür, dass du mir einen ganzen Script-Vorschlag schickst!!!Super ist schon mal deine UDF für die Icons!
Alles was ich probiert habe, um png's zu konvertieren und sie gut aussehen zu lassen, war Murks.Die Hauptdatei muss ich mir Schritt für Schritt anschauen - viele Funktionen o. ä. kenne ich noch nicht.
Das geht über die Hilfefunktion aber ganz gut.Was sich mir nicht so schnell erschließen wird, wo dein Code pragmatischer / effizienter / sicherer ist.
Bzw. wo in meinen Code die heftigsten Fallstricke sind, mit denen du "nicht leben" kannst.
Da fehlen mir einfach die Erfahrung und Hintergrundwissen.Vielleicht hast du noch Zeit und Lust mir da auf die Sprünge zu helfen.
Ansonsten kommen mir noch bestimmt Fragen, wenn ich mich durch deinen Vorschlag "durchgewurschtelt" habe.Danke und Grüße,
klarosMojn Klaros.
Mein Vorschlag, so mache ich das auch immer bei neuen Sachen die ich hier nicht gleich erstehe, ich schaue mir immer das "alten" und das "neue"Script gegenüber an. Entweder kann man es mit der Software "WinMerge" machen (gibt es evtl. auch für Mac) odr DU machst es wie ich, das Du die beiden Scripte nebeneinander öffnest. Ich verwende dann beide Monitore, wobei das aber mehr arbeite ist, wie bei WinMerge, da dort die Unterschiede angezeigt werden ohne zu suchen.
.
So verstehe ich dann viel besser, wo meine "Fehler2 sind bzw. wo die/der Helfende etwas anders/besser/sinnvoller gelöst hat.