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

Вниз

Получить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.075 c
2-1202404394
Алексей Шестченко
2008-02-07 20:13
2008.03.02
Парсер


2-1201900613
HaJik
2008-02-02 00:16
2008.03.02
Как мне "прикрутить" на событие функцию, которая также бы храни


2-1202331960
w666w
2008-02-07 00:06
2008.03.02
MSSQL+ADOStoredProc - проблема с кириллицей


2-1202059513
sauron
2008-02-03 20:25
2008.03.02
URL


15-1201619152
wesaaaa
2008-01-29 18:05
2008.03.02
Что такое рег-тайм?





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