Страница 1 из 1

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

Добавлено: Чт ноя 08, 2007 19:21
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...

Добавлено: Чт ноя 08, 2007 20:41
D1P
Подтверждаю.

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

SendMessage(FindWindow ('TTOTAL_CMD',nil), WM_USER+51, 905, 0);
даёт такую байду.

Добавлено: Пт ноя 09, 2007 15:41
VadiMGP
Да все, работает, вроде. Сейчас забацал .bar файл для TCmenu с командами cm_Copy и cm_RenMov. Все работает.
Так что тут что-то другое.

Добавлено: Пт ноя 09, 2007 15:58
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)
отвечает "Функция не поддерживается".

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

А как конкретно эти кнопки выглядят?

Добавлено: Пт ноя 09, 2007 17:24
B4rr4cuda
Странное дело, тот же SendMessage с той же командой, но выполненый из плагина, работает. На команды посланые внешним приложением, говорит "Функция не поддерживается".

Добавлено: Пт ноя 09, 2007 18:11
VadiMGP
Интересная фигня получается. Заглянул в сорсы TCMenu и нашел свой собственный комментарий.

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

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

Добавлено: Пт ноя 09, 2007 18:14
VadiMGP
B4rr4cudaТак когда из плагина, то фокус-то в ТС! Вот в чем фокус. :wink:

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

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

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

Windows.SetForegroundWindow(FindWindow('TTOTAL_CMD',nil));
Sleep(2000);
PostMessage(FindWindow ('TTOTAL_CMD',nil), WM_USER+51, 1005, 0);

Добавлено: Пт ноя 09, 2007 19:25
VadiMGP
Ну у меня в TCMenu и SetFocus работает. Возможно это связано с тем, что главное окно TCMenu невидимое. Но в общем, один черт, можно и SetForegroundWindow. Главное - вернуть фокус.