Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

(delphi XE8 или delphi7)

Спасибо
maxfox123 вне форума Ответить с цитированием
Старый 23.12.2018, 12:59   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Для документов офиса есть библиотеки использующие OpenXML, для почты IMAP.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.12.2018, 13:55   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от 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 Посмотреть сообщение
но все равно выскакивает сообщение о том, что лицензия закончилась.
Зачем ? и так его видно.

Последний раз редактировалось xxbesoxx; 23.12.2018 в 14:47.
xxbesoxx вне форума Ответить с цитированием
Старый 23.12.2018, 14:13   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Что такой 365 ?
Часть названия продукта.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.12.2018, 22:52   #5
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
По умолчанию

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

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

Для документов офиса есть библиотеки использующие OpenXML, для почты IMAP.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.12.2018, 08:36   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от 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 Кб, 5 просмотров)

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


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


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