ich experimentiere schon eine ganze Weile daran herum und habe noch keine Lösung gefunden:
Ich habe einen Ordner mit verschiedenen Dateien (vorwiegend PDFs, aber auch jpg-, bmp-, tif-Dateien)
PDFs öffne ich mit der Standardappliketion (Acrobat Reader)
Wenn ich die Standard-App auf Bilder anwende, startet immer ein Programm, mit dem ich auch die Bilder bearbeiten kann (z.B. Photoeditor).
Ich möchte aber einheitlich auf jedem PC im Netzwerk diese Bilder mit dem Windows-Photoviewer anzeigen und habe schon einiges mit RunShell() und Rundll32.exe ausprobiert.
Leider ohne Erfolg
Vielleicht hat einer von Euch bereits dieses Problm gelöst?
Schon mal im Voraus herzlichen Dank
Gerd
Zuletzt geändert von Gerd König am Do, 17. Dez 2015 14:44, insgesamt 2-mal geändert.
das hilft leider nicht. Denn damit wird die Datei mit dem konfigurierten Standardprogramm geöffnet. Aber genau das will Gerd nicht haben. Der will ein selber fest vorgegebenes Programm nutzen.
liefern zwar keinen Fehler, aber es wird auch nichts angezeigt.
Im I-Net habe ich jetzt den Hinweis gefunden, eine Batch-Datei aufzurufen und dieser die anzuzeigende Datei als Parameter zu übergeben.
...aber irgendwie ist das von hinten durch die Brust ins Auge...
i:=RunShell('"C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen "'+cFile,"Rundll32.exe",.T.,.F.)[/quote]
fehlt da nicht ein [b],[/b] nach [b]ImageView_Fullscreen[/b] ?
[quote="Gerd König"]
Im I-Net habe ich jetzt den Hinweis gefunden, eine Batch-Datei aufzurufen und dieser die anzuzeigende Datei als Parameter zu übergeben.
...aber irgendwie ist das von hinten durch die Brust ins Auge...
Gerd[/quote]
wie sieht denn die Batch aus ?
Man kann darin die Syntax sehen UND man kann solche ja auch dynamisch erzeugen und ausführen (so fällt es niemand auf).
Es scheint, als ob du eine Lösung suchst, um auf verschiedenen PCs in deinem Netzwerk Bilder standardmäßig mit dem Windows-Fotoviewer anzuzeigen, unabhängig von der aktuell eingestellten Standardanwendung. Eine Möglichkeit, dies zu erreichen, wäre die Verwendung eines Skripts oder einer Gruppenrichtlinie, die die Standardanwendung für Bildformate auf den Windows-Fotoviewer setzt.
Hier ist ein Ansatz, wie du dies mit einem Skript umsetzen könntest:
1. **Erstellen eines Registry-Skripts**: Du kannst ein Registry-Skript erstellen, das die Standardanwendung für Bildformate wie JPG, BMP, TIFF usw. auf den Windows-Fotoviewer setzt. Ein solches Skript könnte beispielsweise Einträge in der Windows-Registry ändern, um den Windows-Fotoviewer als Standardanwendung für diese Dateitypen festzulegen.
2. **Verteilung und Ausführung des Skripts**: Dieses Skript kann dann auf allen PCs im Netzwerk verteilt und ausgeführt werden. Du kannst das Skript manuell ausführen oder automatisiert über Gruppenrichtlinien oder ein Netzwerkverwaltungstool verteilen und ausführen lassen.
3. **Beachten von Betriebssystemversionen**: Es ist wichtig zu beachten, dass die Schritte oder Registry-Einträge je nach Version des Windows-Betriebssystems variieren können. Stelle sicher, dass das Skript mit den Versionen von Windows kompatibel ist, die in deinem Netzwerk verwendet werden.
4. **Testen**: Vor der breiten Implementierung ist es ratsam, das Skript auf einem einzelnen PC zu testen, um sicherzustellen, dass es wie erwartet funktioniert und keine unerwünschten Nebeneffekte hat.
5. **Backup der Registry**: Vor jeglichen Änderungen an der Registry ist es empfehlenswert, ein Backup zu erstellen, um eventuelle Probleme rückgängig machen zu können.
Beachte, dass das Ändern von Registry-Einstellungen Risiken birgt und sorgfältig durchgeführt werden sollte. Es ist auch wichtig, die IT-Richtlinien deiner Organisation zu beachten, bevor du Änderungen im Netzwerk vornimmst.
Ich denke, es ist wichtig, dass wir Harbour/Clipper/xBase/etc. Fragen an ChatGPT stellen.
ChatGPT lernt!
ZB bin ich der einzige Benutzer von Harbourino, aber ich erziele bereits einige gute Ergebnisse mit meinen Fragen an ChatGPT.
***
Dieser Ansatz, ermöglicht durch Harbourino, macht Ihren Code organisierter und leichter zu warten. Jede Funktion oder jedes Modul kann in separaten Dateien gehalten werden, was die Codebasis sauberer und modularer macht.
Harbourino scheint ein Preprozessor-Werkzeug zu sein, das in Verbindung mit mod_harbour und Fivewin verwendet wird, die beide mit der Programmiersprache Harbour in Verbindung stehen. Harbour ist ein Open-Source-Compiler für die xBase-Supersprache, die oft zur Erstellung von Datenbankanwendungen verwendet wird.
Verwendung in mod_harbour: Harbourino scheint eine bedeutende Rolle bei der Vereinfachung des Quellcodes für mod_harbour-Anwendungen zu spielen. Laut einem Beitrag eines Benutzers namens Otto im mod_harbour-Forum hilft Harbourino dabei, den Quellcode lesbarer und wartbarer zu machen. Dies wird durch seine Patcher- und Preprozessor-Fähigkeiten erreicht, die einen organisierteren und gestrafften Codierungsprozess ermöglichen. In mod_harbour-Anwendungen kann das Hauptprogramm mit Harbourino auf nur wenige Zeilen vereinfacht werden, was den Aufbau des Anwendungsframeworks erleichtert.
Anwendung in Fivewin: Harbourino ist nicht auf mod_harbour beschränkt; es wird auch in Fivewin-Umgebungen verwendet. Fivewin ist ein Werkzeug zur Erstellung grafischer Benutzeroberflächen für Harbour-Anwendungen. In diesem Kontext hilft Harbourino dabei, komplexe Funktionen in einfachere, handhabbarere Module aufzuteilen. Dieser modulare Ansatz ermöglicht laut den FiveTech Software Tech Support-Foren eine einfachere Verwaltung verschiedener Teile einer Anwendung, wie z.B. xBrowse. Durch das Patchen einzelner .prg-Dateien in eine einzige Datei verbessert Harbourino die Organisation und Handhabbarkeit des Codes.
Diese Erkenntnisse deuten darauf hin, dass Harbourino ein unschätzbares Werkzeug für Entwickler ist, die mit Harbour arbeiten, insbesondere bei der Entwicklung von Web- und GUI-Anwendungen. Es verbessert die Lesbarkeit, Wartbarkeit und Modularität des Codes, die für eine effiziente Softwareentwicklung entscheidend sind.
Zum Harbourino-Dokument:
Das Dokument über Harbourino bietet Einblicke in seine Funktionalität als Preprozessor. Wichtige Punkte umfassen:
Funktionalität: Harbourino ist ein Preprozessor, der die Entwicklung, Lesbarkeit und Modifikation von Code vereinfacht. Er nimmt eine Textdatei, die in einer bestimmten Programmiersprachensyntax geschrieben ist, und gibt eine andere Textdatei in der Syntax einer anderen Sprache aus.
Features: Es bietet Dateieinbindung, Substitutionsmöglichkeiten und bedingte Kompilierung.
Modularität: Harbourino ermöglicht das Aufteilen komplexer Funktionen oder Klassen in kleinere, handhabbare Dateien. Beispielsweise kann man für jede Methode einer Klasse eine separate Datei haben, was den Programmierbestpraktiken entspricht, wie etwa Funktionen auf einer einzigen gedruckten Seite zu halten.
Syntaxbeispiele:
$-> wird verwendet, um Include-Dateien zu verlinken und einfache Textersetzungen vorzunehmen.
Platzhalter wie |UNIQUEID| oder |Platzhalter| werden verwendet.
Befehle wie $-> Dateiname 9999: Platzhalter=xxxxxxxx; ermöglichen spezifische Dateioperationen.
Kommentare können in Include-Dateien mit |- gemacht werden und erscheinen nicht in der gepatchten Release-Datei.
Preprozessor in Absätzen: Es ermöglicht das Preprocessing innerhalb von Absätzen für eine sauberere Code-Struktur, wie in einem Beispiel mit HTML- und JavaScript-Code gezeigt.
Pfadverwaltung: Harbourino kann Pfade im Quellcode über Platzhalter und Einstellungen in einer INI-Datei verwalten.
Harbourino-Manager: Es wird erwähnt, dass alle Funktionen von Harbourino von einer Konsole aus verwaltet werden können.
Dieses Dokument bietet einen guten Überblick über die Fähigkeiten von Harbourino und betont seinen Nutzen, den Code handhabbarer und wartbarer zu machen, besonders für Anfänger oder weniger erfahrene Programmierer.
Werner_Bayern hat geschrieben: ↑Do, 17. Dez 2015 14:15
Servus Gerd,
zeig sie halt selber in einem xbPStatic an, ist doch trivial?
Helfe mir auf die Sprünge, Werner: Wie trivial ist es ein JPG/PDF etc innerhalb eines XbpStatic anzuzeigen? Zum Beispiel mit MuPDF.
Servus Klaus,
da ging es um die Aufgabe:
Ich möchte aber einheitlich auf jedem PC im Netzwerk diese Bilder mit dem Windows-Photoviewer anzeigen und habe schon einiges mit RunShell() und Rundll32.exe ausprobiert.
Du willst PDF anzeigen? Oder Bilder aus PDFs extrahieren und anzeigen?
Servus Werner, ja, genau. Ein PDF innerhalb einer XbpStatic-Groupbox anzeigen. Ich bin mittlerweile am Testen, ob ich mit der Win-Api und setParent in der User32.dll weiterkomme.
NACHTRAG: Mit
EXTERN LONG SetParent( hWndChild AS LONG, hWndNewParent AS LONG ) IN User32
klappt es. Mit der Funktion ListWindowTitles(), die Du vor geraumer Zeit im Forum eingestellt hast, kann ich ganz einfach das handle des PDF-Viewers ermitteln und in hWndChild übergeben. Der Wert in hWndNewParent stammt aus ::oGbHtmlDokument:GetHwnd(). Vielen Dank Werner für ListWindowTitles()! Unsicher bin ich noch, wie schnell ListWindowTitles() das handle einer kurz zuvor geöffneten Applikation ermittelt. Gefühlt, ist es nicht sofort sichtbar. Deshalb wartet das Programm eine Sekunde zwischem dem Aufruf von SumatraPDF und ListWindowTitles(). Vielleicht hast Du ja Erfahrungswerte?
das freut mich, dass Du da eine Lösung gefunden hast. Dürfte einzigartig sein, Respekt.
Ja, wenn Du den Viewer per shellexecute startest, hast nicht sofort einen Fenstertitel. Ich mache das in einer Schleife (Code geändert, ohne auf Syntax zu prüfen):
Wenn ich dem XbpHtmlViewer2 per Navigate-Methode den Namen einer PDF-Datei reiche, verhält er sich als PDF-Viewer. Und JPG, PNG usw. kann er ja sowieso. Oder XML.
Ich denke, das XbpHtmlViewer2-Runtime-Problem wird sich lösen, und dann hat man eine kompakte, steuerbare, schnell und ohne Zusatzaufwand verwendbare Komponente, die u.v.a.m. PDFs anzeigen (und drucken, speichern, skalieren - alles steuerbar!) kann. Die ich auch mit dem kleinen Hakeligkeitsproblem (das die PDF-Anzeige m.E. nicht betrifft) jederzeit diesem Parent-Rauben einer extern gestarteten Komponente mit Warteschleife und Dutzenden Eventualitäten vorziehen würde. Ganz persönlich. Was natürlich völlig unmaßgeblich ist.
Und ich wollte nur noch einmal darauf hingewiesen haben. Wer mit Foxit, VSPDF, Sumatra usw. hantiert und da irgendwie versucht, alle Widrigkeiten zu umschiffen - PDF-Viewing gibt's an Bord für lau.