Italia
Foro

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 File 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 File zugreift. Ins Besondere, wenn alles auf einem USB-Stick corre.

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



Schau mal zu WinExec:
Aiuto
Seit Version 11 liefert die Funktion die Prozeß-ID des gestarteten Programmi 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$,1pan>

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

Nachtrag: hat jemand Erfahrung beim Umbennen von odt-File 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" File 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 File zu öffnen. D.h. der Fenstertitel ist erst komplett vorhanden, wenn die File 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 circa

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, per StarOffice (Fenster = 02-27.odt - StarOffice 8) und bei OpenOfice (Fenster = 02-27.odt - OpenOffice.org Writer) festlegen.

Ach, potuto 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
Downloadcounter277
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.11.2010  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.760 Views

Untitledvor 0 min.
AndreasS06.01.2019
rquindt05.12.2015
Uwe Lang03.09.2014
Peter Max Müller12.12.2011
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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