|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
Динамический доступ к функции и его параметрам18.01.2014, 04:51. Показов 1003. Ответов 18
Метки нет (Все метки)
Допустим: есть EditBox, в который я ввожу название интересующей меня функции.
Мне надо узнать: 1. Существует ли такое имя функции?(т.е. сама функция) 2. Какие аргументы у функции? 3. Тип возвращяемого значения функции? *4. Можно ли использовать эту функцию?(т.е. исходя из кол-ва аргументов и их типов создать доп. edit boxi для ввода данных, после чего "Выполнить" и функция должна сработать, типа динамически) Например введу Itoa, и мне должно показать: Существует, int, char*. Возможно ли вообще такое?... Т.е. конешно можно все предусмотренные для работы функции с их параметрами описать отдельным файлом, однако получится многовато. Если уж нельзя сделать то чего хочу, то буду делать громоздким способом. Добавлено через 15 минут Ой, забыл ещё один пункт: *5. Если в функции использован перечисляемый тип какого либо аргумента(как например в CreateWindow в файле winuser.h перечисляются типы окон, ну OVERLAPPED и т.д.), то можно ли их выдрать из самого файла описывающего функцию?(опять же динамически, создастся например listbox и нужно выбрать возможные вариации)
0
|
|
| 18.01.2014, 04:51 | |
|
Ответы с готовыми решениями:
18
Доступ к параметрам функции, потоки WinAPI
|
|
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
|
| 24.01.2014, 23:59 | |
|
Izual, как ты себе это всё представляешь сделать динамически? Я завис уже на первом пункте: лопатить все dll's на поиск определенной ф-ции, или как? Не факт, что ее название нигде не пересечется, хоть и вероятность того мала, но всё же. Делай громоздким способом.
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 25.01.2014, 01:45 [ТС] | ||
|
Ну в принципе я могу и "парсер" написать для сортировки данного файла, он мне выведет всё так как мне надо, для этого так сказать много ума не надо, просто логикой понять как составлен файл, какие последовательности и пусть потратить неделю и написать такую функцию. И всё же я спрашиваю о самой возможности, т.к. ты сказал что можно лапатить dll, тогда возможность получается есть?... Тут уже нужно примерно представлять что будет если так сделать и если по другому, и сравнивать. Громоздкий способ плох тем, что даже вытащив все функции файла winuser.h будут и другие, которые хранятся в другом файле... А тут уже универсальную функцию написать будет возможно тяжелее, или вообще не возможно, т.к. структуры файла, способ описания будут на столько сильно отличаться, что "чёрт голову сломает". Да и мне в "громоздком способе" придётся лишнюю память выделять, кучу процедур ещё к ним, которые не факт что сработают всегда, а вот если где то не сработает, то возвращяемое например значение придётся всё равно руками писать... тут в файле winuser.h такого нет(только типы аргументов).
0
|
||
|
|
||||||
| 25.01.2014, 11:44 | ||||||
|
по первому пункту могу предложить вариант как это делают отладчики (например OllyDbg) - искать все вызовы (call) на подобии
0
|
||||||
|
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
|
| 25.01.2014, 12:46 | |
|
Izual... Не парься... Если ты так хочешь разобрать какую-либо ф-цию на запчасти и посмотреть как она отработает, например, с разными флагами, то указывай пока это всё явно в программе, а со временем приложишь необходимый функционал пусть и минимальный.
Пункты 2, 3: понятия не имею, возможно ли такое в принципе. Не по теме: А вообще у тебя планы я вижу Оочень большие. )
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 26.01.2014, 04:55 [ТС] | ||
|
Планы - ну Наполеон рядом не стоял ![]() Добавлено через 16 минут Скажу так: Уже год делаю базу данных много составную, которая блин постоянно расширяется, уже замучался по 100 раз переделывать функции для рассчётов и т.п. В итоге навело на мысли, что нужно либо рекомпилятор "на месте", т.е. то что можно в Linux, т.к. там встроенный GCC с MinGW есть, либо.. а что либо, я на винде, тут его нет, поставлять компилятор с программой - это что то мне кажется слишком замудрённо для обычных юзеров... В итоге лучше я сам напишу собственный инетерпритатор через блочные схемы, но для этого нужно всё взвесить, чем сейчас и занимаюсь. Но что то функционал С++ или же знаний которые могу тут подчерпнуть - не достаточно для "правильной" реализации, вот и "кручу верчу" через левые варианты.
0
|
||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 26.01.2014, 20:15 | |
|
Izual похоже ты пытаешься изобрести велосипед с турбонадувом и вертикальным взлетом, может тебе проще скачать оффлайн версию MSDN и работать с ней, не придется гектары инфы перелопачивать, ну а для поиска опр. функ. не помешает просмотреть доки по PE формату , к примеру тут
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 26.01.2014, 22:57 [ТС] | ||
|
Офф лайн версия - один фиг парсер к ней писать, но опять же придётся перелапачивать, т.к. там не везде всё одинаково написано(стиль). По поводу ссылки - нифига не понял... Там что то так много всего что не понятно куда именно смотреть по интересующему меня вопросу) А оно вообще все мои пункты удовлетворит? (с 1 поста)
0
|
||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
||
| 26.01.2014, 23:15 | ||
|
0
|
||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 26.01.2014, 23:37 [ТС] | ||
|
На моём этапе(судя из того что я уже знаю) я наверно буду год изучать данную статью... Что то там намудрено ппц. Дизассембл это читерство имхо, "хакером" в понимании нынешнего времени становиться не хочется, лучше буду строить чем ломать =) Походу придётся мне парсер писать под собственную базу данных с свойствами функций.
0
|
||
|
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
||
| 27.01.2014, 01:18 | ||
|
0
|
||
|
Заблокирован
|
||||||
| 27.01.2014, 10:43 | ||||||
|
ТС, узнать, если такая функция, можно если эти функции например в DLL все. При импорте функций из DLL, ты указываешь строкой её название, например:
0
|
||||||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 27.01.2014, 15:55 [ТС] | ||
|
По поводу DLL ещё не знаю как с ней работать на Visual Studio 2005... Digit@ll, вызов функции как любой функции, идущей чтением блок схемы выполнения... Это турбо наддув^ ^
0
|
||
|
|
|||||||
| 27.01.2014, 22:08 | |||||||
|
по 1 вопросу я уже дал ответ, и он судя по всему единственный - берите принцип дизассемблеров\отладчиков и ищите все call'ы. 2 вопрос практически не реализуем. В том же OllyDbg можно лишь увидеть имена аргументов функции но не тип, к примеру
0
|
|||||||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
||
| 27.01.2014, 22:27 | ||
|
0
|
||
| 27.01.2014, 22:44 | |
|
0
|
|
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 27.01.2014, 22:52 | |
|
_lunar_ ... ну как я понял, Izual , хочет использовать MSDN и документированные функции WIN API , если же нет, ИМХО, его затея обречена на провал.
0
|
|
|
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
|
|||
| 28.01.2014, 05:50 | |||
|
0
|
|||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||
| 28.01.2014, 13:59 [ТС] | ||
0
|
||
| 28.01.2014, 13:59 | |
|
Помогаю со студенческими работами здесь
19
Построение динамического массива в функции и его перевод в глобальный динамический массив Функция: создать динамический массив, состоящий из n натуральных чисел и вернуть его из функции
Доступ к параметрам кнопки Доступ к параметрам программы и окружению Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|