Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Spirit

Работа OCX-компонента

21.03.2010, 18:04. Показов 1527. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Может кто-нибудь подсказать как сделать, чтобы при написании проекта OCX-компонент работал, а при компиляции в .exe - нет. Думаю это можно сделать с помощью поиска какого-либо окна (например окно рабочего проекта VB). Я думаю не сложно с помощью APi-функций реализовать поиск какого-либо окна по названию, а если оно меняется? Как поступить в этом случае?

Буду признателен за любую помощь.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2010, 18:04
Ответы с готовыми решениями:

Проверка регистрации OCX-компонента
Каким образом проверить, зарегистрирован ли OCX в ОС?

Регистрация OCX компонента в системе
Как сделать ? Что за утилиты пользовать ?

Обновление .OCX компонента через интернет
U menia est` proga, v kotoroi ya ispol`zuiu .OCX component A mne nuzno sdelat` obnovlenie ego po Internetu problema v tom, chto u...

6
Messir
21.03.2010, 19:31
Определяешь форму, в которой лежит данный компонент. Если он в контейнере, то соответственно ищешь родителя для контейнера и т.п. В конечном итоге дойдешь до формы. Вот. Теперь по хендлу формы определяешь, какой процесс ее создал (GetWindowThreadProcessId) и получаешь информацию об этом процессе. Например, перечисляешь все окна данного процесса. И если среди окон будет окно IDE, то значит мы в режимер отладки - иначе в режиме компиляции.
Spirit
22.03.2010, 09:22
Спасибо, попробую.
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
22.03.2010, 11:39
см. Ambient.UserMode
0
Spirit
22.03.2010, 12:07
т.е. если Ambient.UserMode = True - значит мы находимся в режиме отладки, а если = False - в режиме компиляции?

и еще, как можно закрыть форму на которой находиться этот OCX?
Spirit
22.03.2010, 12:14
я нашел как закрыть форму
Spirit
22.03.2010, 13:02
Сделал следующим образом:

1. Добавил функцию, которая показывает есть ли среди окон окно с текстом 'Microsoft Visual Basic'.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Function VBWindowInTaskList() As Boolean
Dim CurrWnd, Length As Long
Dim ListItem As String
 
VBWindowInTaskList = False
CurrWnd = GetWindow(UserControl.Parent.hwnd, GW_HWNDFIRST)
Do While CurrWnd <> 0
   Length = GetWindowTextLength(CurrWnd)
   ListItem = Space(Length + 1)
   Length = GetWindowText(CurrWnd, ListItem, Length + 1)
   If Length > 0 Then
      If InStr(1, ListItem, "Microsoft Visual Basic") <> 0 Then
         VBWindowInTaskList = True
         Exit Function
      End If
   End If
   CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
   DoEvents
Loop
End Function
2. В свойстве Show UserControla написал

Visual Basic
1
2
3
4
5
Dim hw As Long
If VBWindowInTaskList = False Then
   hw = UserControl.Parent.hwnd
   PostMessage hw, WM_CLOSE, 0, 0
End If
3. В проекте работает правильно. Если я откомпелирую OCX-компонент, открою новый проект, подкючу его - все нормально. Но когда компонент бросается на форму - она сразу закрывается (в проекте) =(

Почему?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2010, 13:02
Помогаю со студенческими работами здесь

Интеграция нового компонента *.ocx в Access 2003
Приветствую всех. Существует такая задача - создать таблицу внутри формы. Стандартная не устраивает слишком скудными свойствами. Хочется,...

Регистрация компонента Msflxgrd.ocx перед первым запуском программы
Здравствуйте. К своему сожалению выяснил, что почему-то на VB 2005 отсутствует аналог msflexgrid, который есть на VB6. Очень странно....

работа с одномерным массивом, компонента Тмемо
Даны натуральные числа al, а2,..., а10.Подсчитать количество чисел у которых остаток от отделения на М равен L (О &lt;L &lt;М-1). В...

работа с одномерным массивом, компонента тмемо
ДАНА последовательность целых чисел al,.., al0. Выяснить, какое число встречается встречается- положительное или отрицательное. В...

работа с одномерным массивом, компонента Tmemo
Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все числа, включительно до нуля. В Delphi в оконном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru