 |
Выгрузка .dll из приложения - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
26.06.2012, 16:23
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 28.04.2012
 Сообщений: 5
 Популярность: -168
 Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
|
Выгрузка .dll из приложения
//del
Последний раз редактировалось Boomber™; 20.08.2012 в 17:53.
|
|
|
26.06.2012, 17:25
|
#2
|
|
|
|
Старший сержант
|
 Регистрация: 04.02.2011
 Сообщений: 198
 Популярность: 12244
 Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
|
Re: Выгрузка .dll из приложения
Код:
using System;
using System.Runtime.InteropServices;
namespace App
{
class Program
{
[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
static extern IntPtr LoadLibrary(string lpFileName);
[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
static extern bool FreeLibrary(IntPtr hModule);
[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);
[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
static extern uint GetLastError();
delegate void TestDelegate();
static void Main(string[] args)
{
Console.WriteLine("Application: begin.");
IntPtr hModule = LoadLibrary("dll.dll");
if (hModule == IntPtr.Zero)
{
Console.WriteLine("Application: Can't load DLL. Error # {0}.", GetLastError());
}
else
{
IntPtr ptrTest = GetProcAddress(hModule, "Test");
if (ptrTest == IntPtr.Zero)
{
Console.WriteLine("Application: Function 'Test' not found in DLL.");
}
else
{
TestDelegate Test = Marshal.GetDelegateForFunctionPointer(ptrTest, typeof(TestDelegate)) as TestDelegate;
/// Работа с DLL //////////////////////////////////////////
Test();
///////////////////////////////////////////////////////////
}
FreeLibrary(hModule);
}
Console.WriteLine("Application: end.");
Console.ReadKey();
}
}
}
Не?
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
|
|
|
Пользователь сказал cпасибо:
|
|
26.06.2012, 17:38
|
#3
|
|
|
|
Сержант
|
 Регистрация: 01.10.2011
 Сообщений: 128
 Популярность: 5723
 Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
|
Re: Выгрузка .dll из приложения
По сути из всего примера нужен только метод FreeLibrary(hModule);, ну и через через класс Process получить хендл модуля
Но мне пример сам по себе понравился, из за динамической загрузки неуправляемого когда, взял на заметку
ЗЫ Хотя если подумать то всеравно ничего не выйдет, там надо закрывать поток с модулем, а это может не благоприятно повлиять на работу программы
________________
Talk is cheap. Show me the code
— Linus Torvalds
Последний раз редактировалось Yukikaze; 26.06.2012 в 17:41.
|
|
|
30.06.2012, 20:55
|
#4
|
|
|
|
Старший сержант
|
 Регистрация: 04.02.2011
 Сообщений: 198
 Популярность: 12244
 Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
|
Re: Выгрузка .dll из приложения
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
|
|
|
01.07.2012, 01:07
|
#5
|
|
|
|
Сержант
|
 Регистрация: 01.10.2011
 Сообщений: 128
 Популярность: 5723
 Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
|
Re: Выгрузка .dll из приложения
Boomber™(2), ну так поделись со всеми
________________
Talk is cheap. Show me the code
— Linus Torvalds
|
|
|
12.07.2012, 16:59
|
#6
|
|
|
|
Разведчик
|
 Регистрация: 29.06.2012
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Выгрузка .dll из приложения
вот у меня есть код, обычной выгрузки из ресурсов программы.
Код:
string file;
file = "C:\\файл.тип";
System.IO.File.WriteAllBytes(file, название_проекта.Properties.Resources.файил из ресурсов);
его также можно скрыть
Код:
System.IO.File.SetAttributes(file, System.IO.FileAttributes.Hidden);
и удалить когда выходим
Код:
System.IO.File.Delete(file);
|
|
|
12.07.2012, 17:15
|
#7
|
|
|
|
Старший сержант
|
 Регистрация: 29.07.2011
 Сообщений: 197
 Популярность: 8989
 Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
|
Re: Выгрузка .dll из приложения
Это не то что надо...
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] .ipa приложения
|
user-x7 |
Apple iOS |
4 |
28.02.2012 13:57 |
[Статья] Приложения
|
Made_In_Aze |
Свободное обсуждение |
5 |
28.10.2011 20:59 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:45.
|
 |