Проблема с хэндлом и ссылкой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Проблема с хэндлом и ссылкой

Сообщение zHackLeX » 20.01.2005 (Чт) 23:06

Народ, я, возможно, задаю глупый вопрос, но!

Как можно, зная текстовое имя переменной (класса) формы в собственном проекте VB6, получить ссылку на её объект?

Иными словами, пусть A$="Form2", можно ли переменной
Dim B As Object

Можно ли мне в переменную "В" поместить ссылочку на форму?
Даётся только СТРОКОВОЕ ИМЯ формы (совпадающее с именем класса).
Спасибо.
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 21.01.2005 (Пт) 3:15

Типа так:
Код: Выделить всё
Private Sub Form_Load()
Dim b As String
Dim fm As Object
Dim pointer As Long
b = "Form1"
For Each fm In Forms
    If fm.Name = b Then
        pointer = ObjPtr(fm)
    End If
Next
MsgBox pointer
   

End Sub

Только после компилирования в Native Code не будет работать.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.01.2005 (Пт) 8:00

Имхо zHackLeX надо чуть-чуть другое...
Код: Выделить всё
Private Sub Form_Load()
Dim A As String, B As Object
A = "Form1"
For Each B In Forms
    If B.Name = A Then Exit For
Next

MsgBox B.Caption

End Sub
Изображение

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 21.01.2005 (Пт) 23:51

Бли-и-и-ин!!!!!
:x
А я-то копался с API...
Но дело вот в чём:
Ссылку на форму нужно получить так:
1) Имеется ОСХ, с объявлением

Property Set DebugReference (lpObj as Object)
On Error Resume Next
Set mp_DR = lpObj
End Property

2) Желательно, чтобы в самом ОСХ в Инпутбоксе пользователь ввёл ИМЯ (NAME, not CAPTION) формы, и ссылка на неё организовалась в переменную mp_DR, что требуется для целей отладки.

То есть, можно ли получить ссылку на форму (объектную переменную), НЕ из проекта, в котором она создана?

Просто мой ОСХ-самоделка, написанный на VB, с данной функцией просто ЖУТКО пригодится...

(ОФФТОПОМ):Да, есть идеи, как можно подкинуть в Дельфы созданный на VB6 ОСХ-файл, и ещё: можно ли создать ОСХ в VB.net??

Всем сразу спасибо.
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 22.01.2005 (Сб) 2:35

"B" и является переменной которую можна передать через DebugReference.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.01.2005 (Сб) 8:25

zHackLeX писал(а):(ОФФТОПОМ):Да, есть идеи, как можно подкинуть в Дельфы созданный на VB6 ОСХ-файл, и ещё: можно ли создать ОСХ в VB.net??

Оба раза да. В делфи для этого есть меню Component -> Import ActiveX control.
Изображение

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 22.01.2005 (Сб) 19:43

Народ, то, КАК импортировать ОСХ в Дельфы я знаю.
Не знаю, почему в Дельфы НЕ ИМПОРТИРУЕТСЯ ОСХ, сделанный на бэйсике. Инсталл, Компиле, Инсталл неактивен... правой кнопкой по списку... инсталл...
Установлено успешно... А КОНТРОЛА НИГДЕ НЕТ!!!!!
Ну это в сторону.

Коллекция Forms доступна только в пределах ОДНОГО проекта.
А из ОСХ можно по имени формы получить ссылочку на неё?

_ОСХ В VB.NET??? KAK?
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 26.01.2005 (Ср) 22:18

Нет, правда, неужели настолько глупый вопрос?
Или никто не знает?

Как получить ссылку на окно из другого проекта, зная только его хэндл?

Или только имя класса? (текстовое)
Или имя переменной, содержащей ссылку на форму? (сама переменная из МОЕГО проекта недоступна, только из проекта, в котором создана форма)
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.01.2005 (Чт) 9:21

Да никак ты эту ссылку не получишь, если только тот проект её в твой не передаст.
А зачем тебе?
Изображение

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 01.02.2005 (Вт) 16:27

Ну... зачем...

Я ПИШУ ОТЛАДЧИК НА VB!!!
( :shock: :shock: :shock: )
(ой, а откуда столько обморочных?) :?

Ну, не совсем отладчик...
Ну, ОСХ, подключающийся к проекту и позволяющий без лишних проблем управлять им. ВСЕМ. Целиком.

(смотрю на реакцию) :oops:

:shock:

:cry:
Просто - было бы круто сделать то, о чём я пришу.
Так что, НИКАК??? :cry:
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.02.2005 (Пт) 19:55

Имхо никак. Только если расковыривать весь VB6 - имхо, задача для супермена.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 151

    TopList