Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое копирование информации в 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]

Работать с буфером обмена, естественно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо