[vb6] documenten aanroepen vanuit project

Pagina: 1
Acties:

  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
Ik ben een programma aan het schrijven in VB6 die moet dienen als een soort "schil" om alllerlei verschillende .pdf bestanden heen. Dit programma moet eigenlijk een GUI worden zodat de gebruiker makkelijker .pdf files kan vinden maar ze ook moet kunnen openen. Nou heb ik dus deze code gebruikt om een .pdf file te laten openen in een Adobe Reader.

code:
1
ShellExecute hWnd, "open", filenaam.pdf, vbNullString, vbNullString, conSwNormal

Wat gebeurt er? Er word netjes een Adobe Reader gestart en daarin word de betreffende PDF geopend. Dit is nou ook de bedoeling. So far so good toch?

Maar ik zat me dus af te vragen of dit wel de juiste manier is van het openen van .pdf bestanden. Want ik kwam ergens in de search van GOT tegen dat ShellExecute eigenlijk er alleen maar is om executables te openen cq starten. Is er een andere manier om .pdf files te openen door Adobe Reader maar dan niet met ShellExecute? Ik heb al gezocht op GOT, Google, vbcode.com en de help functie van VB6 maar het enige wat ik vind zijn berichten over hoe je PDF bestanden kan aanmaken met VB6 maar daar heb ik niets aan want de .pdf files heb ik al. Het gaat mij erom dat ik zeker weet dat ik op een juiste manier die .pdf files kan aanroepen zodat andere mensen die later gebruik gaan maken van dit programma er geen problemen mee krijgen.

[ Voor 3% gewijzigd door Qui-Gon Jinn op 26-01-2006 11:26 ]


  • Lethalis
  • Registratie: April 2002
  • Niet online
Zolang de pdf extensie naar Acrobat Reader verwijst in Windows is er niks aan de hand.

Lijkt me prima verder..

Ask yourself if you are happy and then you cease to be.


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 13-04 15:53

Tukk

De α-man met het ẞ-brein

Bestaat er een echt juiste manier?

Je kan ook Adobe Acrobat als Active X object aanspreken, zoals IE dat doet.
Dan heb je wat meer mogelijke heden dan alleen opstarten van een PDF, dat kan handig zijn voor feature enhancements.

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Of je gebruikt de webControl. Daar kan je alles mee opstarten (met .navigate) wat normaal ook in binnen IE kan.

Linkje

[ Voor 23% gewijzigd door PaulZ op 26-01-2006 11:38 ]

Vlinders moet je volgen, niet vangen...


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 04-04 19:20
Misschien het gewone Shell ?

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07:30

sopsop

[v] [;,,;] [v]

Grote probleem met deze manier van aanroepen is, is dat je geen garantie hebt dat je de PDF opent met Acrobat Reader. Als iemand een ander soortig programma heeft gekoppeld aan bestandstype PDF, dan wordt dat programma opgestart.

Verder zou je kunnen achterhalen waar acrobat reader staat en vervolgens via een commandline parameter het document doorgeven. Ook via ShellExecute.

  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
met gewone Shell krijg ik een foutmelding die zegt "Wrong number of arguments or invalid property assignment".

Maar net wat boppert zegt. Wie garandeert mij dat die .pdf files daadwerkelijk met Adobe Reader geopend gaan worden. Daar moet ik dus nog iets op verzinnen denk ik.

Mischien dat ik een check kan inbouwen die checkt of er uberhaupt een versie van Adobe Reader geinstalleerd staat. Is dit niet het geval dat het programma dan aangeeft dat de documenten niet eerder te openen zijn dan dat Adobe Reader geinstalleerd is. En als het wel geinstalleerd staat dan moet ik het voor elkaar zien te krijgen dat ook daadwerkelijk Adobe Reader gebruikt word om die .pdf files weer te geven.

[ Voor 44% gewijzigd door Qui-Gon Jinn op 26-01-2006 11:46 ]


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 14-04 14:42

ThunderNet

Flits!

Qui-Gon Jinn schreef op donderdag 26 januari 2006 @ 11:42:
met gewone Shell krijg ik een foutmelding die zegt "Wrong number of arguments or invalid property assignment".

Maar net wat boppert zegt. Wie garandeert mij dat die .pdf files daadwerkelijk met Adobe Reader geopend gaan worden. Daar moet ik dus nog iets op verzinnen denk ik.
waarschijnlijk kun je dan een shellexecute uitvoeren op de acrobat reader executable, waaraan je een parameter meegeeft met het pfdje wat je wilt openen.

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
ThunderNet schreef op donderdag 26 januari 2006 @ 11:45:
[...]

