На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Dll в памяти, , как ее найти?
    Здраствуйте!

    У меня вопрос такого плана:
    Существует ли возможность отследить загружена ли в память определенная Dll,ее имя зарание известно.

    Если кто знает, что существует такая возможность или где можно прочесть такую инфу,
    подскажите.

    Программирую на Delphi 5.
    Заранее спасибо!
      if GetModuleHandle('имя библиотеки') = 0 then
      <библиотека НЕ загружена>
      else
      <библиотека загружена>
        У меня прблема такая : если DLL в папке с пргой не найдена, то вылезает сообщение Форточек о том, что не найдена DLL и прога не запускается :(
        А можно ли зделать так, что ента ошибка не вылазела и прога запускалась, а уж из нее писать о ненайденой DLL
          Грузи динамически (LoadLibrary/SafeLoadLibrary + GetProcAddress)
            СпасибоScorpy :D
            Но не мог бы ты сказать об этом по подробней :unsure:
              Kanes, очень просто.

              ExpandedWrap disabled
                type
                  TMyProc = procedure(const N: Integer); stdcall;
                 
                procedure TForm1.Button1Click(Sender: TObject);
                var
                  MyProc: TMyProc;
                  Lib: THandle;
                  DLLName: string;
                begin
                  DLLName := 'mydll.dll';
                  if FileExists(DLLName) then
                  begin
                    Lib := LoadLibrary(PChar(DLLName));
                    if Lib < HINSTANCE_ERROR then
                      Win32Check(False);
                      // или
                      // ShowMessage('Не удалось загрузить библиотеку ' + DLLName);
                 
                    try
                      MyProc := GetProcAddress(Lib, 'MyProc');
                      if Assigned(MyProc) then
                        MyProc(123);
                    finally
                      FreeLibrary(Lib);
                    end;
                  end;
                end;
              Сообщение отредактировано: s-mike -
                ExpandedWrap disabled
                  Var
                    LibHandle:Cardinal;
                    Proc:Procedure(сдесь параметры если есть);
                  ...
                    LibHandle:=LoadLibrary('твоя dll');
                    If LibHandle<>0
                    Then
                      Begin
                        @Proc:=GetProcAddress('имя функции/процедуры');
                        Proc(параметры если есть); //вызов нужной функции/процедуры
                      End;
                  ...


                примерно так... ;)
                  Scorpy, твой код работать не будет.
                  ExpandedWrap disabled
                    GetProcAddress('имя функции/процедуры');

                  В GetProcAddress указывается еще и хэндл библиотеки.
                  Сообщение отредактировано: s-mike -
                    Цитата s-mike @
                    1.


                    Var
                    ...
                    Proc:Procedure(сдесь параметры если есть);

                    Объявление такого рода компилятор не проглотит.


                    Проглотит ;)
                      Цитата s-mike @
                      Объявление такого рода компилятор не проглотит.

                      а у меня работает :blink:
                      Цитата s-mike @
                      В GetProcAddress указывается еще и хэндл библиотеки

                      пример собран на коленке, без IDE, чтобы показать принцип
                      если идти дальше то и MyProc перед запуском на Nil нужно проверять <_<
                        Цитата Scorpy @
                        если идти дальше то и MyProc перед запуском на Nil нужно проверять <_<

                        Согласен, исправил ;)
                          s-mike,Scorpy
                          Огромное вам пасиба - ловите + :D
                            Offtop: Необходим компонент user32.dll:updatelayeredwindow.

                            Для запуска программы необходим компонент 'user32.dll:updatelayeredwindow'.
                            Я так понимаю, он отсутстует в версиях до 2000. Вопрос такой: возможно ли решить эту проблему в Windows Me? Или спасет только установка 2000/XP?
                            Заранее спасибо.
                            P.S Зашел на этот форум, т. к. имхо тут такие вопросы не будут звучать дико :)
                              Цитата
                              спасет только установка 2000/XP?

                              :yes:
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0440 ]   [ 16 queries used ]   [ Generated: 27.04.24, 21:22 GMT ]