Открываю файл
void __fastcall TForm1::Button5Click(TObject *Sender)
{
AnsiString AS="D:\ololo.chm";
ShellExecute(NULL,NULL,AS.c_str(),NULL,NULL,SW_NORMAL);
}
Сворачиваю файл
void __fastcall TForm1::Button8Click(TObject *Sender)
{
CloseWindow(FindWindow("HH Parent","здесь должно быть значение Caption"));
}
как узнать свойство Сaption файла
У меня есть файлы форматов pdf, chm, djvu и мне надо управлять этими окнами через дескрипторы. Есть какая то функция которая возвращает свойство Сaption файла? Особенно это надо для управления chm файлов так как название файла которое мы можем задать сами будет отличаться от свойства Caption.
Цитата: Yokka
У меня есть файлы форматов pdf, chm, djvu и мне надо управлять этими окнами через дескрипторы. Есть какая то функция которая возвращает свойство Сaption файла? Особенно это надо для управления chm файлов так как название файла которое мы можем задать сами будет отличаться от свойства Caption.
Можно как-нибудь попонятнее? Свойство "Caption файла" что Вы под этим понимаете?
Вы, может быть, имеете ввиду управлять окнами программ просмотра этих файлов? Тогда всё зависит от конкретного просмоторщика. Ну а если заголовок зависит от содержимого файла, то варианта три:
1) Посмотреть в файл и узнать какой заголовок будет у окна. При этом программа должна знать структуру файла и уметь с ним работать.
2) Посмотреть на дескриптор процесса (если функцию, которой вы пользуютесь для открытия позволяет его получить) и найти его окно (вот только если окон много, то могут быть проблемы)
3) Если вы уверенны, что просмоторщик запущен именно один и именно с тем файлом, который нужен, то можно найти окно по классу.
Первый вариант самый сложный в реализации, но он позволит в 90% (10% это когда просмоторщик не показывает в заголовке заголовок, установленный в файле) найти именно то окно, которое нужно.
Теперь по подробней. Мне надо управлять файлами через дескрипторы. Допустим я хочу свернуть файл. Для chm делаю так.
Цитата: Yokka
Теперь по подробней. Мне надо управлять файлами через дескрипторы. Допустим я хочу свернуть файл. Для chm делаю так.
Какая есть функция которая могла бы возвратить значение Caption?
Код:
Открываю файл
void __fastcall TForm1::Button5Click(TObject *Sender)
{
AnsiString AS="D:\ololo.chm";
ShellExecute(NULL,NULL,AS.c_str(),NULL,NULL,SW_NORMAL);
}
Сворачиваю файл
void __fastcall TForm1::Button8Click(TObject *Sender)
{
CloseWindow(FindWindow("HH Parent","здесь должно быть значение Caption"));
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
AnsiString AS="D:\ololo.chm";
ShellExecute(NULL,NULL,AS.c_str(),NULL,NULL,SW_NORMAL);
}
Сворачиваю файл
void __fastcall TForm1::Button8Click(TObject *Sender)
{
CloseWindow(FindWindow("HH Parent","здесь должно быть значение Caption"));
}
Делается это через CreateProcess, у которого параметры позволяют получать и запоминать для дальнейшей работы дескриптор нового процесса, по этому дексриптору можно найти окно процесса (т.е. в обратную сторону от окон к процессам - с перебором окон и сравнением дескрипторов процессов окон)
Цитата:
мне надо управлять файлами через дескрипторы. Допустим я хочу свернуть файл
:D
Я вам как бы намекал, что вы управляете не файллами, а окнами. Не знаю как у других, а меня эта фраза смешит.