Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 02:02   #1
attacker
 
Регистрация: 08.05.2011
Сообщений: 3
По умолчанию Как сделать форму в DLL ?

Скажите пожалуйста как сделать DLL, которая при внедрении в любое приложение будет вызывать свою форму ??

Например запускаем калькулятор, внедряем в него созданную DLL.
Вылезает форма с кнопкой, тыкаем на эту кнопку и она работает аналогично обычной кнопки в калькуляторе.
attacker вне форума Ответить с цитированием
Старый 17.03.2012, 09:32   #2
Rock-n-Rolla
Форумчанин
 
Регистрация: 11.01.2012
Сообщений: 177
По умолчанию

при загрузке DLL запускаем новый поток и уже в самом потоке создаём форму. взаимодействие с основной программой это уже совсем другая история
progromore.i2p - первый русскоязычный портал программистов в скрытосети
Rock-n-Rolla вне форума Ответить с цитированием
Старый 19.03.2012, 19:53   #3
attacker
 
Регистрация: 08.05.2011
Сообщений: 3
По умолчанию

Я тока начал изучение Си++. И я не могу понять ответ в одну строку без примера.
Вот например в билдере чтобы запихать форму в длл нужно:
1. Создать файл-проект Dynamic-link Library.
2. Добавить форму.
В Unit1.cpp добавить это:
Код:
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "Unit2.h"


#pragma argsused
TApplication *ThisApp = NULL;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
	return 1;
}
extern "C" void __declspec(dllexport)MyForm(void);
void MyForm(void)
{
	Form2 = new TForm2(NULL);
	Form2->ShowModal();
	delete Form2;
}
Дальше жму ктрл+ф9 и моя длл с формой готова.
Чтобы воспользоваться этой формой я создаю новый проект.(FCL Form Application)
В Unit1.h после private: добавляю это:
Код:
HINSTANCE LoadDLL;
typedef void (__import * FType(void));
FType * LoadForm;
А в событие OnActivate это:
Код:
LoadDLL = LoadLibrary("MyDLL.dll");
if (LoadDLL)
{
	LoadForm = (FType *)GetProcAddress(LoadDLL, "_MyForm");
	if (LoadForm)
       {
		LoadForm();
	}
}
Закидываю MyDLL.dll в папку Debug_Build с последнем проектом.. Запускаю, открывается две формы. То есть моя длл работает.

Но мне нужно не это. Мне нужно чтобы, например при помощи OMFGZ MultiDll Injector, я сделал Inject калькулятору и появилась моя форма.
Но калькулятор не знает ведь что ему нужно вызвать функцию из моей DLL =)))

Как сделать описанное мной выше только в среде Visual??
Дайте пожалуйста развернутый ответ с примером.
attacker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу сделать форму для ввода паролей! Для этого текст должен быть зашифрован в (*****) ! Как сделать vitaaly Visual C++ 2 12.02.2011 12:29
Как сделать форму Rabbiter Microsoft Office Excel 7 11.11.2009 10:19
Как передать данные в MDIChild-форму, загруженную из dll Shvonder Общие вопросы Delphi 0 18.03.2009 12:46
Как загрузить форму с DLL SeRhy Общие вопросы Delphi 7 18.11.2008 21:05
Как сделать форму? HAMMAN Помощь студентам 1 29.01.2008 22:11