botace
|
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);
|
Вуаля...Тотал на нужном нам файле, причем текущая раскладка клавы абсолютно не канает  |
|