Script pausieren/fortsetzen

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Script pausieren/fortsetzen

Re: Script pausieren/fortsetzen

by Gerdi » 05 Jul 2022, 10:19

ich habe das Ganze noch in eine Funktion gesteckt:

Code: Select all

; Aufruf Beispiele:
; HK="
; Pfad:="c:\temp\Pfad mit Leerzeichen\Notiz.txt"
; Run_Wait(HK Pfad HK)

Run_Wait("explorer.exe")		; Startet ein Explorer-Fenster und wartet bis es geschlossen wird.
MsgBox, % Run_Wait("notepad.exe",,,PID) . " PID: " . PID . " beendet"

Run_Wait(Ziel,Arbeitsverz="",MaxMinHideUseErrorLevel="",ByRef VarPID="")		; wie RunWait, jedoch nur wenn der Prozess mindestens 1,6 Sekunden läuft!
; dafür werden auch Programme wie der Explorer unterstützt.
{
	Run,% Ziel,% Arbeitsverz,% MaxMinHideUseErrorLevel,VarPID
	Sleep 530
	Process, Wait,%VarPID%,1						; wartet bis Prozess sauber eingenistet und überprüft ob Prozess noch vorhanden.
	if(ErrorLevel = 0)								; Die PID ist nicht mehr vorhanden
	{												; Zweig der beim Starten und überwachen des Explorers verwendet wird
		VarId := WinExist("A")						; umschwenken aufs momentan Aktive Fenster
		; SoundBeep									; Akustische Meldung umschwenken
		WinWaitClose, ahk_id %VarId%				; warten auf das Schließen des Fensters
		return Ziel
	}
	Process, WaitClose,%VarPID%				; warten auf schließen des Prozesses
	if(ErrorLevel<>0)						; Errolevel auf 0 gesetzt
		MsgBox %A_LineFile% at %A_LineNumber%	nicht erwarteter Skriptzweig
	return Ziel
}
Voraussetzungen: Prozess besteht für mindestens 1,6 Sekunden, danach besteht noch eine PID oder ID

Kritik, Verbesserungen willkommen.

Re: Script pausieren/fortsetzen

by Boss55 » 04 Jul 2022, 11:18

Hallo Leute !

Mann, Mann, Mann ihr seid echt hartnäckig ! :thumbup: :thumbup: :thumbup:

@Gerdi
Bitte berichte mir so genau wie Du es kannst, wie dieses Skript durchläuft!
Das ist schnell erzählt, es funktioniert perfekt !!!!! :bravo:

Die DB startet, die 1. MsgBox popt auf und schliesst sich. Beendet man die DB geschieht das gleiche mit der 2. MsgBox.

Ich habe inzwischen etwas experimentiert, die MsgBoxen rausgenommen und durch ein paar andere Befehle ersetzt und alles läuft wie gewünscht.

Allen die hier gepostet haben vielen Dank für eure Zeit und Mühe.
Natürlich ein very special thx an den unermüdlichen Gerdi, der den Löwenanteil zur Lösung beigetragen hat

Bis demnäxt, der alte Mann.

Re: Script pausieren/fortsetzen

by just me » 04 Jul 2022, 05:01

Gerdi wrote:@alle
es hatte allerdings nicht verlässlich funktioniert mit

Code: Select all

Process, WaitClose,%MdbPID%,99999999
wofür ich keine Erklärung habe.


Moin Gerdi,

eine Vermutung:

In der Hilfe findet sich zu SetTimer -> PeriodeOnOffDelete folgende Anmerkung:
Periode muss ein Integer sein, es sei denn, es wird eine Variable oder ein Ausdruck genutzt, dann werden alle Nachkommastellen ignoriert. Dessen absoluter Wert darf nicht größer als 4294967295 ms (49,7 Tage) sein.
Ich vermute nun, dass die Wartezeit für Process, WaitClose intern ähnlich verwaltet wird. Statt mit Sekunden wird mit Millisekunden gearbeitet. 99999999 Sekunden ergeben dann 99999999000 Millisekunden. Damit wird der höchstwert einer 32-bittigen Integerzahl überschritten.

Re: Script pausieren/fortsetzen

by Gerdi » 03 Jul 2022, 16:34

Code: Select all

