[geschlossen] Libreoffice per Makro aus AOO beenden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Libreoffice per Makro aus AOO beenden

Beitrag von balu »

Mahlzeit Faol,

was Du da vor hast wird wahrscheinlich nicht so einfach gehen wie Du dir es erhoffst.

Ich hatte im Mai 2012 mal den Wunsch gehabt, auf die Dateien von einem anderen Office drauf zuzugreifen. Genauer gesagtt, zwischen LO und OO.o (wäre heute AOO). Um es kurz zu machen, es ging damals nicht. Und da sich LO Makro-Technisch sich doch schon mittlerweile stellenweise von AOO weiter entfernt hat, glaube ich auch kaum daran das es heute funktionieren könnte.

Theoretisch müsstest du aus AOO heraus eine DOS-Box aufrufen in der Du in einer kleinen Batch-Datei LO per Kill-Befehl gnadenlos beendest. Ist aber nur so ein Gedankenexperiment meinerseits.

Auch wenn es schon sehr lange her ist, hier mal der Link zu dem Thread:
ComponentWalker: OOo & LO gleichzeitig Dateien auslesen
Vielleicht kannst Du ja da ein paar Informationen für dich herausziehen. Schau dir dazu auch den von Stephan verlinkten Thread mal etwas genauer an.

Über eine Erfolgsmeldung deinerseits würden sich natürlich so einige freuen, inklusive mich. Auch wenn ich mich mit dem Thema seit dem nicht mehr wirklich auseinandersetzen musste.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Libreoffice per Makro aus AOO beenden

Beitrag von Stephan »

Du kannst nicht ohne 'Verrenkungen' eines der beiden Programme vom Anderen aus mit Bordmitteln beenden weil die Prozess-Namen gleich sind und Du per StarBasic nicht an die Prozess-IDs herankommst.

AutoIT hatte ich in dem anderen Projekt eingesetzt, weil es etwas mehr Möglichkeiten (insbesondere Dialoge) bietet als der Windows Scripting Host (WSH) und weil mir da auch etwas 'Reserve' für Erweiterungen lieb war, denn die primäre Aufgabe wäre auch ohne die Möglichkeit von Dialogen mit Msgboxen lösbar gewesen.
Leider kann LO derzeitig auch nicht einmal mit dem WSH umgeheben, siehe:
viewtopic.php?f=18&t=69372
und meine Fehlermeldung:
https://bugs.documentfoundation.org/sho ... ?id=117739


Falls ich richtig verstehe das Batch zulässig ist, würde ich eine Batch hinterlegen, oder per Basic-Makro zur Laufzeit erstellen, die ALLE Prozesse soffice.exe beendet (mit taskkill https://www.softwareok.de/?seite=faq-Wi ... sole&faq=8) und dann selektiv LO und AOO separat startet, aber dabei ein hinterlegtes Makro mitstartet (das lässt sich als Parameter für soffice übergeben, es gibt Beispiele von mir hier im Forum), welches das jeweilige Benutzerverzeichnis ermittelt und diese Info in eine Textdatei schreibt, danach wieder alle soffice-Prozesse zumacht und letztendlich nun LO ODER AOO startet und beide Benutzerverzeichnisse aus der Textdatei ausliest und dann diese Info nutzt um die weiteren Aufgaben zu erledigen.
Ob das alles so läuft, muss man sehen.



Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [geschlossen] Libreoffice per Makro aus AOO beenden

Beitrag von Stephan »

Es ist mir klar, das Starbasic nicht unmittlebar über diese Funktionen verfügt.
Darum geht es mir garnicht.
Allerdings ist es möglich auf die Windows-API
von AOO oder LO zu zugreifen.
Damit kenne ich mich nicht aus, weswegern ich den WSH bevorzuge
Damit wäre es sicherlich auch möglich die PID, HWND (Windows-Handler), etc. zu erfassen.
WIE denn?

Meiner Meinung nach ist es nicht möglich bei zwei LAUFENDEN Prozessen deren Namen exakt gleich sind (=soffice) herauszukriegen Welcher Welcher ist.
Wohlgemerkt, selbst wenn ich eine beliebige Programmiersprache dazu nutzen darf, wüsste ich nicht wie ich das anstelle.

Das es 'irgendwie' doch gehen muss ist mir schon klar, denn der Taskmanager ist ja in der Lage von der jeweiligen Anwendung zum richtigen Prozess zuzuordnen, aber ich habe bisher noch nie einen Code gesehen (egal in welcher Programmiersprache) wie ich an diese Info komme. Alle Lösungen die ich kenne, gehen immer davon das das beide Programme bereits per Code kontrolliert gestartet werden müssen, weil man dann ja bei Start des ersten soffice-Prozesses die erste PID abfragen kann und weiß das nach Start des zweiten soffice-Prozesses die dann zweite PID zu eben jenem zweiten Prozesss gehört.
Mein Ziel ist es nun, quasi alles (oder fast alles) unter einen Hut zupacken und nahezu zentral Aufgaben zum Thema Benutzer-Ordner über eine GUI (mit Optionen) zu automatisieren.
Ja eben. Und dazu gabst Du zwei Infos: 'es soll kein AutoIT sein' und 'ich habe Erfahrungen mit Batchlösungen' und da ich nicht mehr als diese Infos hatte habe ich eine Lösung mit Batch vorgschlagen. Diese LÖsung musst Diu nicht mögen, nur was für Antworten erwartest Du bei den gegebenen Infos?

Wenn Du jetzt schreibst Du hättest nun begonnen das in C# zu machen ist das technisch prima, nur woher sollte ich denn bisher wissen das eine Lösung in C# überhaupt infrage kommt?
(ich meine nicht technisch, sondern meine für Dich, weil Du bereit wärest C# als Sprache benutzen zu wollen)
Falls Du hingegen von Anfang an eine Empfehlung für eine bestimmte Programmiersprache zur Problemlösung wolltest, so kann ich nur sagen das ich die Frage so nicht verstanden hatte.



Gruß
Stephan
Antworten