ActiveX und Funktionstasten
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
ActiveX und Funktionstasten
Wie ja inzwischen allgemein bekannt ist steuere ich meine Programme über Funktionstasten, die auf Buttons gelegt sind. Also sind bestimmte Funktionen sowohl mit Klick auf den Button als auch über Auslösen der F2-F12-Tasten möglich.
Nun habe ich aber ein Problem: Ich lade als ActiveX den Adobe-Reader mit einer festgelegten Datei. Über mehrere Funktionstasten kann man den Dialog schließen oder die Anzeige der Seiten in dem Adobe Reader ändern (Zoom, 1 oder 2 Seiten, etc.). Aber hier funktioniert all das nur per Klick auf die Buttons. Die Funktionstasten sind deaktiviert. Ich vermute mal, daß daß der Reader die "klaut".
Hat jemand eine Ahnung, wie ich einem ActiveX-Element beibringen kann, das nicht zu tun?
Jan
Nun habe ich aber ein Problem: Ich lade als ActiveX den Adobe-Reader mit einer festgelegten Datei. Über mehrere Funktionstasten kann man den Dialog schließen oder die Anzeige der Seiten in dem Adobe Reader ändern (Zoom, 1 oder 2 Seiten, etc.). Aber hier funktioniert all das nur per Klick auf die Buttons. Die Funktionstasten sind deaktiviert. Ich vermute mal, daß daß der Reader die "klaut".
Hat jemand eine Ahnung, wie ich einem ActiveX-Element beibringen kann, das nicht zu tun?
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: ActiveX und Funktionstasten
hi,
von welcher Version PDF Reader reden wir ?
ich kann z.Z. das Alaska Demo mit meiner Version 6.x und der CLSID
"{CA8A9780-280D-11CF-A24D-444553540000}" nicht starten weil wohl
diese Kombination (jetzt nicht mehr) passt. Es könnte nach dem Upgrade
auf v8.x und "zurück" passiert sein das deshalb bei mir das Demo gar
nicht mehr mit der v331 funktioniert.
Application ?! ... wie sind die den mit dem aktiveX "verknüpft" ?
Bei den Buttons gehe ich mal von der Adobe "Toolbar" aus die du meinst ?
Wenn ja, dann liegt doch "hinter" jedem von den Buttons eine der 25
Methoden die es gibt (bei v6.x).
Bei dem "Zoom" Button müsste es die Methode :setZoom sein und die
Methode :setShowToolbar könnte dazu dienen die Toolbar ganz
verschwinden zu lassen.
Was es jedoch wohl nicht gibt sind Events wie :keypress oder so, ergo
gehe ich davon aus das er weder welche "sendet" noch "empfangen" kann.
Ich habe es übrigens "aufgegeben" den Reader in ein eigenen XbpDialog
einzuarbeiten den irgendwie sind die v5,v6,v7,v8 wohl unterschiedlich und
ab irgendeiner Version konnte man, so glaube ich, die Toolbar nicht mehr
abschalten.
Also nutze ich nun ganz trivial
weil das mit jeder Version zurecht kommt und der User die Optik ja dann
auch schon kennt.
von welcher Version PDF Reader reden wir ?
ich kann z.Z. das Alaska Demo mit meiner Version 6.x und der CLSID
"{CA8A9780-280D-11CF-A24D-444553540000}" nicht starten weil wohl
diese Kombination (jetzt nicht mehr) passt. Es könnte nach dem Upgrade
auf v8.x und "zurück" passiert sein das deshalb bei mir das Demo gar
nicht mehr mit der v331 funktioniert.
em ... äh ... wo/welche Buttons vom "wehm" ?Jan hat geschrieben: Aber hier funktioniert all das nur per Klick auf die Buttons.
mit den Funktionstasten meisten du sicherlich die in deinen Xbase++Jan hat geschrieben: Die Funktionstasten sind deaktiviert. Ich vermute mal, daß daß der Reader die "klaut".
Hat jemand eine Ahnung, wie ich einem ActiveX-Element beibringen kann, das nicht zu tun?
Application ?! ... wie sind die den mit dem aktiveX "verknüpft" ?
Bei den Buttons gehe ich mal von der Adobe "Toolbar" aus die du meinst ?
Wenn ja, dann liegt doch "hinter" jedem von den Buttons eine der 25
Methoden die es gibt (bei v6.x).
Bei dem "Zoom" Button müsste es die Methode :setZoom sein und die
Methode :setShowToolbar könnte dazu dienen die Toolbar ganz
verschwinden zu lassen.
Was es jedoch wohl nicht gibt sind Events wie :keypress oder so, ergo
gehe ich davon aus das er weder welche "sendet" noch "empfangen" kann.
Ich habe es übrigens "aufgegeben" den Reader in ein eigenen XbpDialog
einzuarbeiten den irgendwie sind die v5,v6,v7,v8 wohl unterschiedlich und
ab irgendeiner Version konnte man, so glaube ich, die Toolbar nicht mehr
abschalten.
Also nutze ich nun ganz trivial
Code: Alles auswählen
RunShell( "/C START EXPLORER.EXE DEMO.PDF" )
auch schon kennt.
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Hallo Jimmy,
Die Methoden vom Reader habe ich. Ich habe die komplette Dloku dadrüber runtergeladen. und dann einige dieser Funktionen auf "meine" Buttons und Funtkoinstasten gelegt. Nicht, weil ich die vom Reader nicht mag. Sondern damit das durch das gesamte Projekt immer einheitlich funktioniert.
Jan
Version 8.von welcher Version PDF Reader reden wir ?
Die Buttons meines Programmes. Kennst Du doch ... Abgesehen davon: Die Buttons selber funktionieren ja, nur die Funktionstasten nicht.em ... äh ... wo/welche Buttons vom "wehm" ?
Klar. Alle anderen interessieren mich nicht.mit den Funktionstasten meisten du sicherlich die in deinen Xbase++ Application ?!
Die Methoden vom Reader habe ich. Ich habe die komplette Dloku dadrüber runtergeladen. und dann einige dieser Funktionen auf "meine" Buttons und Funtkoinstasten gelegt. Nicht, weil ich die vom Reader nicht mag. Sondern damit das durch das gesamte Projekt immer einheitlich funktioniert.
Genau das möchte ich nicht. Der Reader soll eine meiner Tabpages belegen. Und nicht als externes Fenster laufen.Also nutze ich nun ganz trivial Code:
RunShell( "/C START EXPLORER.EXE DEMO.PDF" )
weil das mit jeder Version zurecht kommt und der User die Optik ja dann
auch schon kennt.
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
hi,
immer als Trojaner gemeldet wurde (NU-AV)
Funktionstaste selbst betätigst ?
dachte ich mir. Ich hatte Probleme mit der AcroIEFavClient.DLL derJan hat geschrieben:Version 8.von welcher Version PDF Reader reden wir ?
immer als Trojaner gemeldet wurde (NU-AV)
hm ... und an die kommst du nur mit "click" ran und nicht wenn du dieJan hat geschrieben: ... und dann einige dieser Funktionen auf "meine" Buttons und Funtkoinstasten gelegt. Nicht, weil ich die vom Reader nicht mag. Sondern damit das durch das gesamte Projekt immer einheitlich funktioniert.
Funktionstaste selbst betätigst ?
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
moin,
so ich habe meinen mit v6.x wieder zum laufen gebracht.
Er hatte in der Registry sowas mit "kurzem" Namen stehen :
Nun hab ich aber 2 "Probleme":
1.) Wenn der Acrobat Reader nicht schon vorher einmal geladen war
dauert es "ewig" bis er seine Plugins geladen hat.
2.) Auch wenn ich den Reader nun im Dialog habe, hat sich auch der v6.x
Reader "im Hintergrund" geöffnet was ich dann sehe wenn ich meine
Xbase++ Application minimiere. (oder paar mal F4 drücke ...)
noch etwas was mich "nervt" : oControl:SetShowToolBar( .F. ) sollte doch
wohl die Toolbar "ausschalten" was es aber nicht tut. Wenn man nun F8
drückt ...
so nun zu den Functionstasten : ja beim ersten mal muss ich den Button
anclicken und erst dann funktionieren die Functionstasten bis der Dialog
den Focus verliert ... das kenne ich doch irgendwie ...
das ActiveX hat ja seine eigene "interne Eventloop" die auf Tastendruck
wie z.B. F8 reagiert wenn er Focus hat. Somit bekommt der Xbase++
Dialog den Event gar nicht.
Nun kann man auf ein ActiveX auch ein :keyboard legen aber das hängt
nun auch wieder von den :controlFlags ab ob die es überhaupt zulassen.
ich bekomme nun 131473 für mein Sample zurück und auf den :keyboard
Slot scheint er gar nicht zu reagieren ...
...
intern sollte Xbase++ mit der Methode :keyDown()
...
wenn ich mich recht erinnere war da doch was ab Version xxx ? Das man
die Toolbar (und Werbung) nicht mehr "extern" abschalten konnte war
doch erst ab Version xxx (ich weiss nicht mehr welche) und ich glaube
das es mit ein Grund war warum ich mich dann nicht mehr mit dem
ActiveX beschäftigen wollte ... und die v8.x will ja ständig "nach Hause
telefonieren"
so ich habe meinen mit v6.x wieder zum laufen gebracht.
Er hatte in der Registry sowas mit "kurzem" Namen stehen :
was er wohl nicht mag ...C:\PROGRA~1\ADOBE\ACROBA~1.0\READER\ACTIVEX\PDF.OCX
Nun hab ich aber 2 "Probleme":
1.) Wenn der Acrobat Reader nicht schon vorher einmal geladen war
dauert es "ewig" bis er seine Plugins geladen hat.
2.) Auch wenn ich den Reader nun im Dialog habe, hat sich auch der v6.x
Reader "im Hintergrund" geöffnet was ich dann sehe wenn ich meine
Xbase++ Application minimiere. (oder paar mal F4 drücke ...)
noch etwas was mich "nervt" : oControl:SetShowToolBar( .F. ) sollte doch
wohl die Toolbar "ausschalten" was es aber nicht tut. Wenn man nun F8
drückt ...
so nun zu den Functionstasten : ja beim ersten mal muss ich den Button
anclicken und erst dann funktionieren die Functionstasten bis der Dialog
den Focus verliert ... das kenne ich doch irgendwie ...
das ActiveX hat ja seine eigene "interne Eventloop" die auf Tastendruck
wie z.B. F8 reagiert wenn er Focus hat. Somit bekommt der Xbase++
Dialog den Event gar nicht.
Nun kann man auf ein ActiveX auch ein :keyboard legen aber das hängt
nun auch wieder von den :controlFlags ab ob die es überhaupt zulassen.
ich bekomme nun 131473 für mein Sample zurück und auf den :keyboard
Slot scheint er gar nicht zu reagieren ...
...
intern sollte Xbase++ mit der Methode :keyDown()
... und das scheint hier nicht zu funktionieren.wenn der Benutzer eine Taste drückt während das ActiveX-Steuerelement den Eingabefokus besitzt. Die Standardbehandlungsmethode :keyDown() transformiert den numerisch Wert in Parameter <nKey> in einen der in APPEVENT.CH definierten Xbase++-Tastencodes und löst das Xbase++-Ereignis xbeP_Keyboard aus. Das Ereignis wird mittels der Funktion PostAppEvent() in die Ereigniswarteschlange (Event Queue) des aktuellen Threads gestellt.
...
wenn ich mich recht erinnere war da doch was ab Version xxx ? Das man
die Toolbar (und Werbung) nicht mehr "extern" abschalten konnte war
doch erst ab Version xxx (ich weiss nicht mehr welche) und ich glaube
das es mit ein Grund war warum ich mich dann nicht mehr mit dem
ActiveX beschäftigen wollte ... und die v8.x will ja ständig "nach Hause
telefonieren"
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Hallo Jimmy,
der Hinweis, daß ein ActiveX-Control einen eigenen Event-Loop hat, erklärt natürlich so einiges. Den würd ich gerne mal ausschalten oder wenigsten übersteuern können
Wenn Die der Adobe zu lahmarschig ist: Versuch mal den Foxit. Der ist richtig schnell. Hab ich bei mir auch schon mal eingebaut. Aber leider hat FoxitSoftware eine total besch... Lizenzpolitik. Sonst wäre ich längst darauf umgestiegen für mein Projekt.
Jan
der Hinweis, daß ein ActiveX-Control einen eigenen Event-Loop hat, erklärt natürlich so einiges. Den würd ich gerne mal ausschalten oder wenigsten übersteuern können
Wenn Die der Adobe zu lahmarschig ist: Versuch mal den Foxit. Der ist richtig schnell. Hab ich bei mir auch schon mal eingebaut. Aber leider hat FoxitSoftware eine total besch... Lizenzpolitik. Sonst wäre ich längst darauf umgestiegen für mein Projekt.
Jan
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Rolf,
ich kann Dir das gerne heute Abend geben, wenn ich wieder zu Hause bin.
Aber: Du wirst da vermutlich einiges für Dich anpassen müssen. Ich arbeite nämlich mit Dialogen, die jeweils ihren "eigenen" Thread haben. Und damit habe ich die Funktionstastensteuerung in den Eventloop des jeweiligen Threads eingebaut. Das wirst Du dann ein wenig modifizieren müssen. Oder auch ein wenig mehr.
Ansonsten ist das garnicht so wild. Da ich kein Klassenmensch bin habe ich mir da entsprechende Funktionen für gebaut, damit kann ich in jedem Dialog (die haben alle oben die Funktionstastenleiste F2 - F12) mit wenigen Zeilen eine individuelle Belegung einbauen. Ohne immer alles doppelt und dreifach zu schreiben.
Jan
ich kann Dir das gerne heute Abend geben, wenn ich wieder zu Hause bin.
Aber: Du wirst da vermutlich einiges für Dich anpassen müssen. Ich arbeite nämlich mit Dialogen, die jeweils ihren "eigenen" Thread haben. Und damit habe ich die Funktionstastensteuerung in den Eventloop des jeweiligen Threads eingebaut. Das wirst Du dann ein wenig modifizieren müssen. Oder auch ein wenig mehr.
Ansonsten ist das garnicht so wild. Da ich kein Klassenmensch bin habe ich mir da entsprechende Funktionen für gebaut, damit kann ich in jedem Dialog (die haben alle oben die Funktionstastenleiste F2 - F12) mit wenigen Zeilen eine individuelle Belegung einbauen. Ohne immer alles doppelt und dreifach zu schreiben.
Jan