Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

In Microsoft Word eingreifen....

Firestormer / 5 Antworten / Baumansicht Nickles

HallO!

ch ätte eine äußerst wichtige Frage zu einem Projekt, das ich gerade leite!:

Ist es möglich, Windows-Programmen, z.B. dem Programm Microsoft Word Tastaturbefehle "vorzutäuschen"?
Es soll einfach ein VC++ Programm sein, dass nichts anderes macht, als Tastaturbefehle zu simulieren und diese sollen Win-Programme so wie "normale" tastaturbefehle erkennen.

Vielen Dank im voraus!

Firestormer

bei Antwort benachrichtigen
thomas woelfer Firestormer „In Microsoft Word eingreifen....“
Optionen

was du suchst ist SendKeys (z.b. in WshShell).

der richtige weg word dazu zuveranlassen irgendwas automatisch zu tun waere aber eigentlich automation.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
Uli M Firestormer „In Microsoft Word eingreifen....“
Optionen

Was konkret hast du vor? Wozu "vortäuschen"? Willst du vorübergehend Word steuern (etwa etwas in ein Dokument schreiben, einen Befehl ausführen) oder best. Tasten(kombinationen) dauerhaft ändern?
Wie auch immer und wie Thomas schon schrieb: via Automation kannst du (theoretisch) all dies erreichen.

bei Antwort benachrichtigen
Borlander Uli M „Was konkret hast du vor? Wozu vortäuschen ? Willst du vorübergehend Word...“
Optionen

Nicht nur theoretisch sondern auch praktisch :-)
Alles was mit VBA möglich ist sollte auch über OLE/COM funktionieren...

bei Antwort benachrichtigen
Firestormer Uli M „Was konkret hast du vor? Wozu vortäuschen ? Willst du vorübergehend Word...“
Optionen

Danke sehr!
Ich brauchs für ein Maturaprojekt, da muss ein Programm etwas in einem Word-Dokument schreiben!! Und jetzt muss ich mich erst mal mit VC++ vertraut machen...

mfG
Mike

bei Antwort benachrichtigen
Uli M Firestormer „In Microsoft Word eingreifen....“
Optionen

Hört sich erst einmal nicht sehr schwierig an. Anbei ein paar einfache Beispiele:
Sub EtwasInWordDokSchreiben()
Dim objWord As Object, objDoc As Object, objRange As Object
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("c:\\Test\\Existentes.doc", False, False, False)
With objDoc
.Content.InsertAfter Chr(13) & "Neuer Absatz am Ende"
' oder
.Paragraphs(1).Range.Text = "1. Absatz ersetzt" & Chr(13)
' oder
Set objRange = .Range
objRange.Start = .Paragraphs(2).Range.Start
objRange.End = objRange.Start + 4
objRange.Text = "bestimmter Bereich ersetzt"
' meist am besten, wenn Dok-Aufbau bekannt: mit Textmarken (oder Formularfeldern) arbeiten
Set objRange = .Bookmarks("Feld1").Range
objRange.Text = "Inhalt für Feld 1"
.Bookmarks.Add "Feld1", objRange
' Text ersetzen:
With .Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Alter Text"
.Replacement.Text = "Neuer Text"
.Execute Replace:=2
End With
.Close -1
End With
Set objDoc = Nothing
Set objWord = Nothing
End Sub

Mit u.a. diesen Methoden kannst du einen Dokument-Inhalt manipulieren. Wenn du stattdessen Tastaur-Eingaben "vortäuschen" willst, muss die Anwendung sichtbar und das Dok den Focus haben.
Vermeide das Selection-Objekt, das etwa von einer Makroaufzeichnung verwendet wird.

bei Antwort benachrichtigen