Перейти к содержимому


Фотография

Создание DLL в Visual C++


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Axel218

Axel218

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:Астана

Отправлено 04 January 2009 - 18:04

Смотрю, здесь есть толковые программисты :)
Собственно вопрос: как создать в VC++ 6.0 такую библиотеку, которая выполнит свой код один раз? Тоесть, в Delphi создать такую библиотеку просто - достаточно написать свой код в конструкции begin...end. В Спп почему-то так не выходит. Я портирую один свой GTA'шный патч из Delphi, и код во время загрузки игры выполняется несколько раз. Вот, допустим, код:


#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
					   DWORD  ul_reason_for_call, 
					   LPVOID lpReserved
					 )
{
	MessageBox(NULL, "We are cool", "Test", MB_OK);
	return TRUE;
}

В нём MessageBox вылетает несколько раз. Как быть?

P.S. Использую ASI Loader.

#2 Akmal

Akmal

    Активный участник

  • Пользователи
  • PipPipPip
  • 256 сообщений
  • Пол:Мужчина
  • Город:Kazakhstan\UKO

Отправлено 04 January 2009 - 19:39

Вроде такая тема была на форуме санбилдера. Да точно,вот он. :D
Asus P5KC/Asus EN8800 GTS 512/2GB PQI 800Mhz/HDD500+400+120/BP 500W

#3 Axel218

Axel218

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:Астана

Отправлено 05 January 2009 - 06:11

Это не та тема, там вопрос лежит об общем создании DLL, это-то я могу.

#4 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 05 January 2009 - 06:20

Это потому что DllMain вызывается несколько раз (на загрузку, выгрузку библиотеки и т.д.). Тебе правильно дали ссылку, посмотри этот код. Тебе нужно вставить свой код после case DLL_PROCESS_ATTACH:

#5 Axel218

Axel218

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:Астана

Отправлено 05 January 2009 - 06:28

Да, точняк, попробовал сразу после написания своего поста вставить код в этот кейз, пошло :) Спасибо всем.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных