· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› определить расположение файла программы

Посл.отвђт Сообщенiе


Дата: Ноя 10, 2003 20:26:10

Как по хендлу окна узнать имя файла который его создал?


Дата: Ноя 10, 2003 21:55:15

Если exe, то можно узнать хэндл процесса функцией GetWindowThreadProcessId и прочитать из процесса командную строку. Указатель на неё храниться по адресу функции GetCommandLineA + 1.


Дата: Ноя 10, 2003 23:07:07

CHAR strPath [MAX_PATH];
HWND hWnd; // Must be valid

GetModuleFileName (
  (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE),
  strPath, MAX_PATH);

Только надо перевести на ASM...


Дата: Ноя 10, 2003 23:22:08

AsmGuru62

А если окно другой процесс создал? Этот код надо не только перевести на асм, но и выполнить в адресном простанстве того процесса, которому окно принадлежит.


Дата: Ноя 11, 2003 00:58:33

...мда... не проверил я этот код однако...
А мне казалось, что это работает и для других процессов.


Дата: Ноя 11, 2003 02:10:57

гхм.
из хэндла окна получаем PID процесса, который его создал.
Потом через тулхелп получаем список процессов в системе и ищем процесс с нужным PID, в структуре которая подается Process32Next есть поле указывающее имя(или путь - не помню точно)экзешника.


Дата: Ноя 11, 2003 02:44:03

Есть такая функция GetModuleFileNameEx, но работает она только в WinNT 4.0 и высше :(

_1711130039__getmodulefilenameex.html


Дата: Ноя 11, 2003 19:53:55

Всем спасибо проверю.


Дата: Ноя 11, 2003 20:53:43

Следующий вопрос: как получить PID процесса?
GetWindowLong возвращает 0.
Поясню ситуацию:
уменя начала запускаться какаято программа, её окно я делаю видимым, но хотелось бы понять какой файл её запускает. Файлы автозапуска посмотрел, вроде ничего подозрительного. Антивирусы молчат.


Дата: Ноя 11, 2003 21:42:33 · Поправил: Asterix

Ну через TOOLHELP и PID можешь получить, тут даже где-то исходник
в топике валялся.
может здесь :-)


Дата: Ноя 11, 2003 23:51:23

тьфу ты мля.. а нахрена тогда извините меня плиз городить огород-то?
Spy++ для этого есть из Microsoft Visual Studio Он тебе все скажет.
а по PID ты сможешь в TaskManager получить имя образа.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.036