Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109

Handle запускаемого файла

03.08.2010, 09:18. Показов 4381. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня такой вопрос, как можно узнать Хэндл запускаемого файла?

Или просто активного окна хотябы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2010, 09:18
Ответы с готовыми решениями:

Копирование запускаемого файла
Я очень долго мучался но не нашел как копировать запускаемый файл С любой директории (Чтобы в коде не писать исходную директорию) ...

Передача запускаемого текстового файла в memo (delphi)
Добрый вечер, ребят. Помогите, пожалуйста, решить проблему на delphi. У меня есть форма, на которой расположены memo, кнопка, и...

Как определить минимальное необходимое время для отработки запускаемого bat файла функцией ShellExecute()?
Всем привет! Столкнулся недавно с интересной проблемой. Есть код на Delphi7: // запускаем bat файл из каталога с программой ...

16
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 09:39
DenProx, можно с помощью апишных функций - FindWindow или FindWindowEx
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 09:41  [ТС]
Lord_Voodoo, я знаю что можно)) не знаю как применить...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 09:45
DenProx, курим мануал по апи
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 11:40  [ТС]
тема еще актуальна... может у кого примерчик есть?

Добавлено через 9 минут
я нашел такой пример:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
 RunFileName: PChar;
 i: word;
 H: hWnd;
begin
 H:= FindWindow(ИМЯ ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ , = CAPTION ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ);
 if H=0 then
  begin
   RunFileName:=PChar(ПОЛНЫЙ ПУТЬ К ФАЙЛУ, МОЖНО ЧЕРЕЗ OpenDialog);
   i:=WinExec(RunFileName,SW_RESTORE);
   Case i of
     0: ShowMessage('Не хватает памяти или ресурсов');
     ERROR_BAD_FORMAT: ShowMessage('Файл приложения не совместим с данной версией ОС либо поврежден');
     ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND: ShowMessage('Файл приложения не найден');
   end; // case
   Application.Minimize;// Свернёмся, если запустили удачно
  end
 else ShowMessage('Приложение уже запущено!');
end;
в итоге в H мы имеем хандл, а в i - результат запуска
..............

но не пойму что нужно здесь:
H:= FindWindow(ИМЯ ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ , = CAPTION ГЛАВНОЙ ФОРМЫ ПРИЛОЖЕНИЯ);

получается нужно указать статическое название...?
Если да, то как сделать обратное, чтобы название автоматически определялось?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 11:59
DenProx, ну можно получить список запущенных окон, а как вы собираетесь опеределять, какое конкретно окно надо? вообще, что надо сделать?
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 12:04  [ТС]
Lord_Voodoo, вообще нужно из моей программы запустить видео файл (естественно не один, а по выбору пользователя), в момент запуска узнать хендл окна, и переместить в определенную область экрана (рабочего стола) это видео.

в момент запуска нужно по тому что, изначально у видео плеера хендл один, после подгрузки в него видео, хендл меняется... (добовляется название файла в заголовок)....
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 12:08
DenProx, ну для запуска видео-файла вам абсолютно не надо знать хендла проигрывателя, ИМХО... надо заставить пользака выбрать файл да и запускать уже к примеру WinExec
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 12:09  [ТС]
Lord_Voodoo, дак Хендл мне не для запуска нужен а для SetWindowPos()
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 12:20
DenProx, так тогда тебе будет известен уже кепшен окна, потому что юзверь укажет имя проигрываемого файла
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 12:26  [ТС]
Lord_Voodoo, да, но имя файла и Хендл на сколько я помню немного отличаются...
например:
имя: файл_1.avi
Хендл будет: имя файла + название проигрователя (в зависимости от плеера, например как у MPC)

Добавлено через 55 секунд
по этому и нужно узнать Хендл... хотябы активного окна
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 12:33
DenProx, тогда GetTopWindow и GetNextWindow
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 13:21  [ТС]
Lord_Voodoo, дак в них тоже нужно указывать Хендл... а как его узнать..?

Добавлено через 26 минут
Наконец то нашел пример:
Delphi
1
2
3
4
5
6
var 
header:HWND; 
apchar:array[0..254] of char; 
begin
header:=GetForegroundWindow; // получаем заголовок текущего активного окна
GetWindowText(header, apchar, Length(apchar));
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 13:24
DenProx, ну по идее вверху изначально будет твоя прога, а ее handle ты узнаешь без труда, а от него уже в z-порядке пробегаешь по остальным формам и смотришь похожее название
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 14:13  [ТС]
Lord_Voodoo, все получилось, я просто Sleep поставил и поймал Хендл....

еще такой вопросик, как сказать окну, чтобы оно развернулось на весь экран?

типа как в ShellExecute(...., SW_SHOWMAXIMIZED);
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
03.08.2010, 14:33
DenProx, ShowWindow вам поможет
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
03.08.2010, 14:39  [ТС]
Lord_Voodoo, спасибо) работает... правда опять не совсем так как нужно... получается что разворачивается окно на весь экран, а менюшки все остаются... а нужно как будто из программы нажали развернуть, что бы автоматически все скрылось, и осталось только видео...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.08.2010, 14:39
Помогаю со студенческими работами здесь

Как узнать handle файла....???
Всем привет! Подскажите пожалуйста, как узнать handle файла? Только не нужно GetModuleHandle. Так как это функция узнает дескриптор...

Application.Handle выдает identifier idents no member "Handle", на Дельфи всё работает
Не компилируется к примеру код: begin MessageDlg('Уже поздно. Будь послушным мальчиком. '+ 'Туши свет и вали спать!',...

Удаление запускаемого файла
Всем привет, меня интересует один вопрос как можно запустить программу которая удалит себя(это не вирус! я делаю в своих целях, хочу...

Выполнение за пределами запускаемого BAT-файла
Через команду call запускаем батник. Необходимо в зависимости от того что произошло внутри батника выполнить условие. call 1.bat ...

Удаление запускаемого файла после его завершения
Здравствуйте. Мне нужен скрипт vbs для удаления запускаемого (исходного) файла презентации PowerPoint после завершения его просмотра,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru