powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Имя аппликации из внешнего класса
10 сообщений из 10, страница 1 из 1
Имя аппликации из внешнего класса
    #33185447
Alexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Возникла необходимость в получении имени аппликации, поднявшей инстанс класса находящегося во внешнем dll-е, из самого класса.
Пример:
Аппликация aaa.exe и DLL - bbb.dll включающий в себя класс ссс.cls.
aaa.exe поднимает объект типа bbb.ccc.
Каким образом из класса ссс можно получить имя аппликации тобишь "aaa.exe", причем без добавления свойства в класс для передачи имени аппликации?

Есть серьёзные подозрения, что без WinAPI не обойтись.

Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33185526
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо что-то типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function GetWindowWord Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Integer
Const GWW_HINSTANCE = (- 6 )

Private Sub Form_Load()
    Dim ModuleName As String, FileName As String, hInst As Long
    'create a buffer
    ModuleName = String$( 128 , Chr$( 0 ))
    'get the hInstance application:
    hInst = GetWindowWord(Me.hwnd, GWW_HINSTANCE)
    'get the ModuleFileName:
    'enter the following two lines as one, single line:
    ModuleName = Left$(ModuleName, GetModuleFileName(hInst, ModuleName, Len(ModuleName)))
    'set graphics mode to persistent
    Me.AutoRedraw = True
    'show the module filename
    Me.Print "Module Filename: " + ModuleName
End Sub

...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33185549
Alexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkiades
Код: plaintext
1.
    hInst = GetWindowWord(Me.hwnd, GWW_HINSTANCE)

Проблема в том что в классе нет свойства hwnd
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33185597
Alexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkiades
Код: plaintext
1.
    hInst = GetWindowWord(Me.hwnd, GWW_HINSTANCE)

Проблема в том что в классе нет свойства hwnd
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33187985
Alexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели ни у кого нет идей на этот счет?
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33188418
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать определить через инстанс или GetParent.
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33190450
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо Me.hwnd подставь App.hInstance
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33191207
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
App.hInstance это хэндл процесса, если я не ошибаюсь, он к окнам отношения не имеет. Вообще, в библиотеке нет окон, можно в них не копаться. Попробуй поковырять GetStartupInfo.
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33192468
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyApp.hInstance это хэндл процесса...
Что хочет получить автор, цитирую:
Antonariyимя аппликации тобишь "aaa.exe",
То есть имя процесса в который загружена длл. Код приведенный Melkiades поместить в длл и заменить Me.hwnd на App.hInstance решает поставленую автором задачу.
...
Рейтинг: 0 / 0
Имя аппликации из внешнего класса
    #33193539
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сподобился проверить. Действительно, все работает.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Имя аппликации из внешнего класса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]