Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.12.2018, 13:20   #1
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
Репутация: 10
По умолчанию Проверка установки офиса365

Добрый день,
Не подскажет ли кто нибудь ответы на следующие вопросы:
1) Можно ли как то, из программы на дельфи, определить установлен или нет Микрософт офис на локальном компьютере
2) Можно ли как то, из программы на дельфи, определить установлен или нет Микрософт офис365 на локальном компьютере
3) Можно ли как то, из программы на дельфи, определить актуальна ли лицензия на офис365

Проблема:
1)при запуске екселя365, из программы на дельфи, как не отлавливаю исключения, но все равно выскакивает сообщение о том, что лицензия закончилась. Хотя сам ексель вполне удачно запускается.
2)при попытке запустить почту365 та же самая картина.

(delphi XE8 или delphi7)

Спасибо
maxfox123 вне форума   Ответить с цитированием
Старый 23.12.2018, 13:59   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 17,919
Репутация: 3428

icq: 512-765
skype: alexp.frl
По умолчанию

А вам вообще точно надо их запускать?

Для документов офиса есть библиотеки использующие OpenXML, для почты IMAP.
Alex11223 вне форума   Ответить с цитированием
Старый 23.12.2018, 14:55   #3
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,306
Репутация: 673
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
Сообщение от maxfox123 Посмотреть сообщение
1) Можно ли как то, из программы на дельфи, определить установлен или нет Микрософт офис на локальном компьютере
На пример так можно проверить EXCEL
Код:

{$R *.dfm}
 uses ActiveX;

procedure TForm1.Button1Click(Sender: TObject);
var
    Excel_ID: TCLSID;
    Rez : HRESULT;
begin
  Rez := CLSIDFromProgID(PWideChar(WideString('Excel.Application')), Excel_ID);
  if Rez <> S_OK then
  begin
    MessageDlg('EXCEL НЕ установлен.',mtERROR,[mbok],0);
    Exit;
  end
  else
  if Rez = S_OK then
  begin
    MessageDlg('EXCEL установлен.',mtInformation,[mbok],0);
    Exit;
  end
end;

end.

Цитата:
Сообщение от maxfox123 Посмотреть сообщение
Микрософт офис365
Что такой 365 ?

Цитата:
Сообщение от maxfox123 Посмотреть сообщение
актуальна ли лицензия
При открытие Excel и Word и это так видно и какой проверка там надо ?
Цитата:
Сообщение от maxfox123 Посмотреть сообщение
но все равно выскакивает сообщение о том, что лицензия закончилась.
Зачем ? и так его видно.
__________________
E_MAIL: rijgvina7@yahoo.com

Последний раз редактировалось xxbesoxx; 23.12.2018 в 15:47.
xxbesoxx вне форума   Ответить с цитированием
Старый 23.12.2018, 15:13   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 17,919
Репутация: 3428

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Что такой 365 ?
Часть названия продукта.
Alex11223 вне форума   Ответить с цитированием
Старый 23.12.2018, 23:52   #5
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Что такой 365 ?
Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
При открытие Excel и Word и это так видно и какой проверка там надо ?
Офис365 это общее название программ микрософта. Мне в общем случае необходимо формировать в скрытом режиме документы в ворде и в екселе, а потом в зависимочти от галки настройки либо посылать документы почтой либо закачивать на сервер.
В том случае, если лицензия на офис активна, то все хорошо и документы отсылаются. А вот когда лицензия просрочена, то происходит вызов дополнительных окон с уведомлением что "братец, лплати денежек, так как лицензия кончилась"
maxfox123 вне форума   Ответить с цитированием
Старый 24.12.2018, 00:33   #6
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 17,919
Репутация: 3428

icq: 512-765
skype: alexp.frl
По умолчанию

Да при запуске целого офиса много чего произойти может.
↓↓↓
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А вам вообще точно надо их запускать?

Для документов офиса есть библиотеки использующие OpenXML, для почты IMAP.
Alex11223 вне форума   Ответить с цитированием
Старый 24.12.2018, 09:36   #7
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,306
Репутация: 673
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
Сообщение от maxfox123 Посмотреть сообщение
формировать в скрытом режиме документы в ворде и в екселе
Не знаю что имеется в виду ?! Если это импорт из БД на Excele скрытом режиме то можно так
Код:

