Spirit

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

21.03.2010, 18:04. Показов 1517. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru