Zum Inhalt springen

c# Systemweite Modifikation von Openfile und Savefile


Empfohlene Beiträge

Geschrieben

Hallo,

ein Kollege aus einem Videoforum hat mich auf dieses Forum aufmerksam gemacht.

Ich suche mir seit einigen Tagen (Wochen) einen Wolf für folgendes Problem:

Für eine unserer eigenen Anwendungen (web basierendes DMS-System) suchen wir eine Möglichkeit, die Daten aus beliebigen Windows Anwednungen möglichst einfach statt im Filesystem in unserem eigenen System zu speichern. Der Speichern Vorgang selber kann einfach über einen Web-Link gestartet werden. Für ein Senden an aus dem Explorer haben wir schon etwas geschrieben.

Den Vorgang würden wir aber gerne möglichst transparent in den normalen Öffnen und Speichern Dialogen unterbringen (entweder durch Erweitern der Dialogs oder durch Vorschalten einer eigenen Routine).

Nach vielen Recherchen denke ich, dass ein Systemweiter Hook hier die Lösung sein könnte. Wir sind auch soweit, dass die Message WM_Initdialog abgefangen wird.

Allerdings hängt es jetzt daran, dass z.B. nicht rausfinden können, wie wir auf weitere Informationen, wie z.B. die Anwendung, die den Dialog ausgelöst hat, zugreifen können.

Ich habe trotz ausführlicher Recherche im Internet zwar etliche Beispiele für Hooks bei Mouse- und Tastaturevents gefunden, nichts aber für die Dialoge.

Hat vielleicht irgendjemand einen Hinweis oder Tip, wo ich da noch weitere Infos finden könnte oder sogar Beispiele? Oder vielleicht einen Hinweis, wie wir die Anforderung anderweitig lösne könnten?

Ps: Ich denke, der Weg muss irgendwie gehen. Novell macht das bei Groupwise mit den verschiednenen Integrationen schon seit Jahren.

Beste Grüße

Thomas

Geschrieben
..

suchen wir eine Möglichkeit, die Daten aus beliebigen Windows Anwednungen möglichst einfach statt im Filesystem in unserem eigenen System zu speichern.

Ein Dateisystemtreiber wäre nicht sinnvoller? Ggf. FTP-Verbindung von Windows nutzen, o.ä.?

Man kann zwar die Dialoge mit Hooks aufbohren (Extend the Common Dialog Boxes Using Windows Forms 1.x), allerdings halte ich einen systemweiten Hook für eine nicht besonders elegante Möglichkeit.

Ps: Ich denke, der Weg muss irgendwie gehen. Novell macht das bei Groupwise mit den verschiednenen Integrationen schon seit Jahren.

Huh? GroupWise integriert sich AFAIK so richtig grade mal in MS Office..

Grüße

Ripper

Geschrieben

Sorry, dass ich so spät antowerte, aber seltsamerweise war mein Account plötzlich nicht mehr da und ich habe auch vom Admin keine Antwort erhalten.

Neuregsitrierung ging jetzt aber.

Ein Filesystemtreiber würde mir nicht ausreichen, da bei der Open und Save Aktion noch eigene Routinen gestartet werden müssen. Zusätzlich zu der eigentlichen Dateiübertragung müssen noch Metafelder besetzt werden, die teilweise nur aus der Benutzereingabe kommen können.

Die Beispiele für die Dialogboxen gehen meistens nur auf die Verwendung in eigenen Programmen ein. Also wäre ein systemweiter Hook die einzige Lösung. Und hier fehlen mir die Beispiele bzw. ich komme mit der verfügbaren Doku nicht weiter. Allerdings wage selber zu bezweifeln, ob viele Admins bereit wären, so eine Software zu installieren. Auf der anderen Seite machen Virenscanner ja eigentlich auch nichts anderes.

Die Aussage zu Groupwise stimmt. Allerdings scheinen die sich, wenn auch nur für Office, wirklich in die Dialoge einzuklinken und nicht mit irgendwelchen Makros oder ähnlichem zu arbeiten. Also zumindest ansatzweise das, was ich suche.

Gruß

Thomas

Geschrieben

Die Dialogbox liefert dem Programm nur Informationen über die dort getätigten Eingaben, das eigentliche Lesen und Schreiben der Daten ist von ihnen völlig unabhängig.

Wie stellst Du Dir vor, ohne individuelle Anpssung der einzelnen zu unterstützenden Programme, insbesondere nur durch Veränderungen am GUI, die zu speichernden Daten an anderer Stelle abzulegen und zusätzlich noch Metainformationen zu sammeln?

Geschrieben
Naja wenn man an den Dialog drankommt dann könnte man ja an dem dort ausgewähltem Speicherort nach der Datei suchen ´die das jeweilige Programm dann da ablegt und sie verschieben.

Dann müsste man die (neue) Datei über einen Service erstmal ständig überwachen lassen und später erst verschieben, aber auch dabei können Probleme auftreten. Was beispielsweise tun, wenn der Benutzer eine Datei speichert, danach mit seinem Programm weiter arbeitet und dann mittels Schnellspeichern (also ohne Datei-Dialog) seine Änderungen sichern will?

Ich halte diese Vorgehensweise (Dialoge abfangen und verändern) für problematisch.

Geschrieben

Der Ablauf ist folgender:

Wir haben einen Web-service, mit dem die Datei hochgeladen werden kann und gleich anschließend ein Fenster aufgeht, bei dem die Verschlagwortung eingegeben werden kann. Das funktioniert natürlich nur, wenn das Ganze aus einem Browserfenster gestartet wird.

Das ist für Anwendungen aber zu kompliziert. Heißt: Der Benutzer muss erst aus der Anwendung speichern, dann den Browser starten, Upload-Prozess auswählen, Datei suchen und publizieren.

Für Office-Anwendungen haben wir eine Erweiterung geschrieben, aber das ist nicht der Weisheit letzter Schluss, da MS dauern die Schnittstellen ändert.

Daher die Suche nach einer allgemeingültigen Lösung.

Am Besten wäre es, wenn man irgendwie in den Speichern-Dialog oder in die Anwednungen einen zusätzlichen Menüpunkt aufnehmen könnte der dann von mir aus die Datei erst einmal temporär speichert und dann unsrene eigenen Dialog starten kann.

Geschrieben

Um globale System-Hooks mit C# (.net CLR) zu setzen bedarf es einiger scharfer Tricks (Anbindung über unamanaged DLL). Näheres dazu findest du z.B. CodeProject: Global System Hooks in .NET. Free source code and programming help

Für Office-Anwendungen haben wir eine Erweiterung geschrieben, aber das ist nicht der Weisheit letzter Schluss, da MS dauern die Schnittstellen ändert.

Ob das mit so tiefgreifenden Hac^H^Hooks besser wird?

Am Besten wäre es, wenn man irgendwie in den Speichern-Dialog oder in die Anwednungen einen zusätzlichen Menüpunkt aufnehmen könnte der dann von mir aus die Datei erst einmal temporär speichert und dann unsrene eigenen Dialog starten kann.

Nochmal zum mitschreiben:

1. Der Savedialog selbst macht erstmal relativ wenig: Zielpfad und Dateiname abfragen, evtl. Prüfen ob die Datei schon existiert und noch sonstiges Kleinkram.

2. Du kannst da eigene Funktionen über einen global-system-hook einbauen..

Aber:

3. Das eigentliche Speichern macht das Programm NACH Aufruf des SaveFile-Dialogs ganz alleine..

Bringt dir das wirklich was?

Grüße

Ripper

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...