procedure TfrmPanel.VidachaDobavkaSaveEXCEL;
var
  XLapp, Sheet, Colum:Variant;
  index,i:Integer;
begin
  // Мои запрос
   with msqryVidachaDobavkaEXCEL do
   begin
     Close;
     SQL.Clear;
     SQL.Append(' SELECT *   '+
                ' FROM MyVidachDobavka() '+
                ' ORDER BY 1 ASC ');
    Open;
   end;
 //------------------------------------------------------------------------
  try
     XLApp:= CreateOleObject('Excel.Application');
     XLApp.Visible:=False;   // изначально состаяние .! когда в цикле заполняется закриваем этот момент XLApp.Visible:=False;
     XLApp.Workbooks.Add;
     XLApp.Workbooks[1].WorkSheets[1].Name:='Отчет';
     Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;
     Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Rows;
     Colum.Rows[2].Font.Bold:=true;
     Colum.Rows[1].Font.Bold:=true;
     Colum.Rows[1].Font.Color:=clBlue;
     Colum.Rows[1].Font.Size:=10;
     Colum.Rows[2].Font.Size:=10;
     Colum.Rows[3].Font.Size:=10;
     Colum.Rows[4].Font.Size:=10;
     Colum.Rows[5].Font.Size:=10;
    //--------Выбираем фонт
     Colum.Rows.Font.Name:='Times New Roman';
     // ---- Размер шрифта
      Colum.Rows.Font.Size := 12;
     //-----
     Sheet:=XLApp.Workbooks[1].WorkSheets['Отчет'];
     Sheet.Cells[1,2]:='Выданный добавление деньги :   '+' ' +FormatDateTime('dd.mm.yyyy', Now);
     Sheet.Cells[1].RowHeight := 20; // высота ячейки ! Это для заголовки

     Sheet.Cells[2,1]:='№ договора ';
     Sheet.Cells[2,2]:='Дата оформления';
     Sheet.Cells[2,3]:='ФИО';
     Sheet.Cells[2,4]:='Выданные сумма';
     Sheet.Cells[2,5]:='Пояснения';
     //------------------выравнивание Загаловка столбцов по цередине------------
     Sheet.Cells[2,1].HorizontalAlignment:=3;
     Sheet.Cells[2,2].HorizontalAlignment:=3;
     Sheet.Cells[2,3].HorizontalAlignment:=3;
     Sheet.Cells[2,4].HorizontalAlignment:=3;
     Sheet.Cells[2,5].HorizontalAlignment:=3;
     //---------------------------------------------------------
    index :=3;
    msqryVidachaDobavkaEXCEL.First;
    for i:=0 to msqryVidachaDobavkaEXCEL.RecordCount-1  do
    begin
     // --- Размер ширина столбцов
      Sheet.Cells.ColumnWidth:= 30;
      //--- Высота ячейки
      Sheet.Cells.RowHeight := 20;
      //----- выравнивание Текст по цередине
       Sheet.Cells[index,1].HorizontalAlignment:=3;
       Sheet.Cells[index,2].HorizontalAlignment:=3;
       Sheet.Cells[index,3].HorizontalAlignment:=3;
       Sheet.Cells[index,4].HorizontalAlignment:=3;
       Sheet.Cells[index,5].HorizontalAlignment:=3;
       //---------------------------------------------------------//
       Sheet.Cells[index,1]:= msqryVidachaDobavkaEXCEL.Fields[0].AsInteger;
       Sheet.Cells[index,2]:=  FormatDateTime('dd.mm.yyyy hh:mm:ss', msqryVidachaDobavkaEXCEL.Fields[1].AsDateTime);
       Sheet.Cells[index,3]:=  msqryVidachaDobavkaEXCEL.Fields[2].AsString;
       Sheet.Cells[index,4]:=  FormatCurr('0.00', msqryVidachaDobavkaEXCEL.Fields[3].AsCurrency);
       Sheet.Cells[index,5]:=  msqryVidachaDobavkaEXCEL.Fields[4].AsString;
       Inc(index);
       msqryVidachaDobavkaEXCEL.Next;
    end;
   XLApp.Visible:=False;
  finally
      //---- Сохраняем файл
     // XLApp.WorkBooks[1].SaveAs('c:\Moi_otchet_'+FormatDateTime('dd.mm.yyyy', Now)+'.xlsx' ); //Сохраняем
      XLApp.WorkBooks[1].SaveAs('D:\Vidano_Dobavleno.xlsx');
      XLApp.Quit;  // Закриваем
      XLApp:=unassigned;  //
  end;

и чтобы

Цитата:
Сообщение от maxfox123 Посмотреть сообщение
посылать документы почтой
То пожалуйста
Код:

procedure TfrmPanel.SendEmailEXCEL;
var
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
  AttachmentFileFullName, MyProc: string;

begin
 // frmPriemProc.msqryOrdersVidachov.Open;
  // Файл
  AttachmentFileFullName := 'D:\Vidano_Dobavleno.xlsx';  // Первый файл
  MyProc := 'D:\Polucheni_Summa.xlsx';  // Второе файл
  // SSL
  IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
   //-------------------------------------------------------
    IdSMTP:= TIdSMTP.Create(Application);
    IdSMTP.Host := 'smtp.mail.ru';
    IdSMTP.AuthType := satDefault;
    IdSMTP.Username := 'xxxxxxxx@mail.ru'; // тот MAIL откуда вы его отправляйте 
    IdSMTP.Password := '*******'; // и ваши пароль 
    IdSMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL;
    IdSMTP.UseTLS := utUseImplicitTLS;
  //---------------------------------------------------------
  IdMessage := TIdMessage.Create(nil);
  with IdMessage do
  begin
    Subject := 'название организаций'; // тот MAIL откуда вы его отправляйте 
    From.Address := 'xxxx@mail.ru'; // мой Mail
    From.Name :=  'Тема'; //  
    Recipients.EMailAddresses := 'получатель@yahoo.com'; // получатель  //   
    CharSet := 'UTF-8';
    Body.Text := 'Пожалуйста посмотрите ;)'; //AnsiToUtf8('Текст сообщения');
  end;
   // прикрепить файл. Здесь я 2-файл отправляю, вы можете только 1
  if (AttachmentFileFullName <> '') or (MyProc<>'')then
   begin
    TIdAttachmentFile.Create(IdMessage.MessageParts, AttachmentFileFullName);
    TIdAttachmentFile.Create(IdMessage.MessageParts, MyProc);
   end;
  try
    IdSMTP.Connect;
    begin
      IdSMTP.Send(IdMessage);
      IdSMTP.Disconnect();
//      ShowMessage('Сообщение отправлено!');
    end;
  except
    on E: Exception do
//      ShowMessage('Не удалось отправить сообщение!'#13#10 + E.Message);
  end;

  IdMessage.Free;
  IdSMTP.Free;

end;

и это пример НЕ зависит Offic- активирован или нет. Offic если не активирован и так можно посмотреть. Это можно всё автоматизировать - что программа в скрытом режиме отправил и отправил на пример на какой то время - на пример 23:50
Цитата:
Сообщение от maxfox123 Посмотреть сообщение
(delphi XE8 или delphi7)
delphi7 - уже устарел.
Вложения
Тип файла: rar INDY_DLL_чтобы_не_искать.rar (540.1 Кб, 0 просмотров)
__________________
E_MAIL: rijgvina7@yahoo.com

Последний раз редактировалось xxbesoxx; 24.12.2018 в 09:49.
xxbesoxx вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таблица поверки приборов. выводить список приборов по столбцу "место установки" (в определенном месте установки) на отдельный лист LyubashaSemenova Microsoft Office Excel 8 03.07.2015 14:12
запуск установки Noble23 Общие вопросы Delphi 11 25.06.2013 14:07
excel.Проверка VBA и проверка функции Будда Помощь студентам 0 14.04.2011 21:10
Выкидывает из установки Jackomo Операционные системы общие вопросы 11 23.03.2009 11:55


09:25.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru