AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hook für openOffice

Ein Thema von Schwedenbitter · begonnen am 25. Mai 2011 · letzter Beitrag vom 31. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Hook für openOffice

  Alt 25. Mai 2011, 13:45
Hallo,

ein Problem lässt mich seit ewigen Zeiten nicht in Ruhe (nur auszugsweise: 2009/1, 2009/2, 2010). Im Grunde geht es immer um ein und dieselbe Sache, wo ich mit diversen Ansätzen immer noch nicht weiter bin:

Ich habe eine Server-Client-Anwendung. Der Server sagt dem Client, welche Dateien (vornehmlich openOffice) er öffnen soll. Weiter ist ein langsames VPN gegeben.
Mein Ziel ist es nachwievor, dass mein Programm die Datein vom Server auf den lokalen Rechner kopiert, was relativ schnell geht. Dass mein Programm diese openOffice öffnen lässt und nach dem Bearbeiten/Speichern wieder an Ort und Stelle zurückschreibt. Mein Problem war und ist insoweit festzustellen, ob openOffice fertig ist. Ich habe bereits mit Threads experimentiert und festgestellt, dass openOffice allein beim Laden die Datei mehrfach locked und wieder freigibt. Und über das Fensterhandle komme ich auch nicht weiter, weil openOffice als MDI konzipiert ist.

Ich habe nie so recht verstanden was hooken eigentlich bedeutet, bis ich heute nun mal im web nachgelesen habe. Das wiederum bringt mich auf die Idee, die Dateisystemfunktionen zu hooken und so festzustellen, ob/wann openOffice eine Datei öffnet, schreibt etc., um evtl. so meine "Aufgabe" endlich sicher zu lösen.
Ich habe nämlich zusätzlich das Problem, dass openOffice bzw. dessen DDEServer regelmäßig abstürzt und meine bisherigen Ansätze damit stest Probleme hatten...

Hat jemand damit - insbesondere mit openOffice - schon Erfahrungen gemacht?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Elexarie

Registriert seit: 7. Apr 2011
32 Beiträge
 
#2

AW: Hook für openOffice

  Alt 25. Mai 2011, 14:18
Das Thema "Hook" - "Injecting" etc. ist wirklich schön, aber bedarf einer Menge vorarbeit. Debugging, Disassembly etc. pp.

Du musst das fertige Programm auseinander nehmen. IDA Pro Advance und OllyDbg kann ich dir empfehlen.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Hook für openOffice

  Alt 25. Mai 2011, 15:29
Hi Alex,

ich weiß nicht inwieweit es dich weiter bringt, aber OpenOffice erstellt doch beim öffnen einer Datei im Dateisystem eine Lock-Datei. Wäre es nicht eine Möglichkeit, darauf zu "warten", dass diese wieder gelöscht wird - was üblicherweise der Fall ist, wenn das Dokument geschlossen wird.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
sHoXx
(Gast)

n/a Beiträge
 
#4

AW: Hook für openOffice

  Alt 25. Mai 2011, 15:39
so wie ich das verstanden hab soll gewartet werden, bis openoffice die datei fertig geladen hat, sonst könnte man auch einfach schauen ob der prozess beendet wurde.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hook für openOffice

  Alt 25. Mai 2011, 15:49
Tut OpenOffice nicht eine API bereitstellen?
Über diese API könnte man ein Plugin in OO einschleußen, welches einem die nötigen Infos mitteilt, indem es auf die entsprechenden Ereignisse (Datei öffnen/speichern/schließen und eventuell noch OO beenden) reagiert und diese weiterleitet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Hook für openOffice

  Alt 25. Mai 2011, 18:11
Danke für Eure Antworten!

... aber OpenOffice erstellt doch beim öffnen einer Datei im Dateisystem eine Lock-Datei. Wäre es nicht eine Möglichkeit, darauf zu "warten", dass diese wieder gelöscht wird - was üblicherweise der Fall ist, wenn das Dokument geschlossen wird.
Die Datei hatte ich bemerkt; wohl mir fehlte die Idee, auch daraus einen Ansatz zu machen. Hört sich gut an und ich werde es mal ausprobieren.
Tut OpenOffice nicht eine API bereitstellen?
Auch das scheint ein Ansatz zu sein. Da muss ich mich mal belesen. Es wäre zu schön, wenn man es damit machen könnte...

Der Programmablauf nur nochmal zur Erklärung:
Delphi-Quellcode:
1. Benutzer möchte Datei laden.
2. Server -> Client (hinter lahmem VPN!) lade Datei!
3. Client = kopiert Datei ins Temp-Verzeichnis
4. Client = lässt OOO-Datei öffnen
5. Client = wartet, bis Datei wieder geschlossen wurde //<- hier habe ich die meisten Probleme
6. Client = kopiert/verschiebt Datei wieder zurück auf den Server (hinter dem VPN)
Das Problem sind die abartig langen Wartezeiten, wenn OOO eine Datei übers VPN laden muss. Auch wenn die nur 20 KB groß ist und das VPN einen Durchsatz in beide Richtungen von 100 KB/S (bereits netto) schaffte mit Ping-Zeiten um die 25 ms, dauert das Laden teilweise bis zu 1 min Und dann bricht manchmal auch die Verbindung ab -> defekte lock-Datei, nicht aktuelle Datei ...
Deshalb der ganze Aufwand, um den Flaschenhals VPN zu entschärfen!

Ich hatte es bereits über Prozesse, Prozess-ID, testen ob die Datei exklusiv zu öffnen geht etc. probiert. Aber so wirklich sicher klappte das nie.
Das mit der Lock-Datei liegt sowas von auf der Hand, dass mir das nie aufgefallen ist (Wald vor lauter Bäumen und so).

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Hook für openOffice

  Alt 25. Mai 2011, 22:39
Nun:
Mal ein Einwurf.
Wie wäre es wenn du einfach wartest bis OpenOffice nicht mehr als Prozess vorhanden ist?
Unter Linux nutze ich folgendes Script dafür:
Code:
#!/bin/sh
SERVICE='soffice.bin'
#start service:
soffice $@
#wait for close:
while ps ax | grep -v grep | grep $SERVICE > /dev/null
do
  sleep 1
done
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Hook für openOffice

  Alt 25. Mai 2011, 23:50
Nun:
Mal ein Einwurf.
Wie wäre es wenn du einfach wartest bis OpenOffice nicht mehr als Prozess vorhanden ist?
So einfach ist es dann leider nicht.
Ich hatte auch das schon probiert. Das Problem ist aber, dass die Benutzer mehrere Dateien öffnen können sollen/müssen. Zumindest unter Windows ist es so, dass im Schnitt für jede Datei je ein Prozess für soffice.exe und soffice.bin existieren. Mag sein, dass ich mich irre, aber es ist ja auch schon spät. Ich nutze auch Linux, ob dies dort auch so ist mit den Prozessen, weiß ich aber nicht.
Wie soll ich wissen, welcher Prozess meine Datei(en) geöffnet hält?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
sHoXx
(Gast)

n/a Beiträge
 
#9

AW: Hook für openOffice

  Alt 26. Mai 2011, 15:49
anhand der PID, ich hab letztens ne funktion gemacht, die dir den prozess startet und die pid zurückgibt, und ne funktion die angibt, ob der prozess noch läuft oder beendet wurde. wenn du willst kann ich dir die zukommen lassen, aber erst nächste woche da ich gleich feierabend mach und morgen schule hab
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Hook für openOffice

  Alt 26. Mai 2011, 18:52
anhand der PID, ich hab letztens ne funktion gemacht, die dir den prozess startet und die pid zurückgibt, und ne funktion die angibt, ob der prozess noch läuft oder beendet wurde. wenn du willst kann ich dir die zukommen lassen, aber erst nächste woche da ich gleich feierabend mach und morgen schule hab
Das wäre sehr nett!
Ich meine aber, dass ich das schon einmal probiert hatte. Soweit ich mich erinnern kann, gabe es aber das Problem, dass openOffice zwar mehrere Dateien geöffnet hatte, es aber letztlich nur eine PID (Heißt das unter Windows auch so?) gab.
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz