Deutsch
Forum

Ist gestartetes Programm noch aktiv

 

Thomas
Freier
Im Moment bin ich mit meiner Lösung nicht glücklich, da sie nicht absulut hinhaut.
Ich starte eine Office Anwendung, und wenn die beendet ist, soll ein PDF-Reader starten.
KompilierenMarkierenSeparieren
WinExecWait(Prog$,1)
geift nicht. Jedenfalls bei mir mit Portable OpenOffice 2.2
Es wird sofort der PDF-Reader gestartet.
Alternativ frage ich, ob die mit Ooo geöffnete Datei zur weiteren Bearbeitung geöffnet werden kann.
KompilierenMarkierenSeparieren
Prog$ = Ooo_Pfad$+" "+text$
@WinExecWait(Prog$,1)

If GetCheck(odt_pdf&)

    Sleep 10000
    Assign #1,Translate$(text$,"\","\\")

    while 1

        sleep 100
        Append #1
        case %IoResult=0 :BREAK

    wend

    Close #1
    text$=PDF_Pfad$+SubStr$(L_Seite$,1,".")+".pdf"
    ......

EndIf


Aber selbst das "Sleep 10000" reicht manchmal nicht, bis Ooo sich eingerichtet hat und auf die Datei zugreift. Ins Besondere, wenn alles auf einem USB-Stick läuft.

Gibt es eine eine elegantere Lösung?
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.11.2010  
 



Schau mal zu WinExec:
Hilfe
Seit Version 11 liefert die Funktion die Prozeß-ID des gestarteten Programmes zurück, wie es im Taskmanager angezeigt wird. Im Fehlerfall ist es der Wert 0. Bei früheren Versionen war der Wert im Erfolgsfall ohne Bedeutung.


Dann mal schauen was GetExitCode(ProzessID) zurückliefert - vlt. hilft das schon.

Speziell von OpenOffice weiß ich aber das dies mit den Prozessen selbst schon herumspielt - also manch Prozess nur andere startet oder benachrichtigt und sich selbst aber dann gleich wieder beendet - hier bleibt dann vlt. nur eine an OO angepasste Lösung wie z.B. FensterFinden etc. .
 
20.11.2010  
 




Paul
Glatz
Starte mal beim Portable nicht die normale exe sondern die unter APP
 
20.11.2010  
 




Thomas
Freier
@Paul, das habe ich schon getestet und hat keinen Einfluß bei: "@WinExecWait(Prog$,1)"
@iF, mit:
KompilierenMarkierenSeparieren
Prog$ = Ooo_Pfad$+" "+text$
x&=WinExec(Prog$,1)

while GetExitCode(x&)=256

    sleep 100

wend

Prog$ = XCVIEW_Pfad$+" "+text$
WinExecWait(Prog$,1)

brachte nichts. Möglich, dass 256 nicht richtig ist.

Nachtrag: hat jemand Erfahrung beim Umbennen von odt-Dateien mit XProfan?
KompilierenMarkierenSeparieren
LOESCH_SEITE(ODT_Pfad$,L_Seite$,R_Seite$,".odt")
....

Proc LOESCH_SEITE

    Parameters a$,b$,c$,d$
    Assign #3, a$+b$+d$
    Rename #3, a$+c$+d$
    Close #3

EndProc

führt immer dazu, dass Ooo eine "beschädigte" Datei wiederherstellen will.
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.11.2010  
 



@Thomas: Ja, habs vermutet - OO nutzt manch Prozess nur um einen anderen zu benachrichtigen. Ich wüsste jetzt nur noch mal mit AddWindows/ FindWindow zu schauen ob man es daran irgendwie "festmachen" kann.
 
20.11.2010  
 




Thomas
Freier
@iF: das mit FindWindow vermute ich, wenn ich das nicht schon als erstes getestet hatte, endet wie mit dem Test, die an Ooo übergebene Datei zu öffnen. D.h. der Fenstertitel ist erst komplett vorhanden, wenn die Datei geöffnet wurde. Also n-Zeit warten bis der Fenstertitel abfragbar ist.
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.11.2010  
 



>> Also n-Zeit warten bis der Fenstertitel abfragbar ist.

Oder einfach "warten bis der Fenstertitel abfragbar ist" also while not fenster da warten...
 
21.11.2010  
 



Vlt. hilft Dir auch eine Prozesse-Liste: [...] 
 
21.11.2010  
 




Thomas
Freier
Also das Beispiel habe ich einmal getestet mit
KompilierenMarkierenSeparieren
x&=WinExec(Prog$,1)

und dann versucht x& zu finden mit
KompilierenMarkierenSeparieren
case Str$(x&)=Str$(Entry#.th32ProcessID&)

und nicht gefunden. Mach ich da einen Fehler? Ist PID nicht die Prozeß-ID?
Eingentlich habe ich alle Beispiele aus der babybox.exe durch.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



Genau, PID ist die Prozess-ID - wenn der Prozess aber bereits beendet ist dann wird er auch nicht mehr in der Liste stehen.

Drum meinte ich ja: "also manch Prozess nur andere startet oder benachrichtigt und sich selbst aber dann gleich wieder beendet"...

Vielleicht aber nutzt es Dir eine Liste aller Prozesse nach Openoffice-Prozessen zu durchsuchen um zu schauen ob überhaupt noch eins aktiv ist oder nicht.
 
21.11.2010  
 




Thomas
Freier
Ich werde noch einmal den Weg über

Oder einfach "warten bis der Fenstertitel abfragbar ist" also while not fenster da warten...

und dann, wenn gefunden mit zweiter Schleife while not fenster =weiter, versuchen.
Muß dann aber den möglichen Fensternamen der Anwendungs.exe, da frei wählbar und die Basis immer die soffice.exe ist, für StarOffice (Fenster = 02-27.odt - StarOffice 8) und bei OpenOfice (Fenster = 02-27.odt - OpenOffice.org Writer) festlegen.

Ach, könnte man diesen Office-Hackern doch Scribus näher bringen. Da kann man eine PDF und eine PNG von dem Dokument erstellen.


39 kB
Hochgeladen:21.11.2010
Ladeanzahl277
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.789 Betrachtungen

Unbenanntvor 0 min.
AndreasS06.01.2019
rquindt05.12.2015
Uwe Lang03.09.2014
Peter Max Müller12.12.2011
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (5x)
Thomas Freier (5x)
Paul Glatz (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie