Windows-Foto-Anzeige nutzen [Erledigt]
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Windows-Foto-Anzeige nutzen [Erledigt]
Hi,
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
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.
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen
Am einfachsten ist es das Standardprogramm festzulegen, aber wenn das nicht geht, müsste die EXE per Runshell funktionieren.
Kennst du die EXE dieses Windows-Photoviewers ?
Kennst du die EXE dieses Windows-Photoviewers ?
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Re: Windows-Foto-Anzeige nutzen
Hallo Hubert,
der Photoviewer wird über die Rundll32.exe gestartet.
RunShell("PhotoViewer.dll ,ImageView_Edit +cFile","Rundll32.exe",.T.,.T.)
liefert z.B. den Fehler:
Problem beim Starten von PhotoViewer.dll
Das angegebene Modul wurde nicht gefunden.
der Photoviewer wird über die Rundll32.exe gestartet.
RunShell("PhotoViewer.dll ,ImageView_Edit +cFile","Rundll32.exe",.T.,.T.)
liefert z.B. den Fehler:
Problem beim Starten von PhotoViewer.dll
Das angegebene Modul wurde nicht gefunden.
Zuletzt geändert von Gerd König am Do, 17. Dez 2015 12:54, insgesamt 1-mal geändert.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1934
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen
Hallo Gerd
ich nutze ShellExecute - damit kannst du jede Art von Anzeige starten- ob PDF jpg, png
In diesem fall eine PDF
ich nutze ShellExecute - damit kannst du jede Art von Anzeige starten- ob PDF jpg, png
Code: Alles auswählen
#include "Common.ch"
#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Inkey.ch"
#include "dll.ch"
#DEFINE SW_HIDE 0
#DEFINE SW_SHOWNORMAL 1
#DEFINE SW_NORMAL 1
#DEFINE SW_SHOWMINIMIZED 2
#DEFINE SW_SHOWMAXIMIZED 3
#DEFINE SW_MAXIMIZE 3
#DEFINE SW_SHOWNOACTIVATE 4
#DEFINE SW_SHOW 5
#DEFINE SW_MINIMIZE 6
#DEFINE SW_SHOWMINNOACTIVE 7
#DEFINE SW_SHOWNA 8
#DEFINE SW_RESTORE 9
#DEFINE SW_SHOWDEFAULT 10
FUNCTION ShellExecute( hWnd,cOperation,cFile,cParameters,cDir,nShowCmd )
LOCAL hDLL
LOCAL nResult
DEFAULT cOperation TO "open"
DEFAULT cParameters TO ""
DEFAULT cDir TO SubStr(cFile,1,RAT("\",cFile)-1)
DEFAULT nShowCmd TO SW_SHOW
hDLL := DLLLoad("Shell32.DLL")
IF hDll > 0
nResult := DLLCall( hDll,DLL_STDCALL,"ShellExecuteA",hWnd,@cOperation,@cFile,@cParameters,@cDir,nShowCmd )
DllUnload(hDll)
ELSE
nResult := -1
ENDIF
RETURN( nResult )
Code: Alles auswählen
cVerz:=CurDrive()+":\"+CurDir()
cFile:="inventurbeschreibung.pdf"
ShellExecute(Nil,"open",cFile,Nil,cVerz)
- Jan
- Marvin
- Beiträge: 14689
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 89 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen
Rolf,
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.
Jan
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.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Re: Windows-Foto-Anzeige nutzen
DIe Aufrufe
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...
Gerd
Code: Alles auswählen
i:=RunShell('"C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen "'+cFile,"Rundll32.exe",.T.,.F.)
i:=RunShell('"%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll, ImageView_Fullscreen "'+cFile,"Rundll32.exe",.T.,.F.)
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
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: Windows-Foto-Anzeige nutzen
Servus Gerd,
zeig sie halt selber in einem xbPStatic an, ist doch trivial?
zeig sie halt selber in einem xbPStatic an, ist doch trivial?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen
Gerd König hat geschrieben:Code: Alles auswählen
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).
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Re: Windows-Foto-Anzeige nutzen
Vielen Dank für die Hinweise, folgender Code funktioniert:
Gerd
Code: Alles auswählen
i:=RunShell("C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen "+cFile,"Rundll32.exe",.T.,.F.)
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Jetzt sehe ich es auch ... ( Blanks zwischen ' und " zur Verdeutlichung eingefügt.)
wurde als Parameter zu ...
dein neuer Vorschlag wird übersetzt nach
was auf jeden Fall geht, solange cFile keine Blanks enthält. Eventuell auch mit Blanks, ich weiß es nicht. Ansonsten so versuchen ...
möglicherweise auch so (ich kenn die Syntax von dem Viewer nicht):
Code: Alles auswählen
i := RunShell ( ' "C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen " '+cFile ,"Rundll32.exe",.T.,.F.)
Code: Alles auswählen
"C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen "MeinDateiname.PNG
Code: Alles auswählen
C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen MeinDateiname.PNG
Code: Alles auswählen
i := RunShell ( chr(34) + 'C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen ' + cFile + chr(34) ,"Rundll32.exe",.T.,.F.)
Code: Alles auswählen
i := RunShell ( 'C:\WINDOWS\System32\shimgvw.dll, ImageView_Fullscreen ' + chr(34) + cFile + chr(34) ,"Rundll32.exe",.T.,.F.)
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Auch mit Blanks im Dateinamen funktioniert die Anzeige.
Gerd
Gerd
- Klaus Schuster
- Foren-Administrator
- Beiträge: 376
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 9 Mal
Re: Windows-Foto-Anzeige nutzen
Helfe mir auf die Sprünge, Werner: Wie trivial ist es ein JPG/PDF etc innerhalb eines XbpStatic anzuzeigen? Zum Beispiel mit MuPDF.Werner_Bayern hat geschrieben: ↑Do, 17. Dez 2015 14:15 Servus Gerd,
zeig sie halt selber in einem xbPStatic an, ist doch trivial?
Gruß Klaus
- azzo
- 1000 working lines a day
- Beiträge: 505
- Registriert: So, 28. Mär 2010 19:21
- Danksagung erhalten: 14 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Hallo Gerd,
hast du ChatGPT schon gefragt?
LG
Otto
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.
hast du ChatGPT schon gefragt?
LG
Otto
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.
- azzo
- 1000 working lines a day
- Beiträge: 505
- Registriert: So, 28. Mär 2010 19:21
- Danksagung erhalten: 14 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Noch ein Nachtrag
Ich denke, es ist wichtig, dass wir Harbour/Clipper/xBase/etc. Fragen an ChatGPT stellen.
ChatGPT lernt!
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
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: Windows-Foto-Anzeige nutzen
Servus Klaus,Klaus Schuster hat geschrieben: ↑Do, 16. Nov 2023 9:10Helfe mir auf die Sprünge, Werner: Wie trivial ist es ein JPG/PDF etc innerhalb eines XbpStatic anzuzeigen? Zum Beispiel mit MuPDF.Werner_Bayern hat geschrieben: ↑Do, 17. Dez 2015 14:15 Servus Gerd,
zeig sie halt selber in einem xbPStatic an, ist doch trivial?
da ging es um die Aufgabe:
Du willst PDF anzeigen? Oder Bilder aus PDFs extrahieren und anzeigen?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.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 376
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 9 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
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?
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?
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Servus Klaus,
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):
Damit wartest nicht stur eine fixe Zeit.
PS: Ist das nicht Diebstahl, was Du da machst?
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):
Code: Alles auswählen
starteDatei(cProgramm)
oXbp := hinweis(cProgramm + " wird gestartet, bitte warten...")
nStartSekunden := seconds() + WARTEZEITPROGSTART
DO WHILE seconds() < nStartSekunden .AND. nProgHandle == 0
sleep(50) // 1/2 Sekunde warten
nProgHandle := WindowsFensteroffen(cProgramm)
ENDDO
oXbp:destroy()
PS: Ist das nicht Diebstahl, was Du da machst?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 376
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 9 Mal
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Du klaust dem PDF-Viewers seinen Parent und schiebst ihm einfach einen anderen unter
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 376
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 9 Mal
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Nur mal so am Rande bemerkt:
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.
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.
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: Windows-Foto-Anzeige nutzen [Erledigt]
Korrekt Tom,
aber Klaus hat auch das Viewer2-Runtime Problem. Jetzt hat er ja eine brauchbare Lösung im entsprechenden Thread.
aber Klaus hat auch das Viewer2-Runtime Problem. Jetzt hat er ja eine brauchbare Lösung im entsprechenden Thread.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: Windows-Foto-Anzeige nutzen [Erledigt]
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.
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.
Herzlich,
Tom
Tom