Страница 1 из 1
Такса и OLE
Добавлено: Пн фев 19, 2007 19:54
Денис_2
Здравствуйте!
На формуме поднималась тема по взаимодействию программ. В частности с ключем -Z. В теме упоминалось о том, что запросы также можно передать через OLE, не могли бы вы прояснить как это сделать ?
WINAPI не так удобен.......
Добавлено: Вс мар 18, 2007 13:30
Денис_2
ОТветили бы хоть для вежливости......
Re: Такса и OLE
Добавлено: Пн мар 19, 2007 10:33
alta_olg
Денис_2 писал(а):Здравствуйте!
На формуме поднималась тема по взаимодействию программ. В частности с ключем -Z. В теме упоминалось о том, что запросы также можно передать через OLE, не могли бы вы прояснить как это сделать ?
WINAPI не так удобен.......
Загрузки /выгрузки данных ни по OLE ни по WINAPI на сегодняшний день нет.
Добавлено: Вт мар 20, 2007 14:56
Nick
Опишите подробнее свою задачу - вам надо передать свою заготовку в ГТД, или получить какие-то данные из ГТД?
Для обоих случаев есть более-менее стандартные решения, если что-то надо доработать - как правило мы это без проблем делаем.
Что касается "высоких" технологий типа OLE- и COM-объектов, то их в свое время попробовали и убедились что все начинает работать в разы медленнее, чем при простой передаче данных через файл. А файл может быть разный: TXT, DBF, XML, DOC, XLS, RTF, HTML...
Добавлено: Ср мар 21, 2007 09:13
Денис_2
Не в ГТД. Передать данные(код товара, страну и т.п.) в таксу и получить справку по товару из Таксы ( в виде html). Насколько я понял, ГТД так и получает.....
Добавлено: Ср мар 21, 2007 12:30
Nick
А... Я не разглядел, что про Таксу.
Там да, там старинный самопальный механизм на WinAPI :
Код: Выделить всё
1) в начале регистрируется собственный формат Clipboard-а
CF_tax:=RegisterClipboardFormat('tax');
2) с этим форматом кладется строчка с параметрами
P:=Format('SPRAV:%s;%s%;%d;%s;ИМ;0', TNVED, HtmReportFile, Application.MainForm.Handle, CountryCode);
SetClipboardData(CF_tax, P);
3) ищем окно Таксы, если есть - кидаем ему message, нет - запускаем
H :=findwindow('TfrmTax',nil);
If H<>0 then //Поднимаем Таксу
PostMessage(H,5557,0,0)
else //Запускаем Таксу
WinExec(GetTaxName,SW_SHOWMINNOACTIVE);
4) когда такса отработает - она вернет окну с указанным Handle WM_HtmlReport=5558 - можно показывать файл HtmReportFile
procedure TfrmMain.WMHtmlReport(var Msg: TMessage);
begin
ShowHTML(HtmReportFile, true)
end;
Если интересно - готов поделится более подробными исходниками, пишите altan<a>aha.ru
Можно также обсудить приведение этого механизма к более удобному для вас виду - но уже за отдельную денюжку