![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Handle ActiveX объекта [D2005, XP, 2003]
voha © (2011-01-18 09:57:00)Доброго времени суток!
Я полный чайник в делфи, поэтому прошу помощи у гуру.
Пишу activeX для 1С, который отслеживает изменения буфера обмена windows через функцию SetClipboardViewer(HWnd). Но в этой функции есть параметр - handle окна, которое регистрируется в системе для получений сообщений буфера обмена. Как для activeX получить значение handle, которое присвоила система?
Спасибо.
vvoha (2011-01-18 13:58:00) [1]мне было бы проще :)
но не факт, то что этот activeX будет использоваться. проблема в том, чтобы пробросить отсканированный штрих код в терминальную сессию 1С запущенную на терминале сбора данных (ТСД). терминал может эмулировать клавиатуру либо бросать в буфер обмена. эмуляцию забраковал, для 1С не самый лучшый вариант. хочу попробовать с буфером.
Плохиш (2011-01-18 12:30:00) [2]Я всё-таки посоветую нанять программиста.
vvoha (2011-01-18 12:21:00) [3]
var frm: TForm;
begin
frm := TForm.Create(nil);
ShowMessage(IntToStr(frm.Handle));
где лучше разместить этот код?
Пропобовал в function AddInObject.Init(pConnection: IDispatch): HResult; stdcall;
но пхоже суда 1с обращается несколько раз при запуске - получается каждый создается форма и новый handle
vvoha (2011-01-18 12:02:00) [4]я визуально создал форму и перенес весь листинг в нее.
И. Павел (2011-01-18 11:23:00) [5]Что такое Form2?
Это форма, на основе которой создана ActiveX? Может быть это другая форма, и она еще не создана (Form2 = nil)?
Форма создается так:
var frm: TForm;
begin
frm := TForm.Create(nil);
ShowMessage(IntToStr(frm.Handle));
vvoha (2011-01-18 11:16:00) [6]При попытке получить handle формы 1С валится.
Handle:=Form2.Handle;
vvoha (2011-01-18 10:26:00) [7]Спасибо. Попробую переделать ActiveX на основе формы, если знаний хватит :).
И. Павел (2011-01-18 10:08:00) [8]На дельфи с окнами все просто.
Но на самый крайний случай всегда есть API: http://msdn.microsoft.com/en-us/library/ms632679%28v=vs.85%29.aspx.
И. Павел (2011-01-18 10:07:00) [9]Наверное, можно в ActiveX создать какое-нибудь окно (или просто создать ActiveX на основе формы) и использовать дескриптор этого окна. А в обработчике сообщения wm_DrawClipboard поместить функционал.