Функция не поддерживается...

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Ответить
Аватара пользователя
aLexx
Сообщения: 442
Зарегистрирован: Пн мар 14, 2005 08:33
Откуда: Новокузнецк
Контактная информация:

Функция не поддерживается...

Сообщение aLexx »

Пытаюсь из своей программы отослать ТС одну из комманд:

cm_Copy=905;Copy files
cm_RenMov=906;Rename/Move files
cm_MoveOnly=1005;Move (F6)

Получаю сабж.
А вот переместить через буфер обмена:

cm_CutToClipboard=2007;(32-bit) Cut selected files to clipboard
переход на другую панель
cm_PasteFromClipboard=2009;(32-bit) Paste from clipboard to current dir

и всё ОК. Но это ведь через (_|_) !!!
Как правильно сделать с помощью нужных комманд?

PS. Кстати, тоже самое сообщение получаю, если просто отослать в ТС код клавиш F5 или F6...
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Подтверждаю.

Код: Выделить всё

SendMessage(FindWindow ('TTOTAL_CMD',nil), WM_USER+51, 905, 0);
даёт такую байду.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Да все, работает, вроде. Сейчас забацал .bar файл для TCmenu с командами cm_Copy и cm_RenMov. Все работает.
Так что тут что-то другое.
Аватара пользователя
B4rr4cuda
Сообщения: 376
Зарегистрирован: Вс июн 03, 2007 00:36
Откуда: Россия, Москва

Сообщение B4rr4cuda »

Подтверждаю.
Не работают операции с файлами.
Просмотр и редактирование, также как создание каталога - работают.
На

Код: Выделить всё

cm_Delete=908;//Delete files
cm_Copy=905;//Copy files
cm_CopySamepanel=3100;//Copy within panel
cm_CopyOtherpanel=3101;//Copy to other
cm_RenMov=906;//Rename/Move files
cm_Delete=908;//Delete files
cm_MoveOnly=1005;//Move (F6)
отвечает "Функция не поддерживается".
Аватара пользователя
aLexx
Сообщения: 442
Зарегистрирован: Пн мар 14, 2005 08:33
Откуда: Новокузнецк
Контактная информация:

Сообщение aLexx »

2 VadiMGP
Чисто случайно, а не используешь ли ты "TCWSHelp" от Volniy?
Почему-то тама эти комманды поддерживаются... :(

А как конкретно эти кнопки выглядят?
Аватара пользователя
B4rr4cuda
Сообщения: 376
Зарегистрирован: Вс июн 03, 2007 00:36
Откуда: Россия, Москва

Сообщение B4rr4cuda »

Странное дело, тот же SendMessage с той же командой, но выполненый из плагина, работает. На команды посланые внешним приложением, говорит "Функция не поддерживается".
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Интересная фигня получается. Заглянул в сорсы TCMenu и нашел свой собственный комментарий.

Код: Выделить всё

		// Return focus back+delay - must!! 
		mWnd->SetFocus();
		Sleep (200);
		mWnd->PostMessage(WM_USER + 51, wParam, 0);
И теперь вспомнил, что действительно была такая проблема с командами, которые имеют собственные диалоги с юзером (Copy, Move, FTP...). Возврат фокуса и задержка в 200 мсек решили эту проблему.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

B4rr4cudaТак когда из плагина, то фокус-то в ТС! Вот в чем фокус. :wink:
Аватара пользователя
B4rr4cuda
Сообщения: 376
Зарегистрирован: Вс июн 03, 2007 00:36
Откуда: Россия, Москва

Сообщение B4rr4cuda »

Точно. Проверил. Передача фокуса не помогла, а вот после выведения в форегроунд (и соответственно передачи фокуса) - все работает.

Добавлено: Вот код который пашет. Если вместо SetForegroundWindow, выполнить SetFocus - ноль эмоций.

Код: Выделить всё

Windows.SetForegroundWindow(FindWindow('TTOTAL_CMD',nil));
Sleep(2000);
PostMessage(FindWindow ('TTOTAL_CMD',nil), WM_USER+51, 1005, 0);
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Ну у меня в TCMenu и SetFocus работает. Возможно это связано с тем, что главное окно TCMenu невидимое. Но в общем, один черт, можно и SetForegroundWindow. Главное - вернуть фокус.
Ответить