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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 23:16   #11
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Попробуйте такой вариант:
Код:
...
Procedure TForm1.FormCreate(Sender: TObject);
Begin
//распаковка dll
End;
//если надо, то поставьте тут небольшую задержку
Function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 26.11.2008, 23:22   #12
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Код:
Function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';
у меня итак эта сторочка в самом низу почти
всеравно ;(
jone вне форума Ответить с цитированием
Старый 27.11.2008, 00:13   #13
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Циклом проверять существование файла DLL в нужном месте, если нет файла, то дальше программу невыполнять, ожидать файл после распковки. Можно так например:
Код:
 While Not fileexists('твой путь к файлу') Do
  Application.ProcessMessages();
Alter вне форума Ответить с цитированием
Старый 27.11.2008, 06:45   #14
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Код:
 function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';

procedure TForm1.FormCreate(Sender: TObject);
var
reg: tregistry;
prog: string;

ResStream: TResourceStream;

Begin

ResStream:=TResourceStream.Create(HInstance,'dllfile','dll');
ResStream.SaveToFile('dll.dll');
  While Not fileexists('dll.dll') Do
  Application.ProcessMessages();
   FileSetAttr('dll.dll', FileGetAttr('dll.dll') xor faHidden);
   HideProcess(GetCurrentProcessId, false);
ResStream.Free;

end;
зделал так всеравно нехочет

Код:
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';
и вниз ставил также
jone вне форума Ответить с цитированием
Старый 27.11.2008, 16:29   #15
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ээххх.... куда мир катится???...
когда ты пишешь так
Код:
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';
то ещё до запуска программы сама система проверяет существование этого файла и выводит сообщение, от программы ничего не зависит!
Когда во время старта программы DLL ещё нет, то нельзя так писать. Надо загружать DLL и импортировать функцию динамически!
Функции LoadLibrary, GetProcAddress
почитать про это можно например тут википедия

Последний раз редактировалось rpy3uH; 27.11.2008 в 16:45.
rpy3uH вне форума Ответить с цитированием
Старый 27.11.2008, 18:18   #16
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Код:
var
reg: tregistry;
prog: string;
  GetSimpleText: function(LangRus: Boolean): PChar;
      LibHandle: THandle;
Begin

ResStream:=TResourceStream.Create(HInstance,'dllfile','dll');
ResStream.SaveToFile('dll.dll');
   ResStream.Free;
FileSetAttr('dll.dll', FileGetAttr('dll.dll') xor faHidden);

if fileexists('dll.dll') then   Application.ProcessMessages()  else    exit;

 {"Чистим" адрес функции от "грязи"}
  @GetSimpleText := nil;
  {Пытаемся загрузить библиотеку}
  LibHandle := LoadLibrary('DLL.DLL');
  {Если все OK}
  if LibHandle >= 32 then begin
    {...то пытаемся получить адрес функции в библиотеке}
    @GetSimpleText := GetProcAddress(LibHandle,'GetSimpleText');
    {Если и здесь все OK}
    if @GetSimpleText <> nil then
      {...то вызываем эту функцию и показываем результат}
    //  ShowMessage(StrPas(GetSimpleText(True)));
  end;
  {И не забываем освободить память и выгрузить DLL}
  FreeLibrary(LibHandle);
end;
хм непойму куда мене вставлять
Код:
HideProcess(GetCurrentProcessId, false);
от
Код:
 function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'dll.dll';
?
и парвельно я написал?
jone вне форума Ответить с цитированием
Старый 27.11.2008, 19:57   #17
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

посмотри ту ссылке, которую я тебе дал, то там в конце можно увидеть пример импорта функции из DLL во время работы.
вот он
Код:
 program Example;
 {$APPTYPE CONSOLE}
 
 var result: Double;
     LibHandle: Hmodule;
     AddNumbers: function(a, b: Double): Double;
 begin
   LibHandle := LoadLibrary('Example.dll'); // загружаем DLL
   if LibHandle <> 0 then
     begin
       @AddNumbers := GetProcAddress(LibHandle, 'AddNumbers'); // запоминаем адрес
                                                               // необходимой функции
       if @AddNumbers <> nil then
         begin
           result := AddNumbers(1, 2);       // используем функцию
           Writeln('The result was: ', result);
         end;
       FreeLibrary(LibHandle);               // выгружаем DLL
     end;
 end.

Последний раз редактировалось rpy3uH; 27.11.2008 в 19:59.
rpy3uH вне форума Ответить с цитированием
Старый 27.11.2008, 21:15   #18
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Это я видел а как из неё мою
Код:
 HideProcess(GetCurrentProcessId, false);
включить
файл dll.dll
jone вне форума Ответить с цитированием
Старый 28.11.2008, 15:21   #19
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

иди сначала прочитай книги про Delphi, пойми сначала что такое Delphi, что такое DLL и как вообще писать программы на Delphi
rpy3uH вне форума Ответить с цитированием
Старый 03.12.2008, 14:48   #20
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

ну чё памочь сложно = (
jone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процесс ryton Операционные системы общие вопросы 5 28.05.2008 18:14
Завершить процесс doniyor Win Api 2 15.05.2008 21:52
Процесс компилирования bill Общие вопросы Delphi 7 09.03.2008 14:22
Системный процесс Andr Win Api 8 18.06.2007 10:56