Helpdesk
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

Autoit soll Popups während Sleep schließen. Wer weiß wie?

17 Beiträge ▪ Schlüsselwörter: Autoit, Fenster Schließen, Popups ▪ Abonnieren: Feed E-Mail
Seite 1 von 1
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

07.05.2013 um 08:41
Guten Morgen zusammen.

Kennt sich hier einer mit Autoit aus?

Ich habe folgendes Problem:
Ich möchte eine exe starten lassen, für einen längeren Zeitraum laufen lassen und anschließend beenden lassen.

Während es läuft steht das Programm auf Sleep. Ich möchte aber, dass es während dieser Wartezeit bestimmte Popups bzw. Benachrichtigungsfenster selber schließt. Wie bekomm ich das hin?

Hier mal der Code, den ich bislang selbst geschrieben habe:

ShellExecute ("D:\Desktop\VM\Neuer Ordner\X.exe")
WinWaitActive ("X")
Sleep (2000)
Send ("!s")
WinWaitActive ("User festlegen")
Send ("{enter}")
Sleep (3469278)
WinActivate ("X")
WinWaitActive ("X")
WinKill ("X")

Nennen wir einfach mal die Popups "Blöd" und die Systembenachrichtigungen "Nervig". Und die Systembenachrichtigungen müssten übrigens mit send ("[enter"] bestätigt werden.

Ich habe jetzt schon 3 Tage nach etwas brauchbarem im Inet rumgeforstet, hab aber nix gefunden.


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

07.05.2013 um 11:48
Das hört sich für mich danach an, als würdest du versuchen mit diesen Werbebanner-Programmen Geld zu verdienen und nichts dafür tun wollen ;)

Aber egal. Damit das ganze funktioniert gibt es in AutoIt bestimmte funktionen. Eine davon ist dafür da, ein bestimmtes Fenster anhand seines Titels oder Namens zu ermitteln. Etwas wie find("Werbung xy"). Du musst also zuerst das entsprechende Fenster ermitteln und anwählen, und anschließend deine Aktion ausführen. Leider sind deine Infos nicht ausreichend genug.


1x zitiertmelden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

07.05.2013 um 20:30
Zitat von alliswrongalliswrong schrieb:Das hört sich für mich danach an, als würdest du versuchen mit diesen Werbebanner-Programmen Geld zu verdienen und nichts dafür tun wollen ;)
Das hört sich falsch an ^^
Wer daran wirklich glaubt, dem gönn ich es :)

Der Ordner "VM" steht für Virtual Machine ^^. Und in Virtualbox hab ich ein Programm laufen, was ständig in unregelmäßigen Abständen Popups aufruft... Halt Werbefinanziert. Nur da ich in der Virtualbox nur 128 MB Grafik zu ordnen kann, wird es ab 5 Popups gleichzeitig etwas mager. Und da ich auch nur 256 Ram zuordnen möchte und nur knapp 40 % CPU (Ich brauch ja auch noch was für mich :D ) stürzt mir das Programm regelmäßig in der VM ab.
Zitat von alliswrongalliswrong schrieb:Eine davon ist dafür da, ein bestimmtes Fenster anhand seines Titels oder Namens zu ermitteln.
Das ist "WinExiists ()". An den Formeln soll es auch nicht scheitern.
Mein Problem ist halt nur, da ich das Skript ja mittels "Sleep(xxxx)" X Miinuten laufen lassen möchte, icih aber auch möchte, dass während dieses "Sleep" das Skript die nervigen Popups schließt.
Zitat von alliswrongalliswrong schrieb:Leider sind deine Infos nicht ausreichend genug.
'Welche brauchst du denn genau?


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 11:09
@Saturius
wofür brauchst du das sleep? während des sleeps kannst du keine aktionen ausführen.
deswegen würde ich dir raten das anders zu machen. nimm eine schleife die unendlich lange läuft. in dieser schleife prüfst du ob das popup vorhanden ist, wenn ja, wirds geschlossen. gleichzeitig musst du eine variable definieren die bestimmt, wie lange das script alle anderen aktionen stoppt, etwa "waitInMinutes = 5". Dann musst du in der schleife abfragen ob die 5 minuten um sind. wenn ja: mach die anderen aktionen, wenn nicht: mache nichts.


1x zitiertmelden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 11:57
Zitat von alliswrongalliswrong schrieb:wofür brauchst du das sleep? während des sleeps kannst du keine aktionen ausführen.
Das Sleep ist halt, dass das Programm ne knappe Std. läuft. Dieses Skript hab ich schon in eine Schleife gesetzt. "While True - WEnd".

Ich bin erst vor 4 Tagen auf Autoit gestoßen. Das mit den Variablen muss ich mir noch genauer anschauen...


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 12:07
wenn dein programm eh schon in einer endlosschleife läuft, dann mach es so:

Pseudocode:

waitInMinutes = 5;
letztesUpdate = now();
while

// Prüfe ob popup da ist
WinWaitActive ("X")
WinKill ("X")

// Andere aktionen die nur alle 5 minuten ausgeführt werden sollen
WENN (letztesUpdate - aktuelleUhrzeit) >= waitInMinutes DANN
mache irgendwas
letztesUpdate = now();
ENDE WENN

wend


melden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 12:34
@alliswrong

Ich lese bei dir raus, dass du deutsche "wenn dann" benutzt. Ich kann nur die englischen if then elseif und else benutzen...

Kann es sein, dass ich vor "waitInMinutes" und "letztesUpdate" jeweils noch ein $ vorsetzen muss?


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 12:39
@Saturius
mein quellcode war nur pseudocode.
musst du natürlich auf die autoit syntax anpassen und die entsprechenden funktionen für datumsberechnungen benutzen etc..


melden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 12:41
@alliswrong
Hatte mich schon ein wenig gewundert :)

Ich probier es mal aus. Kann aber etwas dauern, weil ich mich in Variablen und Funktionen noch etwas einlesen muss.

Danke auf jedenfall.


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 12:44
Hier mal nen tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial (Archiv-Version vom 01.06.2013)

Variablen in Autoit werden folgendermaßen angelegt:

Dim $var = "Wert"

Datumstutorial:
http://www.autoit.de/index.php?page=Thread&threadID=23887 (Archiv-Version vom 09.08.2014)
http://www.awesomeit.de/2009/01/18/messageboxen-in-autoit/

damit solltest du schonmal weiter kommen


1x zitiertmelden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:00
Zitat von alliswrongalliswrong schrieb:Variablen in Autoit werden folgendermaßen angelegt:

Dim $var = "Wert"
Darum hab ich nämlich gefragt, ob da nicht $ vor mussten ^^

Das Tutorial hab ich auch schon gefunden. Muss halt gucken, wie ich die ganzen Befehle und Funktionen dort anwenden und umschreiben kann.

Weil die "Do - Until" Schleife hab ich immer noch nicht gerafft, obwohl ganz simpel. Aber wenn ich die für einen kleinen Teil mit in das Skript einbaue, führt er sie entweder nicht aus oder schmeisst mir nen Fehler raus.

Weil, wenn das Programm 2 - 3 geöffnet wurde (nicht gleichzeitig sondern nocheinander), hat es die Macke, dass es nen "falschen" Fensternamen hat. Dann muss man erst den Prozess beenden und gute 5 Minuten warten. Denn in dieser Zeit schmiert auch die Tastatur ab (man kann also keine Tasteneingaben machen). Darum soll das Prog ja auch in einer VM laufen, weil sowas schon ziemlich störend ist, wenn man grad im Inet rumlungert. ^^
So ist das eben mit Werbefinanzierten Programmen.
Dafür hatte ich diesen Befehl:
Do
If WinExists ("ABC") Then
ProcessClose ("X.exe *32") And
Sleep (310000)
EndIf
ShellExecute ("D:\Desktop\VM\Neuer Ordner\X.exe")
Until WinExists ("X")


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:08
hm ich versteh dich irgendwie nicht ganz.
Wofür soll das programm warten bzw. worauf?
Soll es auf das Popup warten oder auf etwas anderes?


melden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:20
Ja, ist etwas durcheinander grad.
Also nochmal von vorne:
In Virtualbox läuft ein werbefinanziertes Programm, was ne gute Std laufen soll, danach beendet werden soll und dann wieder ne gute Std. laufen soll... usw...

Dieses Programm ruft ständig Popups auf. Ab ca. 3 -5 Popups hängt sich das Win in der VM auf wegen zu geringer Ressourcen, da ich in der Virtualbox nicht all zu viele Ressourcen abgeben kann/will.

Ebenfalls ist das Problem, wenn das Programm das 3. oder 4. Mal gestartet wurde, hat es die Macke, dass es selbst nicht richtig funzt.
Es trägt dann nen "falschen" Fensternamen und auch die Tastatur funzt im gesamten Windoof nicht mehr.
Dafür muss man entweder das Windows komplett neustarten oder den Prozess beenden und im Schnitt 5 Min. warten, und dann das Programm neustarten.

Und nochmal. Es ist keins von diesen Paidmail, Click-for-Fußnägel oder Rubbel-die-Katz-losen dingern.

Hier mal der Code, den ich geschrieben habe. Nur der funzt nicht so, wie ich mir das vorstelle.
Das Programm öffnet er zwar und läuft auch geschmeidig. Sobald aber die "Do - Until" Schleife arbeiten soll, tut sie es nicht.
(Naja und halt das Problem mit den Popups. Aber da arbeite ich mich jetzt rein mit deinem Code)

While 1

ShellExecute ("D:\Desktop\VM\Neuer Ordner\X.exe")

Do
If WinExists ("ABC") Then
ProcessClose ("X.exe *32") And
Sleep (310000)
EndIf
ShellExecute ("D:\Desktop\VM\Neuer Ordner\X.exe")
Until WinExists ("X")


If WinExists ("X") Then
Winactivate ("X")
EndIf

WinWaitActive ("X")

Send ("!s")

WinWaitActive ("User festlegen")

Sleep (1529)

Send ("{enter}")

Sleep (3469278)

Processclose ("X.exe *32")

Sleep (29763)

WEnd

Exit


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:22
ok verstehe. folgende punkte soll das prog also machen:

1. starte Programm "X"
2. schließe alle Popups während Programm "X" läuft
3. schließe das Programm "X" nach ca. einer Stunde und starte es neu
4. Wenn das Programm "X" 4 mal hintereinander neu gestartet wurde, warte 5 Minuten bis du es erneut startest

richtig?


1x zitiertmelden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:29
Zitat von alliswrongalliswrong schrieb:1. starte Programm "X"
2. schließe alle Popups während Programm "X" läuft
3. schließe das Programm "X" nach ca. einer Stunde und starte es neu
Genau.
Zitat von alliswrongalliswrong schrieb:4. Wenn das Programm "X" 4 mal hintereinander neu gestartet wurde, warte 5 Minuten bis du es erneut startest
Nicht ganz. Mal ist es beim 3. Mal so, Mal ist es aber erst beim 5. Mal so.
Daher wollte ich das Skript dieses "Kuriosum" am Fensternamen erkennen lassen.
Und mal dauert diese Macke 4 Minuten, Mal 7 Minuten, Mal 5 Minuten etcpp

Also:
1. Normalerweise heisst das Programm (Fenster) "X"
2. Wenn es mal nicht "X" heisst sondern "ABC" (Bei der Macke heisst es immer "ABC") dann soll er den ganzen Prozess beenden und einfach mal 5 Minuten Warten und das Programm neustarten. Sollte es dann immer noch "ABC" heissen, soll er den Prozess nochmal beenden und wieder 5 warten und dann das Programm starten, bis das Fenster wieder "X" heisst.


melden

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:46
@Saturius
gut, dann solltest du das programm nach dem dritten mal erst nach 5 minuten starten, dann kommst du nicht in dieses problem rein.

also, was brauchst du:

1) Das Programm muss endlos laufen, also eine WHILE schleife.
2) Eine Variable die speichert, ob das programm "X" gerade läuft oder nicht
3) Eine variable die zählt, wie oft das programm hintereinander gestartet wurde
4) Eine Variable die den start des programms festhälst (datum+zeit)

Ich schreibe das jetzt mal in pseudocode, musst du dann halt für autoit anpassen:

$programmläuft = false
$programmzaehler = 0
$programmstart
while

// Programm start
if $programmläuft == false then
if $programmzähler >= 3
sleep(5 minuten)
$programmzaehler = 0
end if
starte programm X
$programmstart = now() // Aktuelle zeit + datum
$programmzaehler += 1
$programmläuft = true
end if

// Programm beenden nach einer stunde
if (now() - $programmstart) >= 1 Stunde && $programmläuft = true then
beende programm X
$programmzaehler = 0
$programmläuft = false
end if

// Popup schließen
if $programmläuft == true then
if Popup aktiv then
schließe popup
end if
end if

wend



So, das dürfte es sein. Alles ohne gewähr, bin grad noch anderweitig beschäftigt.


melden
Saturius Diskussionsleiter
ehemaliges Mitglied

Link kopieren
Lesezeichen setzen

Autoit soll Popups während Sleep schließen. Wer weiß wie?

08.05.2013 um 13:50
Ok, danke schonmal.

Ich schreibs gleich um und probier es dann mal aus.
Hatte mir grad noch nen anderes Skript geschrieben, was scheinbar auch funktioniert.
Aber ich schreib jetzt mal deinen Code um und probier den auch mal...

Ganz lieben Dank dafür.


melden