Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.08.2009, 14:41
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию Как отправить текст в Word

Здравствуйте!
Вот код он отправляет текст в блокнот
Код:
var
   wnd: HWND;
   i: Integer;
   s: string;
 begin
   wnd := FindWindow('notepad', nil);
   if wnd <> 0 then
   begin
     wnd := FindWindowEx(wnd, 0, 'Edit', nil);
    s := 'Hallo';
     for i := 1 to Length(s) do
       SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
     PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
   end;
 end;
Не подскажите как отправить текст в Word???
Ответить с цитированием
  #2  
Старый 25.08.2009, 15:44
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

OLE Automation.
Код:
uses
  ComObj, ...

procedure TForm1.SpeedButton4Click(Sender: TObject);
Var
  W : variant;
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=true;
  W.Documents.Add;
  W.ActiveDocument.Range.InsertAfter('Hello Word');
end;

Ответить с цитированием
  #3  
Старый 25.08.2009, 17:21
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Спасибо конечно, но это не то...
Ответить с цитированием
  #4  
Старый 25.08.2009, 18:16
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

pesi, листик Word отличается от Блокнота как минимум классом окна. В моем MS Office XP этот класс — «_WwG». В других версиях Word смотрите сами, какой класс окна. Все остальное можете делать (почти) так же, как в случае с Блокнотом.
Код:
...

var
  Form1: TForm1;
  WordDoc: HWND;
  function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;

implementation

{$R *.dfm}

function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
const
  WordDocClass = '_WwG';
var
  WndClassName: PChar;
begin
  Result := True;
  GetMem(WndClassName, 255);
  try
    GetClassName(hndl, WndClassName, 255);
    if StrPas(WndClassName) = WordDocClass then
    begin
      WordDoc := hndl;
      Result := False;
    end;
  finally
    FreeMem(WndClassName, 255);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
  i: Integer;
  s: string;
begin
  WordDoc := 0;
  wnd := FindWindow(nil, PChar('Документ1 - Microsoft Word'));
  if wnd <> 0 then
  begin
    EnumChildWindows(wnd, @EnumChildWndProc, 0);
    if WordDoc <> 0 then
    begin
      s := 'Hello';
      for i := 1 to Length(s) do
        PostMessage(WordDoc, WM_CHAR, Word(s[i]), 0);
      PostMessage(WordDoc, WM_KEYDOWN, VK_RETURN, 0);
    end
    else ShowMessage('Word list is not found!');
  end
  else ShowMessage('MS Word is not found!');
end;
Ответить с цитированием
  #5  
Старый 25.08.2009, 20:01
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Nyctos Kasignete, большущее - пребольшущие вам спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter