Fokus auf ActivexObjekt setzen [Erledigt]

Nutzung, Komponenten, .NET

Moderator: Moderatoren

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Fokus auf ActivexObjekt setzen [Erledigt]

Beitrag von stevie »

mit oWord := CreateObject("Word.Application")
mache ich ja meine Word-Instanz auf.
Wie kann ich denn nun den Fokus darauf setzen?
Bei SetAppFocus(oWord) kommt immer die Meldung "Objekt nicht angemeldet".
Zuletzt geändert von stevie am Mo, 02. Feb 2009 8:34, insgesamt 1-mal geändert.
Viele Grüße
Stevie
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hi,

durch Aufruf von oWord:visible := .t. wird Word ja angezeigt und in den Vordergrund geholt.
Hat es da nicht automatisch dann den Focus ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hi,

nein offensichtlich nicht ... im Beispielprogramm \samples\activec\msword
kann ich dein Problem nachvollziehen, aber wenn man vor oDoc:close() das Programm abbricht ohne Word und das Dokument zu beenden, dann ist Word frei und man kann darin schreiben.

Auch wenn man einfach in Word clicked, solange das eigene Programm z.B. mit WAIT oder der Eventloop wartet, kann man dort einfach weiter schreiben. Im Forum API meine ich war mal was erwähnt worden dass man mit FindWindow oder GetWindow ein Programm nach Titel suchen und nach vorne bringen kann. Ich seh mal ob ich den Link finde ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hi,

ich habe nur dies gefunden:

http://www.xbaseforum.de/viewtopic.php? ... findwindow

hier wird ziemlich weit unten gezeigt, wie man ein anderes Programmfenster ansprechen kann, aber leider weiß ich nicht,
ob dies auch für den Eingabefocus nutzbar ist.

Die USER32.DLL kennt die Funktionen SetFocus(nHwnd) -> LONG vielleicht hilft es ja ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Tom »

Ich habe kein Problem damit, den Fokus (mit SetAppFocus()) auf Komponenten zu setzen, aber Word ist - wenn man es per Active-X ansteuert, nach meiner Auffassung keine Komponente. Tatsächlich öffnet sich ein Applikationsfenster. Deshalb müssten hier m.E. auch andere Hilfsmittel her, um den Fokus zu setzen. "oWord" ist nicht das Objekt, das die gesamte Word-Applikation repräsentiert - sondern nur ein Teil davon!
Herzlich,
Tom
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

also mit meiner Eventloop bleib ich solange im Programm, bis Word geschlossen ist.
Sicher sobald man das Word-Fenster angeklickt hat, kann man auch reinschreiben,
aber besser wärs ja wenns gleich den Fokus hat.
Viele Grüße
Stevie
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Koverhage »

Hi,

ich habe noch nie das Problem gehabt, wenn ich Word innerhalb der Applikation aufrufe hat Word auch den Focus.

Code: Alles auswählen

  // Erzeugen einer ActiveX-Komponente
  oWord := CreateObject("Word.Application")
  IF Empty( oWord )
    MsgBox( mess1 )
    Return .f.
  ENDIF
  oWord := oWord:dynamicCast(ActiveXObject())
  oWord:Quit := {||lWordFinished := .T.}
  oWord:Visible := .T.
  lWordFinished := .F.

  // Oeffnen eines Word-Dokuments und Zugriff auf
  // eine Sammlung von Lesezeichen
  oWord:documents:open( cFile )
  oDoc := oWord:ActiveDocument
  oBM  := oDoc:Bookmarks
Gruß
Klaus
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

Koverhage hat geschrieben:Hi,

ich habe noch nie das Problem gehabt, wenn ich Word innerhalb der Applikation aufrufe hat Word auch den Focus.

Code: Alles auswählen

  // Erzeugen einer ActiveX-Komponente
  oWord := CreateObject("Word.Application")
  IF Empty( oWord )
    MsgBox( mess1 )
    Return .f.
  ENDIF
  oWord := oWord:dynamicCast(ActiveXObject())
  oWord:Quit := {||lWordFinished := .T.}
  oWord:Visible := .T.
  lWordFinished := .F.

  // Oeffnen eines Word-Dokuments und Zugriff auf
  // eine Sammlung von Lesezeichen
  oWord:documents:open( cFile )
  oDoc := oWord:ActiveDocument
  oBM  := oDoc:Bookmarks
Dann hast du bestimmt keine Eventschleife, die das Programm solange anhält, bis lWordFinished .T. ist,oder?
Ich habe danach meine ganzen Einfügeoperationen und eine einfache Do While

Code: Alles auswählen

Do While !lWordFinished
     AppEvent( @mp1, @mp2, @oXbp )
Enddo
nach der dann die Objekte zerstört und das Programm die Datei prüfen und in der Db sichern kann.
Viele Grüße
Stevie
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hi,

Code: Alles auswählen

oWord := oWord:dynamicCast(ActiveXObject())
diese Zeile könnte einen Unterschied im Verhalten bewirken, da ja Word nun Events an Xbase++ weitergeben kann ...

Eine ganz andere Frage ist, warum man zwischen den Xbase++Einfügeoperationen mit manuellen Eingaben den Wordtext ändern soll. Dabei kann doch eigentlich nichts sinnvolles herauskommen oder ?
Ich hatte es so verstanden, dass du ein Word als Editor mit einem vorgefertigten Dokument zur Weiterbearbeitung öffnen willst ... wobei hier eine RunShell() mit asyncroner Ausführung bestimmt einfacher wäre ;-)

Nach dem Ende des Programmes hat bei mir Word immer den Focus.
Eventuell sollte man den Wordstart in einen eigenen Thread legen und sehen was passiert wenn dieser geschlossen wird.

Was mir zu TOMs Anmerkung einfällt, oWord ist kein Fenster sondern nur der "COM-Kanal" (eine Art von offener Verbindung zum Datenaustausch) oder ? Aber in der Word-Basic Hilfe fand ich auch keine Methode wie man der Application oder (besser ?) dem Dokument den Focus verleihen kann.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Koverhage »

Stevie,

doch die Eventschleife habe ich, aber die sieht bei mir so aus:


Do WHILE !lWordFinished
// Just wait
nEvent := AppEvent( @mp1, @mp2, , 1)
EndDo
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Koverhage »

Hubert,

die Antwort verstehe ich nicht so ganz.
Also wenn ich z.B. einen Brief an einen Kunden schicken möchte, wähle ich erst den Kunden aus und dann den entsprechenden
Brief (Vorlage). Dort werden dann die Bookmarks mit den Daten ersetzt, z.B. Anschrift, Anrede, etc.
Der Brief wird dann wenn gewünscht angezeigt, damit man vielleicht noch ein P.S. hinzufügen kann, oder......
Das klappt wie gesagt sehr gut auch mit dem Focus habe ich keinen Probleme.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hallo Klaus,

ich meinte nicht deinen Beitrag - so wie du das schilderst ist das natürlich sehr sinnvoll ...

sondern stevie hatte geschrieben (oder habe ich das nur falsch verstanden) dass er in einer Schleife mehrere Dokumente öffnet, automatisch mit Text bestückt und der Anwender den Focus haben soll ... und dabei fragte ich mich wie das gehen soll ... allerdings aus eigener netativ Erfahrung mit Excel, bei dem ich erst sichtbar eingefügt habe und sich dann die Fehler häuften bis ich mitbekam, dass die Anwender "mal schnell was nachsehen wollten" ... das Einfügen ging über die Zwischenablage :shock: und kam natürlich dann wo anders an :D

Die Zeile die ich von dir zitiert hatte, könnte damit zu tun haben, dass bei DIR das Editieren funktioniert und bei ihm nicht ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Tom »

