View previous topic :: View next topic |
Author |
Message |
botace
Joined: 29 Sep 2005 Posts: 10 Location: Moscow
|
(Separately) Posted: Tue Oct 04, 2005 23:59 Post subject: программный редирект на файл |
|
|
Мож кто уже делал - как программно заставить тотал сфокусироваться на нужном мне файле в активной панели? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Wed Oct 05, 2005 00:07 Post subject: |
|
|
Это подойдет?
Code: | cm_LoadSelectionFromClip |
|
|
Back to top |
|
|
botace
Joined: 29 Sep 2005 Posts: 10 Location: Moscow
|
(Separately) Posted: Wed Oct 05, 2005 00:18 Post subject: |
|
|
Немного не то. Это только выделяет файл, причем, если уже открыта нужная директория...
У меня есть полный путь к нужному файлу, нужно чтоб в активной панели открылась директория с этим файлом, и курсор встал на этот файл. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Wed Oct 05, 2005 11:22 Post subject: |
|
|
botace
Написал скриптик на VBScript. Он использует TCWSHelper от Volniy.
Code: | '==================================
' Активизировать TC и перейти к указанному файлу
' В параметрах вызова скрипта должен быть указан полный путь файла, включая имя.
'==================================
Dim MyFile, TCS
Set MyFile = CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0))
Set TCS = CreateObject("TCScript.Helper")
Dim FileName, FilePath
FileName = MyFile.Name
FilePath = MyFile.ParentFolder
TCS.LockTC True
TCS.SendCommand(4003)
TCS.SendKeystroke("cd " & FilePath & "{Enter}")
TCS.SendCommand(2915)
TCS.SendKeystroke(FileName & "{Esc}")
TCS.LockTC False
Set TCS = Nothing
Set MyFile = Nothing
Wscript.Quit |
Только есть небольшой трабл с текущей раскладкой. При включенной русской почему-то не работает. Сейчас уже нет времени отлаживать. Может Volniy поможет. |
|
Back to top |
|
|
botace
Joined: 29 Sep 2005 Posts: 10 Location: Moscow
|
(Separately) Posted: Wed Oct 05, 2005 22:40 Post subject: |
|
|
Спасибо за скриптик. Правда его я так и не использовал. Но, он меня навёл на одну интересную мыслю, которую я и воплотил
Кратко (убраны некоторые проверки окон) на сях получилось так:
Первая часть кода. (да, пришлось разделить на две части, т.к. тоталу требуется время на реагирование комманды смены каталога. Слитно две части не проходят никак). Итак, имеем:
HWND hWndTotal - Главное окно тотала
CString stPath - Путь без имени файла
CString stFile - Имя файла
Code: |
// Поднимаем окно тотала, если оно было минимизированно...
::SendMessage( hWndTotal, WM_USER + 51, 2016, 0);
// Активируем левую панель
::SendMessage( hWndTotal, WM_USER + 51, 4001, 0);
// Ставим фокус на коммандную строку
::SendMessage( hWndTotal, WM_USER + 51, 4003, 0);
// Прописываем нужный нам путь в коммандную строку тотала
::SetWindowText( ::GetFocus(), CString( "cd ") + stPath); // Тут канечна желательно отследить, что фокус у нужного нам окна
// Софт-нажатие enter
::keybd_event( VK_RETURN, 0, KEYEVENTF_EXTENDEDKEY, 0);
::keybd_event( VK_RETURN, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
// Далее у меня установка себе таймера WM_TIMER через 0 мс. Т.к. это сообщение самое низкое по приоритету, очередь выборки у тотала успеет в любом случае разгребстись...
|
Вторая часть кода в обработке таймера:
Code: |
// Включаем панель быстрого поиска
::SendMessage( hWndTotal, WM_USER + 51, 2915, 0);
// Тут кстати нада учитывать, что она работает по ON/OFF и после выдачи пред. комманды она на самом деле может выйти на OFF-состояние
// Имитируем набор символов в быстром поиске
LPCTSTR szFile = stFile;
HWND hWndCmdLine = ::GetFocus();
while( *szFile) ::SendMessage( hWndCmdLine, WM_CHAR, *szFile++, 0);
// Софт-нажатие escape
::keybd_event( VK_ESCAPE, 0, KEYEVENTF_EXTENDEDKEY, 0);
::keybd_event( VK_ESCAPE, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
|
Вуаля...Тотал на нужном нам файле, причем текущая раскладка клавы абсолютно не канает |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|