Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Вниз

Как получить экземпляр класса зная его handle   Найти похожие ветки 

 
miklenew   (2008-05-31 19:05) [0]

Мож кто подскажет.
Есть класс.
Есть экземпляр этого класса.
У экземпляра этого класса есть handle.
Зная его handle можно получить сам экземпляр класса.


 
Leonid Troyanovsky ©   (2008-05-31 19:10) [1]


> miklenew   (31.05.08 19:05)  

> У экземпляра этого класса есть handle.

Что за таинственность?
Какой класс, какой хендл, зачем получать.

--
Regards, LVT.


 
DVM ©   (2008-05-31 20:05) [2]

В конференции по WinAPI единственный класс, который может быть как то связан с хэндлами - это оконный класс.


 
miklenew   (2008-05-31 20:25) [3]

Ну не хотел пугать.
Щас программирую не на delphi.
Система называется Axapta язык X++. Очень похож на C++.
Там практически все классы открыты.
Но есть очень мало (процента 2) закрытых.
Так вот есть один закрытый класс. (Editor)
У него есть handle.
Есть другой класс EditorScript(открытый). Чтобы обратиться к методам EditorScript на входе нужен Editor.
Экзэмпляр класса Editor живёт на всём протяжении работы программы до закрытия. Я могу хитро пересохранить этот Editor. Но это дополнительные телодвижения.
Так вот и хочется по нормальному получить через winApi по handle этот Editor. Но чёто никак не найду нужную api функцию.


 
Leonid Troyanovsky ©   (2008-05-31 20:41) [4]


> miklenew   (31.05.08 20:25) [3]

Очень быстро, я ничего не понял.

Есть, например, окна - у них есть хендлы.
А, кроме того, есть, например, хуки, объекты GDI и  ядра.

Чего тебе надобно, старче?

--
Regards, LVT.


 
DVM ©   (2008-05-31 20:52) [5]


> Так вот и хочется по нормальному получить через winApi по
> handle этот Editor

Editor - это окно? Или что еще? Что это?

Если это просто класс (как класс в делфи или си), то WinApi знать не знает ничего о таких классах.

А хэндл окна получить можно очевидно с помощью FindWindow()


 
miklenew   (2008-05-31 21:09) [6]

Ну я так понимаю handle есть у любой структуры которая содержиться в памяти. Не зависимо окно это или класс. Потоки это тоже экземпляры классов. Покрайней мере в Axapte handle есть и у класса(handle) и у окна(hwnd). Но не посредственно в Axapt-e winApi мало где используется (мест 50-60).  
Класс это всего лиши набор переменных(разного типа). Можно даже до создания экземпляра класса узнать сколько система под него выделит памяти.
Пусть в классе будут три переменных
Точно щас не помню сколько байт под какой тип
integer x;(4 байта)
boolean y;(1 байта)
integer z; (4 байта)
Но в результате класс в памяти будет занимать 9 байт.
В инете нашёл такую статью "Как получить список запущеных процесов"
http://www.rsdn.ru/article/qna/baseserv/enumproc.xml
Но скорее всего это мне не понадобиться так как handle как определить я знаю. Но вот как получить сам объект ни как не найду.


 
Leonid Troyanovsky ©   (2008-05-31 21:14) [7]


> miklenew   (31.05.08 21:09) [6]

> Ну я так понимаю handle есть у любой структуры которая содержиться
> в памяти.

Заблуждение.

--
Regards, LVT.


 
miklenew   (2008-05-31 21:15) [8]

to DVM Editor это класс. Такой же класс как в delphi и си. Просто все классы в Axapt-e по иерархии идут от Object. У object есть handle, ну соответственно он есть и у всех наследников, т.е. у всех классов.


 
miklenew   (2008-05-31 21:18) [9]

to Leonid Troyanovsky.
Ну может не у любой. Согласен не точное утверждение.
Более точно не могу. Не готов.


 
{RASkov} ©   (2008-05-31 21:24) [10]

> [8] miklenew   (31.05.08 21:15)

Что для тебя есть Хэндл в виндовс? И что за хэндлы у Axapta"ских Object"ов...


 
Leonid Troyanovsky ©   (2008-05-31 21:28) [11]


> miklenew   (31.05.08 21:18) [9]

> Более точно не могу. Не готов.

Ну, а что тебе надобно, старче.

--
Regards, LVT.


 
miklenew   (2008-05-31 21:28) [12]

handle - для меня идентификатор объекта в памяти.


 
{RASkov} ©   (2008-05-31 21:31) [13]

> [12] miklenew   (31.05.08 21:28)

Точно не готов)


 
{RASkov} ©   (2008-05-31 21:35) [14]

> [12] miklenew   (31.05.08 21:28)

В принципе.... идентификаторы - он все в памяти...
Хэндл - это число(уникальный идентификатор окна) в виндовс.


 
Leonid Troyanovsky ©   (2008-05-31 21:37) [15]


> {RASkov} ©   (31.05.08 21:35) [14]

> Хэндл - это число(уникальный идентификатор окна) в виндовс.

Окно здесь ни причем.

--
Regards, LVT.


 
{RASkov} ©   (2008-05-31 21:43) [16]

> [15] Leonid Troyanovsky ©   (31.05.08 21:37)

?
Как это не причем? )
Я ему вопрос в [10] задавал.... в [12] он вроде как ответил.... ну и тут [14])
Может и не причем для егошних хэндлов, но тогда пусть мой пост поймет, как намек, на то, что в винапи другие хэндлы....
:)


 
miklenew   (2008-05-31 21:44) [17]

Вот ссылка хорошая для определения
http://www.codenet.ru/progr/bcb/Handle-Types.php
Где-то ещё видел иерархию но щас чё-то не найду
Там было handle вверху.
Далее hwnd - handle window
hdc - handle device context
и ещё помомойму один или два.


 
{RASkov} ©   (2008-05-31 21:49) [18]

В виндовс - хэндлы, в любом случае, имеют только оконные элементы(классы, типы)... Даже "долбанная" метка STATIC и та считается окном и имеет "ручку"(handle) в системе....


 
Leonid Troyanovsky ©   (2008-05-31 21:54) [19]


> {RASkov} ©   (31.05.08 21:43) [16]

> Как это не причем? )
> Я ему вопрос в [10] задавал.... в [12] он вроде как ответил.
> ... ну и тут [14])

Хз, как он понял. Я этого не понял :)

--
Regards, LVT.


 
{RASkov} ©   (2008-05-31 22:01) [20]

> [19] Leonid Troyanovsky ©   (31.05.08 21:54)

:) Ну и ладно...
По моему вопрос автора потерял смысл.... Это если про Хэндл Object"а из Axapta язык X++ with WinAPI. :)


 
Leonid Troyanovsky ©   (2008-05-31 22:07) [21]


> {RASkov} ©   (31.05.08 22:01) [20]

> По моему вопрос автора потерял смысл.... Это если про Хэндл
> Object"а из Axapta язык X++ with WinAPI. :)

Хороший вопрос.
Хотя, непонятно, чего он задан здесь.

--
Regards, LVT.


 
miklenew   (2008-05-31 22:09) [22]

to Leonid Troyanovsky ничуть.
Помойму просто это вы на окнах заморочились.
Про окна то литературы много.
У меня есть программа которая может перебрать все открытые окна в Axapt-e(Axapt-a - основана на mdi).
С окнами просто суй hwnd в нужную функцию и действия визуально отобразяться на окне.
А вот с классом сложнее поэтому и спросил. Думал мож кто копался.
Похоже нет.


 
Умища   (2008-06-01 01:52) [23]


> miklenew   (31.05.08 22:09) [22]
> to Leonid Troyanovsky ничуть.Помойму просто это вы на окнах
> заморочились.Про окна то литературы много.У меня есть программа
> которая может перебрать все открытые окна в Axapt-e(Axapt-
> a - основана на mdi).С окнами просто суй hwnd в нужную функцию
> и действия визуально отобразяться на окне. А вот с классом
> сложнее поэтому и спросил. Думал мож кто копался.Похоже
> нет.


Как уже сказали Handle (дескриптор) - это просто идентификатор.
Если для какой-либо сущности определены методы определения самой сущности по идентификатору, то тогда эту сущность можно определить. В общем случае - нет.


 
Kolan ©   (2008-06-01 11:36) [24]

Просто надо сходить на форум мастеров X++ (Хэ плюс плюс), и там, тебе автор, расскажут как сделать сабж.


 
miklenew   (2008-06-01 12:22) [25]

Какая разница какой язык. Я программировал и на VС++, VB и на Delphi.
Если ты знаешь как это сделать хоть на одном языке, ты это сможешь сделать на другом. Просто с winApi мне практически не приходилось работать.
Странно мне слышать от мастеров WinApi, что winApi в одном языке чем то отличается от winApi в другом.
Вообщем если у кого-то есть предложения в какую сторону копать буду рат выслушать. А впустую тему засорять не надо. Пусть лучше пустой будет.


 
{RASkov} ©   (2008-06-01 13:13) [26]

> [25] miklenew   (01.06.08 12:22)
> Вообщем если у кого-то есть предложения в какую сторону
> копать буду рат выслушать

Сначало нарой для себя, что есть хэндл в "твоем" супер-пупер хэ языке.....

> Просто с winApi мне практически не приходилось работать.

Вот отсюда и твоя "озлоба" теперяшняя на всех.... :)


 
miklenew   (2008-06-01 13:25) [27]

Ещё раз прошу кому нечего сказать не надо.
Raskov просто я человек ответственный и никогда бы не позволел себе написать то что написал в последнем посте.
Я знаю что ты щас будешь искать признаки озлобы в моих постах чтоб что-то кому-то доказать.
Не надо не трудись.
Обидеть я тебя не хочу. Может ты офигенный специалист.
Но просто эту тему ты видно не рыл. Так зачем эту тему переводить в политической русло.
ок.


 
{RASkov} ©   (2008-06-01 13:35) [28]

> [27] miklenew   (01.06.08 13:25)
> Обидеть я тебя не хочу.

Можешь не сомневаться, но у тебя это все равно не выйдет) Маскимум потеряешь от меня помощь...

> Но просто эту тему ты видно не рыл.

Видно...., так же видно, что и другие здесь "роют" другую тему.... форум-то по Дэлфи.... Да, ВинАПИ - оно и в африке ВинАПИ, но.... как твой Хэ смотрит на винапи? кому это известно? Я вот у тебя и интересуюсь, а ты думаешь, что мы тут друг-друга обижаем? ну и думай себе.... Удачи.

> Не надо не трудись.

Не вопрос :)


 
miklenew   (2008-06-01 13:43) [29]

пример
client static public HWND getWindow(HWND _hWnd, int _cmd)
{
   DLL         DLL;
   DLLFunction DLLFunction;
   HWND        hWnd;
   ;

   DLL = new DLL("USER32");
   DLLFunction = new DLLFunction(DLL,"GetWindow");
   DLLFunction.returns(ExtTypes::DWord);//на выходе

   DLLFunction.arg(ExtTypes::DWord,ExtTypes::DWord);//на входе
   hWnd = DLLFunction.call(_hWnd,_cmd);//получаем результат

   return hWnd;
}


 
{RASkov} ©   (2008-06-01 13:53) [30]

> [29] miklenew   (01.06.08 13:43)

Это пример чего, для чего и на чем? ...на си что ли.... или на Axapta язык X++?

Вот смотри:

type
 TObject = class //Класс без винхэндла
....
 end;

 TMyObject = class //Класс с "хэндлом", но он никакого отношения не имеет к винапи
......
  Handle: THANDLE;
 end;

 TWinControl = class(TControl)  //Класс, имеющий хэндл тот, что понимает винапи.
....  
   property Handle: HWnd read GetHandle; //можно проследить всю цепь получения "ручки" в Win.
....
 end;

Так же незабываем поглядывать в [2]


 
{RASkov} ©   (2008-06-01 13:57) [31]

Более того.... нет никакого смысла этой ветки в "начинающих", раз уж ее убрали из винапи, то только в "прочих" можно еще чего-то обсуждать... ибо Хэ)


 
sniknik ©   (2008-06-01 14:10) [32]

miklenew   (01.06.08 13:43) [29]
> пример
это пример не winapi, а похоже пример использования какойто "местной"  dll
> hWnd = DLLFunction.call(_hWnd,_cmd);//получаем результат
функции call в "Win32 API Interface Unit" (описателях функций winapi) нет, и получается это своя "местечковая" функция, такая же dll, и переменная типа хендл просто переменная, ничего общего с winapi не имеющая.
не, оно конечно возможно, что эта функция возвращает хендл какогото окна, но ни один спец по winapi, незнающий что это за библиотека/функция этого не определит. т.что тебя правильно послали, на тот форум... и обижаешься ты совсем не "к месту".


 
miklenew   (2008-06-01 14:23) [33]

Это на x++. Я же говорил x++ очень похож на с++.
Это пример использования функций winApi. Легко ведь. Только нужную библиотеку и функцию не найду которая смогла бы мне вернуть что нибудь из чего я смогу получить Object.
Класс в Axapt-е создаётся просто.
Class1 example = new Class1();
После этого можно считывать handle.
example.handle();
Но у него нет hwnd. Логично
А у формы(окно) есть hwnd, но нет handle.
Форма с классом никак не связана.
sniknik да DLLFunction это класс оболочка для удобного обращения с любыми dll-ми. Указывай только к какой dll подключаться. Какая функция нужна.
Создаёшь описатель входных и выходных параметров.
А дальше вызываешь call. Ну что вроде команды фас.
Отдал нужные входные параметры для dll функции call(параметр1, параметр2 и т.д.) и получил выходные.
Кстати не всегда идёт считывание result = call(). Так как есть такие dll функции которые не возращают, а изменяют входные.
Что-то типа call(пар1, пар2) и после этого нужный нам результат находиться в пар1 или пар2. Т.е. dll функция просто изменила входной параметр.


 
{RASkov} ©   (2008-06-01 14:29) [34]

> [33] miklenew   (01.06.08 14:23)
> Это пример использования функций winApi. Легко ведь. Только
> нужную библиотеку и функцию не найду которая смогла бы мне
> вернуть что нибудь из чего я смогу получить Object.

WinAPI - знать не знает ни о каких Object"ах.... [2] читал?
Настырный, ладно посмотри на GetClassХххх вчасности на GetClassName(), только смысла тебе от них? Хотя...может и повезет)


 
ketmar ©   (2008-06-01 14:53) [35]

верните тему про самолётик, там интересней!

---
All Your Base Are Belong to Us



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.009 c
15-1211817205
Tualatin
2008-05-26 19:53
2008.07.13
ресурс


15-1212063606
Reindeer Moss Eater
2008-05-29 16:20
2008.07.13
asus P5K PRO не видит камеру через 1394


15-1211959878
Azize
2008-05-28 11:31
2008.07.13
Веб-сайты, которые изменили мир. Топ-15


2-1213166267
Amid
2008-06-11 10:37
2008.07.13
Веб Сервис на Делфи 7, клиент на С++Буилдер 6 ?????


15-1211952988
Ega23
2008-05-28 09:36
2008.07.13
С Днём Пограничника!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский