Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка Worda'а из С++

4.1K
28 июля 2006 года
GRIENDERS
117 / / 06.06.2006
Как загрузить Word, открыть к-л документ и сохранить его?
5.9K
31 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Используй функцию ShellExecute
 
Код:
ShellExecute(NULL, "open", "word.exe", "document.doc", NULL, SW_SHOW);
255
31 июля 2006 года
Dart Bobr
1.4K / / 09.04.2004
Ага, только сохранить предидущим методом не получится...
А вообще для работы с вордом из под .NET есть веселая вещь: Microsoft.Office.Interop.Word
короче, в MSDN это есть.
4.5K
31 июля 2006 года
e-XperT
127 / / 04.07.2006
Тут нужно использовать автоматизацию.
4.1K
31 июля 2006 года
GRIENDERS
117 / / 06.06.2006
[QUOTE=Dart Bobr]Ага, только сохранить предидущим методом не получится...
А вообще для работы с вордом из под .NET есть веселая вещь: Microsoft.Office.Interop.Word
короче, в MSDN это есть.[/QUOTE]

Расскажи поподробней или подкинь ссылку на инфу. А вообще мне надо вот что: найти все доковские файлы на компе жертвы и поставить на них пароль. С помощью делфи все просто, а вот как на С++ ?
255
01 августа 2006 года
Dart Bobr
1.4K / / 09.04.2004
Короче, под .NET есть возможность работать с документами офиса, в частности ворда, как с четко структурированым набором классов. То-есть подключаешь в References - Microsoft Word Object Model, и можешь в рантайме управлять приложениями, документами, шаблонами офиса. Короче смотри в MSDN есть целый раздел Office. Там єто детально описано. Если хочешь гуглить, то ключевые слова: .NET, Runtime, Office...
6.4K
02 августа 2006 года
Host
122 / / 22.09.2005
[quote=GRIENDERS]Расскажи поподробней или подкинь ссылку на инфу. А вообще мне надо вот что: найти все доковские файлы на компе жертвы и поставить на них пароль. С помощью делфи все просто, а вот как на С++ ?[/quote]

Похоже тебе надо что-то подобное: http://www.codenet.ru/progr/visualc/import.php
407
04 августа 2006 года
shupik
160 / / 15.09.2004
Фу, как сложно у вас все, господа :-) Можно применить автоматизацию, как уже упоминали выше. Да вот пример: добавьте в проект новый класс, из библиотеки msword.olb (лежит в C:\Program Files\Microsoft Office\Office11 - это если Office 2003). Вот, добавили, теперь пишем в классе диалогового окна, из которого будете Word вызывать:
//заголовочный файл этого диалога
#include "msword9.h"
----
//cpp'шный файл этого диалога
//метод обработки нажатия кнопки "Вызвать Word и экспортировать в
// него данные"
void COfficeAutoCompleteDlg::OnButtonCreateWord()
{
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE),covFalse((short)FALSE);

typedef enum
{
wdAlignParagraphLeft=0,
wdAlignParagraphCenter=1,
wdAlignParagraphRight = 2,
wdAlignParagraphJustify = 3,
wdAlignParagraphDistribute = 4,
wdAlignParagraphJustifyMed = 5,
wdAlignParagraphJustifyHi = 7,
wdAlignParagraphJustifyLow = 8
} WdParagraphAlignment;

typedef enum
{
wdWord8TableBehavior = 0,
wdWord9TableBehavior = 1
} WdDefaultTableBehavior;

typedef enum
{
wdAutoFitFixed = 0,
wdAutoFitContent = 1,
wdAutoFitWindow = 2
} WdAutoFitBehavior;



_ApplicationWord oAppWord;
oAppWord.CreateDispatch("Word.Application");
if (!oAppWord)
{
this->MessageBox("Невозможно запустить MS Word. Переустановите пакет MS Office 2000/XP/2003","Ошибка",MB_OK);
return;
}
Documents oPages; //объявляем коллекцию документов
oPages = oAppWord.GetDocuments(); // и получаем список документов
oPages.Add(vOpt,vOpt,vOpt,vOpt); //добавляем к существующей коллекции новую книгу
_Document oPage; //объявляем конкретный экземпляр (класс _Document)
oPage=oPages.Item(COleVariant(long(1)));
//oPage.SetPageSetup(
oPage.Activate();

Paragraphs oPars;
Paragraph oPar;
Selection oSel;
_Font fnt;
//получить выделение. Поскольку его пока нет, выделением будет являться
//текущая позиция курсора
oSel=oAppWord.GetSelection();
//параграфов в документе несколько - получаем их коллекцию
oPars=oSel.GetParagraphs();
//добавляем новый параграф с установками по умолчанию
oPar=oPars.Add(vOpt);
//печатаем текст
oPar.SetAlignment(2);
oSel.TypeText("Текст какой-нибудь");
//делаем лист видимым
oAppWord.SetVisible(TRUE);
//передаем управление пользователю
}

Вот примерно так.Но в данном примере Вам придется самому дать имя получившемуся документу. Если что-то не получится, спрашивайте, не стесняйтесь ;-)
6.4K
05 августа 2006 года
Host
122 / / 22.09.2005
[quote=shupik]Фу, как сложно у вас все, господа :-)[/quote]

Код:
[SIZE=1][COLOR=#0000ff]
#include[/COLOR][/SIZE][SIZE=1] <iostream>
[/SIZE][SIZE=1][COLOR=#0000ff]#define[/COLOR][/SIZE][SIZE=1] _WIN32_DCOM
[/SIZE][SIZE=1][COLOR=#0000ff]#import[/COLOR][/SIZE][SIZE=1] "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" auto_rename no_namespace
[/SIZE][SIZE=1][COLOR=#0000ff]#import[/COLOR][/SIZE][SIZE=1] "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" auto_rename no_namespace
[/SIZE][SIZE=1][COLOR=#0000ff]#import[/COLOR][/SIZE][SIZE=1] "C:\Program Files\Microsoft Office\OFFICE10\MSWORD.OLB" auto_rename
[/SIZE][SIZE=1][COLOR=#0000ff]using[/COLOR][/SIZE][SIZE=1][COLOR=#0000ff]namespace[/COLOR][/SIZE][SIZE=1] Word;
[/SIZE][SIZE=1][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=1] main()
{
CoInitializeEx(0, COINIT_MULTITHREADED);
{
[/SIZE][SIZE=1][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=1]* buff = "C:\\file.doc";
_ApplicationPtr pWord(L"Word.Application");
HRESULT hr;
[/SIZE][SIZE=1][COLOR=#0000ff]try
[/COLOR][/SIZE][SIZE=1]{
[/SIZE][SIZE=1][COLOR=#008000]//открываем документ
[/COLOR][/SIZE][SIZE=1]_DocumentPtr wdoc = pWord->Documents->Open(&_variant_t(buff));
[/SIZE][SIZE=1][COLOR=#008000]//устанавливаем пароль
[/COLOR][/SIZE][SIZE=1]wdoc->Password = _bstr_t("parol");
[/SIZE][SIZE=1][COLOR=#008000]//сохраняем и закрываем документ
[/COLOR][/SIZE][SIZE=1]wdoc->Save();
wdoc->Close();
}
[/SIZE][SIZE=1][COLOR=#0000ff]catch[/COLOR][/SIZE][SIZE=1] (_com_error& er)
{
[/SIZE][SIZE=1][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=1] buf[1024];
sprintf(buf,"_com_error:\n"
"Error : %08lX\n"
"ErrorMessage: %s\n"
"Description : %s\n"
"Source : %s\n",
er.Error(),
(LPCTSTR)_bstr_t(er.ErrorMessage()),
(LPCTSTR)_bstr_t(er.Description()),
(LPCTSTR)_bstr_t(er.Source()));
CharToOem(buf,buf); [/SIZE][SIZE=1][COLOR=#008000]// только для косольных приложений
[/COLOR][/SIZE][SIZE=1]printf(buf);
}
}
CoUninitialize();
[/SIZE]


Вот примерно так можно установить пароль на документ.
4.1K
05 августа 2006 года
GRIENDERS
117 / / 06.06.2006
Спасибо, попробую разобраться. А вот что за директива #import?
6.4K
06 августа 2006 года
Host
122 / / 22.09.2005
[quote=GRIENDERS]А вот что за директива #import?[/quote]

О директиве #import читай в статье, ссылку на которую я давал тебе ранее.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог