![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем.
Возникло несколько вопросов, когда общался с windows-проводником. Первое - когда я открываю Мой компьютер, то это же окно? В таком случае, какой заголовок оно имеет, как найти хэндл? Если в XP, то обычно в какую папку зайдёшь, такой заголовок и будет. И то, может отображаться полный путь к папке, а может и просто имя папки. В win7 же вообще в "Моём компьютере" никаких заголовков не наблюдается. Это непонятная вариативность. Есть ли универсальный способ найти окно проводника (если заходить с "Моего компьютера" или с "Пуск->Проводник"), чтобы можно было в том числе определить, в какой директории этот проводник находится? Сообщение отредактировано: Unconnected - 5.08.2010 20:54 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Есть ли универсальный способ найти окно проводника Есть, разумеется, IShellWindows и IWebBrowser2 на что придумали?Explorer := CoShellWindows.Create; Может понадобиться подключить модуль SHDocVw. А, да... Explorer - типа IShellWindows, если что ![]() А вообще, искать окно эксплорера можно так: FindWindow('ExploreWClass', nil). И под XP можно взять название текущей папки через GetWindowText. Но лучше все-таки штатными средствами, чтоб независимо от версии Windows... |
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата А вообще, искать окно эксплорера можно так: FindWindow('ExploreWClass', nil). И под XP можно взять название текущей папки через GetWindowText. Но лучше все-таки штатными средствами, чтоб независимо от версии Windows... Ага, значит, есть разница в этом в разных windows. Тогда, можно находить через FindWindow, а папку брать не с GetWindowText, а искать нужный эдит, он-то и в севене тоже есть. Ибо сильно жирный этот SHDocVw.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата он-то и в севене тоже есть Есть-то он есть, да вот ты можешь гарантировать, что находятся адресные строки (там не эдиты, а ComboBoxEx32) на одном уровне и в XP и в Win7? А если нет, тогда что делать?опять проверять, какая ОС, и далее условиями? Ну, делай, как знаешь. Только сначала попробуй с SHDocVw, а потом - чтоб отработало на WinXP/Vista/Win7 без него. И сравни результаты. И время разработки заодно... |
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Ну, делай, как знаешь. Только сначала попробуй с SHDocVw, а потом - чтоб отработало на WinXP/Vista/Win7 без него. И сравни результаты. И время разработки заодно... Намёк понял) Я, наверное, сделаю вариант только для XP. Знаю, что так делать нехорошо, но этот момент не сильно критичен, размер важнее. Кстати, кажется, для XP не ищет.. var h:hwnd; До showmessage не доходит. Окошко проводника в момент поиска открыто. Сообщение отредактировано: Unconnected - 5.08.2010 21:49 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Ага. Это мой глюк. В XP такая фигня: если окно эксплорера открыто правым кликом по MyComputer и выбором пункта меню Explore - то тогда имя класса = ExploreWClass. Если же правый клик по MyComputer + меню Open - то имя класса - CabinetWClass. Так что вот тебе еще один довод в пользу стандартных средств
![]() |
Client |
![]()
Сообщение
#7
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
спасибо за информацию
![]() ![]() |
Unconnected |
![]()
Сообщение
#8
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Присоединяюсь к Client'у, давно интересовала эта тема
![]() var h:hwnd; Сообщение отредактировано: Unconnected - 5.08.2010 22:42 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата я криво вызываю getwindowtext, что ли Память надо выделять под тот текст, который будет читаться. А String этого не делает. Это динамическая строка...procedure TForm1.Button1Click(Sender: TObject); Все нормально отображается. Даже если в названии папки - кириллица... |
Client |
![]()
Сообщение
#10
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
с PChar у меня отработало...
|
Unconnected |
![]()
Сообщение
#11
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
volvo, спасибо, сделал что хотел. Я, кстати, вроде раньше тоже с pchar делал и работало..)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 19:12 |