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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 22:07   #1
RKT878
Новичок
Джуниор
 
Регистрация: 25.09.2011
Сообщений: 1
По умолчанию Запуск программы, помещённой в массив байт, в отдельном потоке

Здравствуй, "Клуб программистов"
У меня назрела проблема, которую целый день никак не могу решить;
Есть 2 .EXE файла. Первый целиком записывается в "ресурсы" во второй. На подобие кулхацкерских "биндеров". Это работает идеально (Во всяком случае, я ошибок не заметил), но мне нужно, что второй .EXE запускал у себя же во втором потоке первый (используя CreateThread). С самого начала попробовал банально сделал указатель на первый символ в "ресурсах" файла (т.е. куда записан первый .EXE), но, как и предпологал, потерпел фиаско в лице креша программы. Потом в дизассемблере нашёл адрес начала основного потока первого .EXE, и уже при запуске второго использовал указатель, ссылающейся уже на него, но я либо не то указал, либо чего-то не понимаю.
Вообщем, любая идея по поводу решения этой проблемы была бы очень кстати.
RKT878 вне форума Ответить с цитированием
Старый 25.09.2011, 22:12   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,834
По умолчанию

файл из ресурсов сохраняйте в эту же папку, что и основаная программа, а потом запускайте процедурой:
Код:
procedure RunProgram(FullName:string);//FullName = путь+имя файла
var StartUpInfo:TStartUpInfo;
    ProcInfo:TProcessInformation;
begin
   if(FileExists(Fullname)=True)then
   begin
      FillChar(StartUpInfo,SizeOf(StartUpInfo),0);
      with StartUpInfo do
      begin
         cb:=SizeOf(StartUpInfo);
         dwFlags:=STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
         wShowWindow:=sw_ShowNormal;
      end;
      if not CreateProcess(NIL,PChar(FullName),NIL,NIL,False,NORMAL_PRIORITY_CLASS,
                           NIL,NIL,StartUpInfo,ProcInfo)then FullName:=FullName;
   end;
end;
а вы хотели чтоб сразу в память загружалась прога, безо всяких следов на диске? хм, мечта любого хакера...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов ApplyUpdate в отдельном потоке crazyPr0ger БД в Delphi 1 24.07.2011 18:06
Загрузка в отдельном потоке Crystallon Общие вопросы Delphi 4 05.10.2010 15:15
Вывод сообщения в отдельном потоке и т.д. Casper-SC Общие вопросы .NET 7 18.05.2010 03:32
всплывающее окно(в отдельном потоке) Virus191288 Компоненты Delphi 8 21.01.2010 13:41
Загрузка данных в отдельном потоке Dj_smart Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 18.01.2010 23:29