run "D:\Programme (x86)\Microsoft Office\Office12\MSACCESS.EXE" "F:\Eigene_Dateien\Datenbank\Musik\musik.mdb",,,MdbPID
sleep 1000
; MdbPID :=					; zum testen ohne ProcessID  Kommentar entfernen.
Process, Wait,%MdbPID%,4
if(ErrorLevel = 0)
{
	MdbId := WinExist("A")
	SoundBeep
}
else
	MdbId := WinExist("ahk_PID " MdbPID)
sleep 1000
MsgBox  64, Schließfreigabe ,nach schließen dieses Fensters`, kann die Schaltfläche zum Schließen der DB betätigt werden, 4
WinWaitClose, ahk_id %MdbId%
; Aktionen nach schließen der  Datenbank
MsgBox  64, Ende,  >%MdbID%< Fenster Schließung festgestellt, 4

ExitApp

LShift & Rshift::
ListLines
return
Bitte berichte mir so genau wie Du es kannst, wie dieses Skript durchläuft!

Re: Script pausieren/fortsetzen

by Boss55 » 03 Jul 2022, 10:08

Hallo,

hat sich erledigt, habe zwar den timeout hinbekommen, aber dann werden wieder alle Befehle vor run und alle nach waitclose ignoriert. Frustrierend das.

bye

Re: Script pausieren/fortsetzen

by Boss55 » 03 Jul 2022, 05:45

Hallo !

@Gerdi

leider werden auch hier die nachfolgenden Aktionen ignoriert.
Mein laienhafter Gedanke war nun, der MsgBox(ohne die es scheinbar nicht geht) ein so kurzes timeout zu verpassen, das sie quasi unsichtbar ist, bekoom´s aber nicht hin.

Wrst du vuielleicht so freundlich, mir dahingehend Hilfestellung zu leisten ?

Schönen Sonntag

Re: Script pausieren/fortsetzen

by Gerdi » 03 Jul 2022, 02:00

Mit der 99999999 scheint der Befehl nicht wie in der Hilfe beschrieben zu funktionieren.
Nehme ich zurück. Aber der Sleep-Befehl zwischen Run und Process wird benötigt,
sonst kann es passieren, dass der Prozess noch gar nicht richtig gestartet ist, wo bereits die Abfrage nach Prozessende erfolgt.

Re: Script pausieren/fortsetzen

by Gerdi » 02 Jul 2022, 19:34

Code: Select all

run "D:\Programme (x86)\Microsoft Office\Office12\MSACCESS.EXE" "F:\Eigene_Dateien\Datenbank\Musik\musik.mdb",,,MdbPID
Sleep 2000
Process, WaitClose,%MdbPID%
; Aktionen nach schließen der  Datenbank
Ich weiß immer noch nicht ob Du es schon wie drüber ohne 99999999 probiert hast?
Mit der 99999999 scheint der Befehl nicht wie in der Hilfe beschrieben zu funktionieren.

Re: Script pausieren/fortsetzen

by flyingDman » 02 Jul 2022, 12:33

Re: Script pausieren/fortsetzen

by Boss55 » 02 Jul 2022, 12:29

Hallo,
RunWait
hatten wir schon,hat nicht funktioniert. Brauch einen Befehl, mit dem man den Wert aus mdbPID an Waitclose übergeben kann.

bye

Re: Script pausieren/fortsetzen

by BoBo » 02 Jul 2022, 11:41

Re: Script pausieren/fortsetzen

by Boss55 » 02 Jul 2022, 10:27

Hallo,

der alte Mann gibt doch noch keine Ruhe (klarer Fall von Altersstarsinn) :mrgreen: :mrgreen:

Habe jetzt diesen Code zusammengeschludert

Code: Select all

run "D:\Programme (x86)\Microsoft Office\Office12\MSACCESS.EXE" F:\Eigene_Dateien\Datenbank\Musik\musik.mdb,,,MdbPID
MsgBox %A_LineNumber%	%MdbPID%
Process, WaitClose,%MdbPID%, 99999999
send !t
Send #{Esc}
der auch so lange funktioniert, bis ich die Zeile mit der MsgBox lösche, weil unerwünscht und muss immer mit ok bestätigt werden.
Dann endet das Script beim Schliessen der Datenbank.

Welchen Befehl kann ich da ersatzweise verwenden, ohne das ich da eingreifen muss, denn sonst scheint es, als würde waitClose die PID nicht mitbekommen.

Oder lieg ich da völlig daneben ?

bye

Re: Script pausieren/fortsetzen

by Gerdi » 30 Jun 2022, 15:34

Das Problem mit wwc könnte auch seim das ich keine exe starte sondern eine Datei.
diese Vermutung hatte ich auch beim warten auf Prozessende, aber bei

Code: Select all

MsgBox %A_LineNumber%
run "C:\temp\9.txt",,,MdbPID
; run notepad.exe "C:\temp\9.txt",,,MdbPID
MsgBox %A_LineNumber%	%MdbPID%
Process, WaitClose,%MdbPID%
MsgBox %A_LineNumber%
funktioniert das warten auf schließen von Notepad. Egal ob ich den Text direkt starte oder über Notepad.exe

@alle
es hatte allerdings nicht verlässlich funktioniert mit

Code: Select all

Process, WaitClose,%MdbPID%,99999999
wofür ich keine Erklärung habe.

Re: Script pausieren/fortsetzen

by Boss55 » 30 Jun 2022, 10:57

Hallo,

und nochmals vielen Dank für deine Ausdauer. Habe versucht mit Winwaitclose was zu reißen, hat aber auch nicht funktioniert, vielleicht bin ich auch einfach nur zu blöd.

Das Problem mit wwc könnte auch seim das ich keine exe starte sondern eine Datei.
Die Msg-Box hat die 4 zurückgegeben, Tippfehler meinerseits.
However, habe das jetzt mit einer Batch gelöst, funktioniert nicht ganz wie gewünscht, muss per Tastendruck eingreifen, erfüllt aber seinen Zweck.
Werde das einfach so lassen, habe keinen Bock mehr, weiter rumzufrickeln, bringt nur Frust.

Dir nochmals vielen Dank für deine Geduld und die Mühe die du investiert hast.

bye

Re: Script pausieren/fortsetzen

by Gerdi » 28 Jun 2022, 16:44

Die DB wird nicht über ALT+F4, sondern in Access über eine Schaltfläche mit hinterlegtem Script geschlossen
was schließt sich, wenn die Schaltfläche betätigt wird?
Wenn das ein Fenster ist, kann man mit WinWaitClose weiterkommen. Aufs Prozessende warten hatten wir oben schon probiert, wobei hier noch anzumerken wäre, dass die Ausgabe der letzten MsgBox 5 statt 4 hätte lauten müssen. Es sei denn, statt Parameter 3 der 4. Zeile, wurde die ganze 4. Zeile gelöscht.

Re: Script pausieren/fortsetzen

by Boss55 » 28 Jun 2022, 11:21

Ballo !
Du brauchst irgend ein Schließ-Ereignis auf das Du reagieren kannst
Sorry, versteh ich nicht, nicht meine Welt, ich geb´s auf.

bye

Re: Script pausieren/fortsetzen

by Gerdi » 28 Jun 2022, 09:09

Im Taskmanager läuft Access als Dienst weiter mit der PID 15548.
Du brauchst irgend ein Schließ-Ereignis auf das Du reagieren kannst!

Re: Script pausieren/fortsetzen

by BoBo » 28 Jun 2022, 08:28

@BoBo
Spar dir doch dein gemotze, keiner zwingt dich dazu, hier zu antworten.
Dies war keine Antwort auf deine Frage, sonder ein konstruktiver Hinweis darauf, deine Supporter mit der Bereitstellung (d)eines Codes zu unterstützen.
Das ist in diesem Forum gängige, und bewährte Praxis. Zudem verbleibt es mir dich auf die Foren-Regeln bzgl. deines konfrontativen "Tonfalls" zu verweisen.
Happy scripting 8-)

Re: Script pausieren/fortsetzen

by Boss55 » 28 Jun 2022, 07:51

Hallo !
@BoBo
Spar dir doch dein gemotze, keiner zwingt dich dazu, hier zu antworten.

@Gerdi
Erst mal many thx für deine Gedul und deine Mühe.
Das Script bringt
Msgbox 1
DB startet
Msdbox 3 und Msgbox 4

Im Taskmanager läuft Access als Dienst weiter mit der PID 15548.

Hilft dir das irgendwie weiter.

bye

Re: Script pausieren/fortsetzen

by Gerdi » 28 Jun 2022, 05:59

lass Parameter 3 mit den vielen 9en weg

Top