![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое копирование информации в Richedit [D7, WinXP]
seregka © (2005-05-20 21:38:00)Мне нужно реализовать:
выделяем в IE произвольно текст. Из выпадющего меню выбираем программу (уже реализовано) и передаем выделенный текст в RichEdit программы.
Подскажите, как это сделать.
seregka (2005-05-21 20:27:00) [1]проблему решил:
function GetSelectedIEtext: string;
var
x: Integer;
Sw: IShellWindows;
IE: HWND;
begin
IE := FindWindow('IEFrame', nil);
sw := CoShellWindows.Create;
for x := SW.Count - 1 downto 0 do
if (Sw.Item(x) as IWebbrowser2).hwnd = IE then begin
Result := variant(Sw.Item(x)).Document.Selection.createRange.Text;
break;
end;
end;
Anatoly Podgoretsky (2005-05-21 20:22:00) [2]Действий немного меньше, чем вызывать попап меню, затем в нем пункт копировать.
Есть старый лозунг - не сметь трогать буфер обмена зараза!. Не твое.
seregka (2005-05-21 19:50:00) [3]rOOse
Никак нет! Но Ваш код на копирование в буфер не решает моей главной проблемы - как передать из броузера в программу.
Anatoly Podgoretsky
Актуально!! Главное, автоматизированно :-))
Anatoly Podgoretsky (2005-05-21 19:36:00) [4]Ctrl+C/Ctrl+V
rOOse (2005-05-21 19:24:00) [5]а ты не забыл что задаешь вопрос в разделе winapi
seregka (2005-05-21 19:21:00) [6]зачем городить огород, когда можно просто
richedit.copytoclipboard;
Мне же нужно выделенный в броузере текст копировать в буфер обмена
rOOse (2005-05-21 19:00:00) [7]procedure TForm1.Button2Click(Sender: TObject);
var
hg:HGLOBAL;
lpv:pointer;
buff:array[0..50] of char;
begin
buff:='sdfgsf3213123';
OpenClipboard(0);
hg:= GlobalAlloc(GMEM_MOVEABLE, strlen(buff));
lpv:= GlobalLock(hg);
copymemory(lpv, @buff, strlen(buff));
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
end;
seregka (2005-05-21 18:09:00) [8]в том то и дело, что я не знаю как получить hwnd броузера. Сколько бы IE не было открыто, надо копировать только из текущего. Программа запускается из контекстного меню броузера.
GrayFace (2005-05-21 17:57:00) [9]Если ты сможешь получить hWnd самого IE, то дальше не проблема. Должна быть возможность не только запихнуть прогу в меню, но и получить какие-то сведения. В противном случае можно использовать самый верхний IE. Возможность есть?
seregka (2005-05-21 12:00:00) [10]Подскажите, как вытянуть handle окна IE и правильно отправить сообщение. Просто я в этом плохо соображаю:
sendmessage(броузера handle, WM_COPY, ?,?)
KilkennyCat (2005-05-21 11:50:00) [11]Это надо послать сообщение WM_COPY окну, где текст.
seregka (2005-05-21 11:47:00) [12]я понимаю, что с буфером
Как мне сделать так,чтобы по запуску программы происходило копирование выделенной в окне броузера информации в буфер. Дальше то понятно - вставлять из буфера в richedit. А вот как в него копировать текст не знаю.
Помогите, пожалуйста.
KilkennyCat (2005-05-21 11:32:00) [13]Работать с буфером обмена, естественно.