SetAppFocus() kann nur den Fokus auf ein XbasePart oder ein Fenster der Applikation setzen. Um einer anderen Applikation den Fokus zu erteilen, sind andere Mechanismen nötig. Wenn im Programm, das Word via AX aufruft, sonst nichts geschieht, sollte Word den Fokus haben - jedenfalls ist es bei mir so. Aber es geht hier nicht um den Fokus innerhalb einer Applikation. Nicht umsonst lautet der Code: oWord := CreateObject("Word.Application")
Herzlich,
Tom
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

Koverhage hat geschrieben:Hubert,

die Antwort verstehe ich nicht so ganz.
Also wenn ich z.B. einen Brief an einen Kunden schicken möchte, wähle ich erst den Kunden aus und dann den entsprechenden
Brief (Vorlage). Dort werden dann die Bookmarks mit den Daten ersetzt, z.B. Anschrift, Anrede, etc.
Der Brief wird dann wenn gewünscht angezeigt, damit man vielleicht noch ein P.S. hinzufügen kann, oder......
Das klappt wie gesagt sehr gut auch mit dem Focus habe ich keinen Probleme.
Genau darum gehts.

Code: Alles auswählen

                  oWord := CreateObject("Word.Application")
                  IF Empty( oWord )
                     MsgBox( "Microsoft Word ist nicht installiert" )
                     lok:=.F.
                     return lok
                  ENDIF
                  oWord:= oWord:dynamicCast(ActiveXObject())
                  // Zuweisen eines Codeblocks, der bei Ende von Word ausgeführt wird
                  oWord:Quit:={|| lCloseW:=.T.}
                  // Sicherstellen, dass
                  // die Word-Anwendung sichtbar ist.
                  // Öffnen eines Word-Dokuments und Zugriff auf
                  // eine Sammlung von Lesezeichen
                  oWord:documents:Add( cVorl )  // neues Dokument mit Vorlage erstellen
                  oDoc := oWord:ActiveDocument
                  oBM  := oDoc:Bookmarks
                  oWord:visible := .T.

                  // jetzt die Bookmarks ersetzen

                  // Datei schonmal unter dem richten Dateinamen abspeichern
                  oDoc:saveas(cDatei)
 
                  // Warten, bis Word geschlossen wurde
                  Do While !lCloseW
                     AppEvent( @mp1, @mp2, @oXbp )
                  Enddo
                  oBm:destroy()
                  oDoc:destroy()
                  oWord:destroy()
danach wird überprüft, ob die Datei ordnungsgemäß gespeichert wurde und das Dokument in der Datenbank hinterlegt.
Die Reihenfolge resultiert aus der Tatsache, dass sonst auch Dokumente eingetragen werden würden, bei deren Erstellung ein Fehler aufgetreten ist.
Word ist damit zwar im Vordergrund, aber mein Programm ist das aktive Fenster und Word halt nicht fokussiert.
Viele Grüße
Stevie
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Koverhage »

Stevie,

wenn das Dein richtiger Code ist, kann das auch so nicht funktionieren. Ich hoffe ich blamiere mich jetzt mit der Antwort nicht.

Wenn ich das richtig verstehe:
Du machst zwar 3 mal einen destroy, das bedeutet Xbase++ zerstört die Objekte und gibst sie frei, aber das hat erstmal mit Word nichts zu tun.
Woher soll Word dann wissen das es beendet wurde ?
Folgendes ist denke ich mal richtig (so mache ich es )

oDoc:close()
sleep(0)
oWord:Quit()
sleep(0)
oWord:destroy()
sleep(0)
Gruß
Klaus
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

Koverhage hat geschrieben:Stevie,

wenn das Dein richtiger Code ist, kann das auch so nicht funktionieren. Ich hoffe ich blamiere mich jetzt mit der Antwort nicht.

Wenn ich das richtig verstehe:
Du machst zwar 3 mal einen destroy, das bedeutet Xbase++ zerstört die Objekte und gibst sie frei, aber das hat erstmal mit Word nichts zu tun.
Woher soll Word dann wissen das es beendet wurde ?
Folgendes ist denke ich mal richtig (so mache ich es )

oDoc:close()
sleep(0)
oWord:Quit()
sleep(0)
oWord:destroy()
sleep(0)
Ja nee, em da oben steht ein oWord quit, dort wird lCloseW auf .T. gesetzt. Quit wird ausgelöst, sobald der Anwender mit der Bearbeitung fertig ist und Word mit einem Klick aufs Kreuz beendet. Deshalb bleibt das Programm solange in der Do while bis lClosew .T. ist und Word geschlossen wurde. Dann werden die Resourccen freigegeben.
Viele Grüße
Stevie
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

Koverhage hat geschrieben:Stevie,

doch die Eventschleife habe ich, aber die sieht bei mir so aus:


Do WHILE !lWordFinished
// Just wait
nEvent := AppEvent( @mp1, @mp2, , 1)
EndDo
hab die mal genau so übernommen, ist auch nich anders, das Fenster ist nicht aktiv.
Viele Grüße
Stevie
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von brandelh »

Hallo Stevie,

offensichtlich hatte ich dich falsch verstanden.
Wenn du das Gleiche wie Klaus machen möchtest und den gleichen Code verwendest, sollte das Ergebnis auch gleich sein :?
Allerdings ist es sehr leicht in Windows den Focus zu verlieren, hast du ein MODALES Fenster oder eine MSGBOX() im Aufruf und der aktuelle Prozess übernimmt wieder den Focus. Das ist ja auch das Hauptproblem beim Debuggen, fast jede Aktion ändert den normalen Ablauf.
stevie hat geschrieben:
Koverhage hat geschrieben:Stevie,

doch die Eventschleife habe ich, aber die sieht bei mir so aus:
Do WHILE !lWordFinished
// Just wait
nEvent := AppEvent( @mp1, @mp2, , 1)
EndDo
hab die mal genau so übernommen, ist auch nich anders, das Fenster ist nicht aktiv.
Der Unterschied von deiner Eventloop zu der von Klaus liegt darin, dass diese hier alle 1/100 Sekunden feststellen kann ob lWordFinished erfüllt ist. In Deiner alten erfolgt diese Prüfung immer erst nach einem Event. Da die Events bei Windows ja "aus allen Ecken kommen..." mag das tatsächlich kein Problem sein, aber es könnte eines werden.

Bei dem Testprogramm von Alaska habe ich bemerkt, dass der Cursor in Word erst zur Eingabe freigegeben wird, wenn die Ersetzungen durch sind. Könnte es sein, dass du mehr und längere sleep() Aufrufe einbauen musst, da du mehr Text übergibst ?
Gruß
Hubert
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

brandelh hat geschrieben:Hallo Stevie,

offensichtlich hatte ich dich falsch verstanden.
Wenn du das Gleiche wie Klaus machen möchtest und den gleichen Code verwendest, sollte das Ergebnis auch gleich sein :?
Allerdings ist es sehr leicht in Windows den Focus zu verlieren, hast du ein MODALES Fenster oder eine MSGBOX() im Aufruf und der aktuelle Prozess übernimmt wieder den Focus. Das ist ja auch das Hauptproblem beim Debuggen, fast jede Aktion ändert den normalen Ablauf.
habe auch schon alles endmodalisiert und ohne Texteinfügung gestart, gleiches Phänomen.
brandelh hat geschrieben:
stevie hat geschrieben:
Koverhage hat geschrieben:Stevie,

doch die Eventschleife habe ich, aber die sieht bei mir so aus:
Do WHILE !lWordFinished
// Just wait
nEvent := AppEvent( @mp1, @mp2, , 1)
EndDo
hab die mal genau so übernommen, ist auch nich anders, das Fenster ist nicht aktiv.
Der Unterschied von deiner Eventloop zu der von Klaus liegt darin, dass diese hier alle 1/100 Sekunden feststellen kann ob lWordFinished erfüllt ist. In Deiner alten erfolgt diese Prüfung immer erst nach einem Event. Da die Events bei Windows ja "aus allen Ecken kommen..." mag das tatsächlich kein Problem sein, aber es könnte eines werden.

Bei dem Testprogramm von Alaska habe ich bemerkt, dass der Cursor in Word erst zur Eingabe freigegeben wird, wenn die Ersetzungen durch sind. Könnte es sein, dass du mehr und längere sleep() Aufrufe einbauen musst, da du mehr Text übergibst ?
das wusste ich nicht, aber wie gesagt, auch ohne Text gleiche Sache
Viele Grüße
Stevie
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

hab jetzt mit der neuen Eventloop, mit entmodalisierten Fenstern und ohne Texteintragung, also nur abspeichern gestartet und visible:=.T. erst vor der Eventloop bzw. vor dem speichern mit sleep vorher und nachher versucht, das Fenster übrigens Word 2000 wird trotzdem nicht aktiv.
sogar ohne Eventloop einfach nur über nen Button gestartet, halt bis zu dem Punkt, wo visible:=.T. steht und dann nur noch saveas, aber auch nich anders
Viele Grüße
Stevie
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

jetz wirds echt verrückt, ich habe bei Excel haargenau den gleichen Code benutzt und da wird Excel aktiv. Word auch nicht, wenn ich den Ursprungscode von Excel benutze.
Viele Grüße
Stevie
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Fokus auf ActivexObjekt setzen

Beitrag von Lewi »

Hallo Steve,
schau die nachfolgenden Codeerweiterungen an. Damit dürfte Word den Focus bekommen:

Code: Alles auswählen

oWord := CreateObject("Word.Application")
IF Empty( oWord )
   MsgBox( "Microsoft Word ist nicht installiert" )
   lok:=.F.
   return lok
ENDIF
oWord:= oWord:dynamicCast(ActiveXObject())
oWord:Quit:={|| lCloseW:=.T.}
oWord:documents:Add( cVorl )  // neues Dokument mit Vorlage erstellen
oDoc := oWord:ActiveDocument
oBM  := oDoc:Bookmarks
oWord:visible := .T.
*------ hier die Anweisungen für den Focus 
oWord:WindowState := 1  // enspricht: wdWindowStateMaximize
oWord:Activate()
oDoc:Activate() 
*-------------------------------------------------------

oDoc:saveas(cDatei)
Do While !lCloseW
   AppEvent( @mp1, @mp2, @oXbp )
Enddo
oBm:destroy()
oDoc:destroy()
oWord:destroy()
Gruß, Olaf
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von Koverhage »

Dann muss es an Word 2000 liegen.
Versuche mal ist allerdings VB Code
und zwar nach visble

/*
// Word in den Vordergrund bringen
Word.Application.Activate();
*/
Gruß
Klaus
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen

Beitrag von stevie »

Koverhage hat geschrieben:Dann muss es an Word 2000 liegen.
Versuche mal ist allerdings VB Code
und zwar nach visble

/*
// Word in den Vordergrund bringen
Word.Application.Activate();
*/

Code: Alles auswählen

    oWord:WindowState := 1  // enspricht: wdWindowStateMaximize
    oWord:Activate()
so klappt es dann

Vielen Dank an alle

@Koverhage: Übrigens mit Activex kann man alle Methoden von VB benutzen, z. B. hier ist oWord schon mal das Word.Application und da activate eine Vb-Methode von oWord ist, kann man sie nach Xbase-Standard aufrufen, also oWord:Activate. Wusste nur nicht, dass es diese gibt.
Viele Grüße
Stevie
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Fokus auf ActivexObjekt setzen [Erledigt]

Beitrag von Koverhage »

Stevie,

das ist klar mit VB. Wenigstens hat es geholfen.
Gruß
Klaus
Antworten