Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Выгрузка .dll из приложения

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 26.06.2012, 16:23   #1
 Разведчик
Аватар для Boomber™
 
Boomber™ неизвестен в этих краяхBoomber™ неизвестен в этих краях
Регистрация: 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 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию 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пасибо:
Yukikaze (26.06.2012)
Старый 26.06.2012, 17:38   #3
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 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 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Re: Выгрузка .dll из приложения

Цитата:
Сообщение от Boomber™(2)Посмотреть сообщение
крайслер, не подходит

Откуда собираешься выгружать модуль?
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
  Ответить с цитированием
Старый 01.07.2012, 01:07   #5
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 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
 Разведчик
Аватар для DEACON78
 
DEACON78 никому не известный тип
Регистрация: 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
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Выгрузка .dll из приложения

Это не то что надо...
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] .ipa приложения user-x7 Apple iOS 4 28.02.2012 12:57
[Статья] Приложения Made_In_Aze Свободное обсуждение 5 28.10.2011 20:59

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 18:40.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net