Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2014, 20:55   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А с чего вы взяли что оно должно работать? Компонент не виндовый.
Человек_Борща вне форума Ответить с цитированием
Старый 03.07.2014, 23:29   #12
fedorov2012
Пользователь
 
Регистрация: 05.01.2013
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А с чего вы взяли что оно должно работать? Компонент не виндовый.
Потому что в исходниках:
Код:
TCustomVirtualStringTree = class(TBaseVirtualTree)
...
TVirtualStringTree = class(TCustomVirtualStringTree)
...

procedure WMCopy(var Message: TWMCopy); message WM_COPY;
...
procedure TBaseVirtualTree.WMCopy(var Message: TWMCopy);
begin
  CopyToClipboard;
end;

Последний раз редактировалось fedorov2012; 03.07.2014 в 23:31.
fedorov2012 вне форума Ответить с цитированием
Старый 03.07.2014, 23:31   #13
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
procedure WMCopy(var Message: TWMCopy); message WM_COPY;
а прописано у кого?
eval вне форума Ответить с цитированием
Старый 04.07.2014, 00:11   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Потому что в исходниках:
А что с того? Нельзя копировать то, не зная что.
Загляните в нутро CopyToClipboard, увидите что оно копирует туда объект как IDataObject, предполагая тем самым Ctrl+V в другой StringTree.
Человек_Борща вне форума Ответить с цитированием
Старый 04.07.2014, 00:40   #15
fedorov2012
Пользователь
 
Регистрация: 05.01.2013
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Загляните в нутро CopyToClipboard, увидите что оно копирует туда объект как IDataObject, предполагая тем самым Ctrl+V в другой StringTree.
Ну да, т.е. получается в буфер он копирует, просто остается в ставить из этого буфера в StringTree? А что если сделать копирование в буфер, а затем уже в своем процессе вставить эти данные в StringTree или же копирование идет по ссылкам, т.е. не физические значения копируются а указатели на объекты?
fedorov2012 вне форума Ответить с цитированием
Старый 04.07.2014, 02:31   #16
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от fedorov2012 Посмотреть сообщение
Ну да, т.е. получается в буфер он копирует,
Неа. Он умеет вызывать CopyToClipboard в обработчике сообщения WMCopy. И не более того.
northener вне форума Ответить с цитированием
Старый 04.07.2014, 02:56   #17
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Ну да, т.е. получается в буфер он копирует, просто остается в ставить из этого буфера в StringTree?
Не проверял. Попробуйте Раз уж там олька и виндовые интерфейсы то вполне может таким образом переместить данные одного ПО в другое.
Человек_Борща вне форума Ответить с цитированием
Старый 04.07.2014, 10:03   #18
fedorov2012
Пользователь
 
Регистрация: 05.01.2013
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Попробуйте
Т.е. правильно ли я понимаю мы в нашем процессе создаем свой VirtualStringTree, затем в удаленном копируем через WM_COPY, а далее в своем уже через WM_PASTE выполняем вставку?
fedorov2012 вне форума Ответить с цитированием
Старый 04.07.2014, 10:40   #19
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Т.е. правильно ли я понимаю мы в нашем процессе создаем свой VirtualStringTree, затем в удаленном копируем через WM_COPY, а далее в своем уже через WM_PASTE выполняем вставку?
Да. Хотябы руками CTRL+C и CTRL+V
Человек_Борща вне форума Ответить с цитированием
Старый 04.07.2014, 22:52   #20
fedorov2012
Пользователь
 
Регистрация: 05.01.2013
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Да. Хотябы руками CTRL+C и CTRL+V
не получается - я так понял копирование возможно внутри одного процесса
GetTreeFromDataObject вызывается внутри VirtualStringTree.pasteFromClipboar d;

Код:
function TBaseVirtualTree.GetTreeFromDataObject(const DataObject: 
IDataObject): TBaseVirtualTree;
...
if Assigned(Data) then
      begin
        if Data.Process = GetCurrentProcessID then
          Result := Data.Tree;
        GlobalUnlock(Medium.hGlobal);
      end;
...
end
Что делать?
fedorov2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зная ProcessID получить Handle главной формы? NikLik Win Api 8 27.08.2021 21:29
Как узнать путь к приложению, зная его Handle? Night_Devil Общие вопросы Delphi 4 17.03.2012 01:26
Как найти название класса процеса зная его handle? Dazz Win Api 3 16.03.2010 11:35
Как нажать на Button в чужом приложении зная его HANDLE SeRhy Win Api 2 04.02.2009 13:43
Как получить handle главного окна, зная имя приложения? Altera Win Api 8 22.12.2008 18:52