Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.95.38] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток всем!
Как получить имя исполняемого файла, если известен заголовок (или хэндл) окна? В частности - необходимо получить иконку приложения. Делаю так, но он не работает: var wnd : HWnd; inst: HInst; buf: array [0..MAX_PATH] of char; begin wnd:=FindWindow(nil,'Блокнот'); if wnd=0 then ShowMessage('No window'); inst:=GetWindowLong(wnd, GWL_HINSTANCE); if inst=0 then ShowMessage('No Instance'); GetModuleFileName(inst, buf, MAX_PATH); Caption:=buf; end; Так как же быть? Не подскажете? |
Сообщ.
#2
,
|
|||
|
Сразу извиняюсь за длину...
|
Сообщ.
#3
,
|
|
|
Мда... Клево, конечно... Попытаюсь портировать на Делфи своими силами. А нельзя пример на Делфи? Тут вроде про него форум.
|
Сообщ.
#4
,
|
|
|
Я просто хотел показать набор необходимых апишных процедур...
|
Сообщ.
#5
,
|
|
|
Спасибо, конечно, огромное, но пока у меня не все портируется... Может руки кривы, а может - С надо было лучше изучать... Блин, помогите на Дельфи сделать! Хто-нить! Song? Vit? Вы наверняка знаете или даже уже делали не раз..
|
Сообщ.
#6
,
|
|
|
ZShell
Надо исользовать GetWindowModuleFileName() |
Сообщ.
#7
,
|
|
|
О! Живые люди... Пойду пробовать...
|
Сообщ.
#8
,
|
|
|
О! Нашел:
UINT GetWindowModuleFileName( HWND hwnd, LPTSTR lpszFileName, UINT cchFileNameMax ); Функция записывает в буфер, определенный параметром lpszFileName, полный путь (содержащий имя файла) к файлу модуля, ассоциированного с указанным дескриптором окна. В качестве результата функция возвращает количество символов TCHARs записанных в буфер. Параметр Описание hWnd [in] Дескриптор окна. lpszFileName [out] Указатель на буфер, в который будет записан путь и имя файла. cchFileNameMax [in] Определяет максимальное количество символов TCHARs, которые будут скопированы в буфер. Просто в Дельфи 3 ее нету (или я плохо искал?) |
Сообщ.
#9
,
|
|
|
А вот и сладкий пинок в живот :
#7 11.09.02 20:19:48 ты сам писал: Сабж применяется только для окон своего процесса. Для других смотрите NTQuerySystemInformation()! Но GetWindowModuleFileName действительно реально работает, всем спасибо! |
Сообщ.
#10
,
|
|
|
AttachThreadInput - и это уже будет твоё окно
|
Сообщ.
#11
,
|
|
|
Интересный способ... Я не догадался процесс приатачить.
|