![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как встроить в свою програму переводчик Pragma [D7, Win2k, WinXP]
integeri © (2006-11-10 10:31:00)Есть хороший переводчик Pragma , но нужно перевод делать через свою програму, тоесть єсть база даних, пользователь вносить текст, и моя програма в одну ячейку вставляеть текст как есть и сразу делает перевод во вторую ячейку. Может ктото сталкивался с такой задачкой!!!
Наиль (2006-11-13 16:10:00) [1]> Значит возможно и здесь сильно пахнет СОМ.
Судя по Notepad, COM'ом здесь и не пахнет.
Просто программа избирательно втыкает свой пункт в чужое меню.
А вот для получения текста из IE и Word, Pragma вполне может воспользоваться предоставленым COM'ом.
Anatoly Podgoretsky (2006-11-13 10:35:00) [2]> integeri (13.11.2006 10:25:23) [23]
Если у него массовое распространение, то вряд ли свыше 200 зеленых, или может зависить от количество экземпляров программы.
integeri (2006-11-13 10:25:00) [3]Автор сказал што ито будет стоить, но несказал сколько , жду ответ на сколько потянит???
Орион (2006-11-10 14:26:00) [4]> [19] Anatoly Podgoretsky © (10.11.06 13:11)
Все прямые пути прорверены. Дальше - извращения :)
Anatoly Podgoretsky (2006-11-10 13:13:00) [5]> integeri (10.11.2006 10:50:08) [8]
Вот это видишь
> Copyright (C) 1998 Netscape Communications Corporation. All Rights Reserved.
Anatoly Podgoretsky (2006-11-10 13:12:00) [6]> integeri (10.11.2006 10:45:05) [5]
Значит возможно и здесь сильно пахнет СОМ.
Надо обращаться к авторам.
Anatoly Podgoretsky (2006-11-10 13:11:00) [7]> Орион (10.11.2006 10:44:03) [3]
Почему, что все пути проверены, включая покупку фирты изготовителя?
Anatoly Podgoretsky (2006-11-10 13:10:00) [8]> integeri (10.11.2006 10:31:00) [0]
К авторам обращались (обращался)?
Elen (2006-11-10 12:46:00) [9]
> integeri
Тем примером Я тебе наводку даю как можно сделать.
w:=strtoint(ListBox1.Items[2]);
SendMessage(w, WM_LBUTTONDOWN,MK_LBUTTON,5);
SendMessage(w, WM_LBUTTONUP,MK_LBUTTON,5);
Цыферки те - хендели. второй хендель это копка нотепада, а этот код должен ей послать клик
integeri (2006-11-10 12:41:00) [10]я запустил но чото мне в ListBox1 загнало какието циферки, чо с ними то делать
Elen (2006-11-10 12:19:00) [11]
> integeri
Дальше на твое усмотрение открывать файл или вставлять из клипбоарда
Elen (2006-11-10 12:17:00) [12]
> integeri
Можна : Запуск блокнота с прагмой в миню :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public ChildElements:string;
{ Public declarations }
end;
function enumChildWindow_Crtfox_Enum(h:THandle;l:integer):boolean; stdcall;
var win:hwnd;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
//********** FUNCTION **********
function enumChildWindow_Crtfox_Enum;
begin
form1.ChildElements:=form1.ChildElements+inttostr(h)+' ';
result:=true;
end;
//********** END FUNCTION ******
procedure TForm1.FormCreate(Sender: TObject);
var w:hwnd; s:string;
begin
w:=FindWindow('PragmaBarClass','');
EnumchildWindows(w,@enumChildWindow_Crtfox_Enum,0);
ListBox1.Items.CommaText :=ChildElements;
w:=strtoint(ListBox1.Items[2]);
SendMessage(w, WM_LBUTTONDOWN,MK_LBUTTON,5);
SendMessage(w, WM_LBUTTONUP,MK_LBUTTON,5);
{}
w:=FindWindow('Notepad','Áåçûìÿííû& #233; - Áëîêíîò');
w:=FindWindowEx(w,0,'Edit','');
end;
end.
integeri (2006-11-10 11:53:00) [13]
> Elen © (10.11.06 11:35) [11]
можна кусочек кода
Ketmar (2006-11-10 11:45:00) [14]>[11] Elen(c) 10-Nov-2006, 11:35
>Так, Пардон, Немного не так было 8)
понял. вопрос снят. %-)
Elen (2006-11-10 11:35:00) [15]
> Ketmar
Так, Пардон, Немного не так было 8)
Запускался PragmaBar и висел на экране. Далее EnumchildWindow в этом баре находилась кнопка от блокнота. по ней давался клик WM_LBUTTONDOWN, далее запускался блокнот и там уже манипуляциями с менюшкой проводился перевод. Знаю это не совсем правильно так делать, но нужно было чето быстро решать - решили так...
integeri (2006-11-10 11:10:00) [16]код вище для интеграции в мозилу
Ketmar (2006-11-10 11:00:00) [17]>[7] Elen(c) 10-Nov-2006, 10:49
>Трудность только в определении закончила
>ли прагма переводить, это сами...
да? только в этом? поделись эксклюзивным универсальным методом определения координат любой иконки в области уведомлений, а? можешь даже статью написать. прославишься. без дураков прославишься.
integeri (2006-11-10 10:50:00) [18]От нашол код
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Trident Software, trident@kagi.com, original author
*/
var pragmgr = Components.classes["@trident.com.ua/pragma;1"].getService();
pragmgr = pragmgr.QueryInterface(Components.interfaces.ipPragma);
function toTranslate()
{
var doc = document.commandDispatcher.focusedWindow.content.document;
var pframes = document.commandDispatcher.focusedWindow.content.frames;
// alert ('this object is: ' + pframes);
var count = pframes.length;
// alert ('frames count = ' + count);
if ( count > 0 ) {
for (var i=0; i<count; i++) {
// alert (pframes.frames[i].document);
// alert (pframes.frames[i].document.body.innerHTML);
pragmgr.TranWindow(pframes.frames[i].document.body.innerHTML);
pframes.frames[i].document.body.innerHTML = pragmgr.TranHtml;
}
} else {
pragmgr.TranWindow(doc.body.innerHTML);
doc.body.innerHTML = pragmgr.TranHtml;
}
}
function toOptions()
{
pragmgr.Options();
}
function toAbout()
{
pragmgr.About();
}
Elen (2006-11-10 10:49:00) [19]
> integeri
Я делаю так : У меня Прагма 4 - Программно запускаю pragma.exe он свою иконку запуздыриват в часики. Далее в своей проге выделяю нужный для перевода текст и программно кликаю по запуздыренной иконке (можно и по другому конечно). В прагме предварительно выставляю настройки - сразу брать выделенный текст, сразу переводить и сразу копировать в буфер обмена. Далее закрываю прагму и беру текст из буфера. Трудность только в определении закончила ли прагма переводить, это сами...
integeri (2006-11-10 10:46:00) [20]
> ЮЮ © (10.11.06 10:44) [4]
например какие
> профессиональные переводчики