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

Вниз

Получить HANDLE незапущенного приложения   Найти похожие ветки 

 
Artem   (2008-02-04 01:39) [0]

Подскажите, пожалуйста, как получить handle незапущенного приложения, зная полный путь к нему?


 
Artem   (2008-02-04 01:52) [1]

Необходимо для того, чтобы извлечь из ее ресурса файл. Оба приложения мои.


 
Германн ©   (2008-02-04 02:00) [2]


> Получить HANDLE незапущенного приложения [D6, XP]
>
> Artem   (04.02.08 01:39)
>
> Подскажите, пожалуйста, как получить handle незапущенного
> приложения, зная полный путь к нему?
>

См. функцию GetModuleHandle в справке по WinAPI. Но не забудь прочитать и понять Remarks.


 
Ins ©   (2008-02-04 11:50) [3]

Если я правильно понял вопрос, то порядок следующий:
1. LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE - загружаем приложение в свое адресное пространство. Функция возвращает дескриптор исполняемого модуля - сохраняем его.
2. Используя полученный дескриптор, загружаем данные из ресурсов
3. FreeLibrary


 
ketmar ©   (2008-02-04 12:08) [4]

где-то так, да.


 
Ins ©   (2008-02-04 12:13) [5]


> Необходимо для того, чтобы извлечь из ее ресурса файл. Оба
> приложения мои.

Я тут вот что подумал... Если оба приложения ваши, то может завести Resourсe-only DLL, и скинуть необходимые ресурсы туда? И оба ваши приложения будут грузить их из этой библиотеки?! Думаю, это будет логичнее и рациональнее. А загружать библиотеку так же, как и описано в [3] (LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE), работает гораздо быстрее чем просто LoadLibrary.


 
{RASkov} ©   (2008-02-04 13:01) [6]

> Получить HANDLE незапущенного приложения

Я что-то не в теме.... у него разве есть хэндл?)
Или Artem таки допустил неточности в вопросе...


 
Skyle ©   (2008-02-04 13:08) [7]


> {RASkov} ©   (04.02.08 13:01) [6]
> > Получить HANDLE незапущенного приложения
>
> Я что-то не в теме.... у него разве есть хэндл?)
> Или Artem таки допустил неточности в вопросе...

Скорее > Германн © протелепатировал :)


 
Ins ©   (2008-02-04 13:08) [8]


> у него разве есть хэндл?)

Вопрос сформулирован криво, но я так понимаю, имеется в виду не хэндл процесса, а дескриптор исполняемого модуля, необходимый для загрузки ресурсов. Учитывая, что этот дескриптор представляет собой адрес образа exe в памяти вызывающего процесса, абсолютно все равно, запущен ли exe или нет. Главное, чтобы он был загружен в АП вызывающего процесса.


 
Ins ©   (2008-02-04 13:10) [9]


> Скорее > Германн © протелепатировал :)

Мне кажется - нет. GetModuleHandle не вернет дескриптор модуля, который не загружен данным процессом.


 
Skyle ©   (2008-02-04 13:16) [10]


> Ins ©   (04.02.08 13:10) [9]

GetModuleHandle вернёт handle, пригодный для загрузки ресурсов, что вполне себе содержит слова из [0] и похоже по смыслу на [1] :)


 
Ins ©   (2008-02-04 13:20) [11]


> что вполне себе содержит слова из [0]


Я думаю, только автор может прояснить ситуацию :) Но что касается GetModuleHandle, то это подразумевает, что образ чужого процесса уже загружен в адресное пространство нашего, подтверждение чего в словах автора я не увидел ;-)


 
Artem   (2008-02-07 23:15) [12]

Господа, объясните, пожалуйста
function LoadLibraryEx(lpLibFileName: PChar; hFile: THandle; dwFlags: DWORD): HMODULE; stdcall;

hFile - чем здесь является?


 
Artem   (2008-02-07 23:22) [13]

Помогите разобраться.
Есть функция:

function ExtractRes2(What:THandle;ResType, ResName, ResNewName: string): Boolean;
var
 Res: TResourceStream;
begin
 Result := False;
 Res := TResourceStream.Create(What, Resname, PChar(ResType));
 try
   Res.SavetoFile(ResNewName);
   Result := True;
 finally
   Res.Free;
 end;
end;


Пользуюсь так:

izd:=LoadLibraryEx(PChar(edit1.text),h,LOAD_LIBRARY_AS_DATAFILE);
if ExtractRes2(izd,"DATA","storage", pathTOstg+"\storage.smp");


Вроде все работает, но потом Access violation выдает. Что не правильно делаю?



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
15-1198581317
Nucer
2007-12-25 14:15
2008.03.02
SendMessage из PHP


2-1202129213
Unknown user
2008-02-04 15:46
2008.03.02
Как узнать кол-во символов загруженных в TRichEdit?


2-1202132846
VAD*Anti Gopn!k
2008-02-04 16:47
2008.03.02
Rich edit и картинки.


2-1201952182
karablik
2008-02-02 14:36
2008.03.02
WMA getMarker


2-1202118889
VAD*Anti Gopn!k
2008-02-04 12:54
2008.03.02
a := a + 1 или Inc(a)