waarschijnlijk kun je dan een shellexecute uitvoeren op de acrobat reader executable, waaraan je een parameter meegeeft met het pfdje wat je wilt openen.
ja dat is inderdaad ook een goed idee.. maar dan moet ik eerst het programma gaan vertellen dat het eerst moet gaan kijken of er een versie van de Acrobat Reader is geinstalleerd. Dat moet ik dus even uitzoeken.

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 13-04 15:53

Tukk

De α-man met het ẞ-brein

Qui-Gon Jinn schreef op donderdag 26 januari 2006 @ 11:42:
met gewone Shell krijg ik een foutmelding die zegt "Wrong number of arguments or invalid property assignment".

Maar net wat boppert zegt. Wie garandeert mij dat die .pdf files daadwerkelijk met Adobe Reader geopend gaan worden. Daar moet ik dus nog iets op verzinnen denk ik.

Mischien dat ik een check kan inbouwen die checkt of er uberhaupt een versie van Adobe Reader geinstalleerd staat. Is dit niet het geval dat het programma dan aangeeft dat de documenten niet eerder te openen zijn dan dat Adobe Reader geinstalleerd is. En als het wel geinstalleerd staat dan moet ik het voor elkaar zien te krijgen dat ook daadwerkelijk Adobe Reader gebruikt word om die .pdf files weer te geven.
Als dat wil, dan wordt het met behulp van ActiveX met behulp van late Binding Arcobat opstarten.
Kun je meteen controleren of het geinstalleerd is.

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
Tukk schreef op donderdag 26 januari 2006 @ 11:50:
[...]

Als dat wil, dan wordt het met behulp van ActiveX met behulp van late Binding Arcobat opstarten.
Kun je met een controleren of het geinstalleerd is.
Precies.. ik ga even kijken...

kwam net dit tegen in de help file van vb6. Ik had het dus toch niet helemaal goed doorgelezen.

"open" The function opens the file specified by the lpFile parameter. The file can be an executable file OR a document file. It can also be a folder.

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 13-04 15:53

Tukk

De α-man met het ẞ-brein

Mogelijk dat je Acrobat ook wat sneller kan krijgen met tooltjes als meuktracker: PDF SpeedUp 1.42
Test wel eerst wat je allemaal niet en wel uitzet bij jezelf, maar veel dingen zul je niet gebruiken.

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
Ik heb me ondertussen bij het e.e.a. neergelegd. Ik laat het programma voor wat het is. Ik heb dit programma ondertussen op meerdere systemen getest. Waaronder Win98SE, WinNT 4.0, Win2000 en WinXP en het draait perfect. Ik gebruik nog steeds de ShellExecute om die .pdf bestanden aan te roepen en ik heb bewust er niet voor gekozen om Adobe Reader aan te roepen als zijnde standaard programma voor het openen van de .pdf files. Want er zijn meerdere .pdf viewers beschikbaar die verschillende mensen gebruiken. En ik wil mensen niet opdringen om bepaalde programmatuur te gaan gebruiken.

Het enige wat ik nu nog wil gaan uitzoeken is of ik het voor elkaar kan krijgen om er zeker van te kunnen zijn dat mijn progsel ook op andere systemen draait. Zoals bijv. Mac of een distro van Linux.

Dus wat mij betreft mag dit topic dicht. :)

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07:30

sopsop

[v] [;,,;] [v]

Qui-Gon Jinn schreef op donderdag 26 januari 2006 @ 15:38:
mijn progsel ook op andere systemen draait. Zoals bijv. Mac of een distro van Linux.
Je VB6 progsel?! Dan kun je namelijk stoppen met zoeken. Dat werkt nevernooit niet.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 03:07

Gerco

Professional Newbie

Qui-Gon Jinn schreef op donderdag 26 januari 2006 @ 15:38:
En ik wil mensen niet opdringen om bepaalde programmatuur te gaan gebruiken.

Het enige wat ik nu nog wil gaan uitzoeken is of ik het voor elkaar kan krijgen om er zeker van te kunnen zijn dat mijn progsel ook op andere systemen draait. Zoals bijv. Mac of een distro van Linux.
Die twee uitspraken zijn een beetje met elkaar in conflict. Je programma is geschreven in VB6 en maakt gebruik van Win32 API functies, je dwingt hierdoor mensen om Windows te gebruiken. Bijgevolg zal je app dus ook nooit gaan werken in Linux, *BSD of MacOS X.

Als je een cross-platform app wilt maken, kun je kijken naar .NET (en dan specifiek de combinatie Mono/Gtk# of Mono/wx.net), Java (met Swing of SWT) of C++/Qt4. Een VB6/Win32 of .NET/WinForms applicatie zal nooit (goed) werken op andere platformen dan Windows*.

* Dat sluit natuurlijk niet uit dat het werkt, initiatieven als Wine en Mono/Winforms komen een aardig eind, maar daarop vertrouwen beschouw ik niet als cross platform programmeren. Eerder als een last-resort.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
boppert schreef op donderdag 26 januari 2006 @ 15:40:
[...]
Je VB6 progsel?! Dan kun je namelijk stoppen met zoeken. Dat werkt nevernooit niet.
Nee dat weet ik ook wel dat mijn huidige programma niet op een systeem anders dan windows zal gaan werken. Wat ik bedoelde was om m'n vb6 progsel opnieuw te gaan maken maar dan op een manier zodat het op meerdere besturingssystemen te draaien is. Zoals bijv. Java. Want daarvan weet ik dat het ook draait op Linux.

  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
Gerco schreef op donderdag 26 januari 2006 @ 15:44:
[...]

Die twee uitspraken zijn een beetje met elkaar in conflict. Je programma is geschreven in VB6 en maakt gebruik van Win32 API functies, je dwingt hierdoor mensen om Windows te gebruiken. Bijgevolg zal je app dus ook nooit gaan werken in Linux, *BSD of MacOS X.
Je hebt gelijk... maarrrrrrrr 90 procent van de mensen die van dit programma gebruik maken werken zelf met Windows als besturingsysteem. Die overige 10 procent krijgt op dit moment de documenten op een andere manier aangeleverd. Wat ik dus nu voorzichtig wil gaan uitzoeken is naar mogelijkheden (zoals bijv. Java) om er voor te zorgen dat niet 90 procent maar 100 procent van alle gebruikers ongeacht hun besturingssysteem gebruik kunnen maken van m'n programma. En ja ik ben me er dan van bewust dat ik het programma in z'n geheel opnieuw zal moeten gaan schrijven. :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 03:07

Gerco

Professional Newbie

Qui-Gon Jinn schreef op donderdag 26 januari 2006 @ 15:57:
Je hebt gelijk... maarrrrrrrr 90 procent van de mensen die van dit programma gebruik maken werken zelf met Windows als besturingsysteem.
Dat betwijfel ik ook helemaal niet, ik zeg alleen dat je huidige progsel mensen dwingt om Windows te gebruiken. Als dat geen probleem is omdat die mensen dat al doen, dan is er dus niets aan de hand :)
Wat ik dus nu voorzichtig wil gaan uitzoeken is naar mogelijkheden (zoals bijv. Java) om er voor te zorgen dat niet 90 procent maar 100 procent van alle gebruikers ongeacht hun besturingssysteem gebruik kunnen maken van m'n programma.
Lees in dat geval mijn vorige post nogeens door, waar een kleine greep uit de mogelijke technieken en programmeertalen gepresenteerd wordt. Kies er daar 1 van of zoek een ander alternatief (Python/Qt bijvoorbeeld) en ga aan de slag :)

Qt4 is overigens alleen gratis als je je programmas als GPL (Open Source) wilt uitbrengen, wil je dat niet, dan valt die af tenzij je een licentie van Trolltech wilt kopen. Indien je deze app alleen intern binnen je bedrijf wilt gebruiken, is dat niet van belang. Je hoeft de source alleen vrij te geven als je het programma gaat verspreiden (door het te verkopen of gratis weg te geven). Qt3 is voor Windows helemaal niet gratis verkrijgbaar voor zover ik weet. Wel jammer, aangezien het een verschrikkelijk mooie applicatie toolkit is en ik nog niet naar Qt4 heb kunnen kijken wegens tijdgebrek.

[ Voor 12% gewijzigd door Gerco op 26-01-2006 16:17 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Qui-Gon Jinn
  • Registratie: Januari 2003
  • Laatst online: 07-07-2025
Qt4 klinkt intressant... Wat betreft de source vrijgeven.... Ach het programmaatje is op zich alleen maar een GUI voor alle documenten die op de betreffende CD staan. En deze CD word inderdaad gratis weggegeven. Maar ik zal eens naar Qt4 gaan kijken.
Pagina: 1