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

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

21.03.2010, 18:04. Показов 1504. Ответов 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru