Форум: "Corba";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Внизне копируються данные из TWebBrowser Найти похожие ветки
← →
Dysan © (2005-11-07 13:53) [0]Значит столкнулся с такой проблемой.
Писал программу в Win2000
Требовалось из TWebBrowser скопировать весь текст и создав документ Word в него вставить! и Все работало посредством вот таких не хитрых команд:
WB.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER);
WB.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER);
WB.ExecWB(OLECMDID_CLEARSELECTION, OLECMDEXECOPT_DONTPROMPTUSER);
Переустановил систему на WinXP SP2 и все... работать перестало :(
а точнее не срабаотывает комманда WB.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER);
Хоть тресни но в буфере обмена остаеться предыдущий скопированный текст! :(
Помогите решить трабл!
← →
supervk © (2005-11-08 09:46) [1]У меня и в XP и в 2000 работает почти тоже самое:
OleInitialize(nil);
Explorer.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER);
Explorer.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER);
Вручную вставлять пробовал?
← →
Dysan © (2005-11-08 12:11) [2]Вручную пробовал вставляет предыдущий скопированный текст.
да вот хоть тресни... и OleInitialize(nil); не помогает! :(
не работает именно комманда копирования!!! а все остальные нормально
что то видимо не хватает.
← →
SuperVK © (2005-11-09 04:12) [3]Сделай новый проект. Добавь на него TWebBrowser и кнопку с кодом:
OleInitialize(nil);
WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER);
WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER);
Проверь, работает или нет.
← →
Daysn (2005-11-09 12:34) [4]Попробовал, проверил! Не работает!
что за фигня... :(
← →
umbra © (2005-11-09 15:26) [5]это политика безопастности XP sp2. Чтобы это было возможно, надо где-то найти соответствующую галочку и изменить ее на противоположную. точнее - что и где я не знаю
← →
SuperVK © (2005-11-10 04:17) [6]Вообще странное дело. Вот что я вычитал по этому поводу:
Q: Paste works fine, but Cut and Copy won"t work. What"s the problem?
A: You have to add the following line to the bottom of your unit:
initialization
OleInitialize(nil);
finalization
OleUninitialize;
А по поводу политик и вообще проверки, команды копирования попробуй следующий код:if WebBrowser1.OleObject.Document.queryCommandEnabled("Copy") then
ShowMessage("Команда copy разрешена")
else ShowMessage("Команда copy ЗАПРЕЩЕНА!");
Только не забудь перед её выполнением предварительно чего-нибудь ручками выделить в WebBrowser1.
← →
Dysan © (2005-11-10 11:54) [7]я решил проблему по другому
т.к. мне надо было срочно то я наверное сделал коряво но мне главное был результат.
я скачал с тори компонент реализующий тотже TWebBrowser только с дополнительными функциями. так вот у него была сделана команда копи вот так:
InvokeCmd(FALSE, OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut);
где
procedure TEmbeddedWB.InvokeCMD(InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New(PtrGUID);
if InvokeIE then PtrGUID^ := CLSID_WebBrowser else
PtrGuid := PGUID(nil);
if Document <> nil then
try
Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except end;
Dispose(PtrGUID);
end;
и работает!
хотя если приглядеться то принципиальной разници я так и не увидел
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut); - помоему тоже самое что и ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER);
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c