MVV wrote: |
В функции IsForbiddenLevelUp я беру текст из панели в строке состояния, текст в которой есть независимо от режима панели. |
VadiMGP wrote: | ||
Тогда может быть другое ложное срабатывание - при выходе из виртуальной папки. Если, к примеру, ты в Control Panel, то текст панели будет "\\Control Panel\*.*". |
MVV wrote: |
Вообще-то, конечно, "\\Панель управления>", но это детали. |
Code: |
|
Code: |
|
Code: |
|
Code: |
|
Code: |
|
Code: |
DWORD __stdcall BackgroundSendData(void* Data) { |
MVV wrote: |
Менять путь, посылая сообщение установки текста полю пути - извращение и маразм. ТК поддерживает специальное оконное сообщение WM_COPYDATA, в котором можно послать путь для перехода. Но надо это делать в фоновом потоке (у меня из плагина не работало, если в основном)... |
Code: |
|
HankHank wrote: |
И ещё немного оффтопа. |
HankHank wrote: | ||
Попробовал приладить код с вызовом фонового процесса, получилось так:
Компиллятор не взбрыкнул. Нужный процесс рождается. Код возврата thread ненулевой. Но эффекта - нет. Так и стоим на месте - на [..]. Подробнее пока не глядел. Может, свежим взглядом косяк виден сразу ? |
Code: |
struct BackgroundSendDataData { |
Code: |
bool ChangeCurrentDir(const char* Path, bool NewTab) { |
HankHank wrote: |
При нахождении “в среде плагина” попытка ввести “cd \\< IP или имя>” не приводит к успеху – надо слегка подриххтовать логику. Ты, впрочем, об этом вскользь уже говорил. |
MVV wrote: |
Ты выделил в стеке место для буфера и вписал в него путь. Далее, ты вызываешь фоновую функцию и передаешь ей адрес этого буфера, и не дожидаясь ее завершения выходишь из функции, в которой буфер был выделен, то есть, уничтожаешь его! |
MVV wrote: |
Еще один момент - плагин у юзера необязательно будет называться "net", имя можно дать любое в настройке FS-плагинов. |
MVV wrote: |
Кстати, заметил, что у меня может теряться память, если будет ошибка создания фонового потока. Модернизировал:… |
MVV wrote: |
На оффтоп отвечать не буду, раз модераторы против. Хотя, могу в личку. |
MVV wrote: | ||
…Ты вводишь команду для перехода в сетевую папку, находясь в папке плагина, и оно не работает (в ТК команда cd не работает в папках FS-плагинов; ты должен вручную реализовать обработку команды cd и изменить текущую папку - например, вызвав ChangeCurrentDir, как делает моя VirtualPanel), или ты пытаешься обойти хук с помощью команды cd (я говорил как раз об этом - не нужно блокировать команду cd, раз юзер пишет ее, у него есть на то причины), или же этот абзац тоже подразумевает установку текста командной строки и выполнение для смены папки (маловероятно, что ты имел в виду это, но вдруг)? |
HankHank wrote: |
Пользователю невдомёк, что командная строка работает по-разному в плагине и без него. Поэтому не хотелось бы забивать ему мозги ещё и такими деталями. И надо бы это как-то реализовать... Да, и в принципе, возможна ситуёвина, когда в обеих панелях уже плагин, а пользователь ещё и в командной строке набирает типа cd \\<хост>. |
Code: |
cd "путь\путь" не путь |
! | Avada: |
Тема перенесена. |
Avada wrote: |
Мне кажется, тему лучше перенести в подфорум "Написание плагинов", поскольку обсуждаемые вопросы — достаточно специфические. Нет возражений? |
HankHank wrote: |
В личке посмотри. |
HankHank wrote: | ||
Покуролесил с вчерашним кодом в свете твоего сообщения о динамической памяти:
Передаваемая процессу память никуда теперь не исчезает. Но код проще. (Пробовал static char buffer[]="cd \\\\\\net" и static char buffer[]="\\\\\\net".) Но что-то ничего не выходит… |
Code: |
<first_path>\r<second_path>\0<flags> |
Code: |
static char cdnet[]="\\\\\\net\r\0S"; |
MVV wrote: | ||
Видимо, ты плохо разобрался с форматом буфера для WM_COPYDATA, который ожидает ТК. Вот он:
Флаги: 'T' - в новой вкладке, 'S' - менять пути активной и неактивной панелей вместо левой и правой. |
MVV wrote: | ||
Таким образом, правильный буфер:
|
Quote: |
Если принимающая программа обрабатывает это сообщение, она должна возвратить значение ИСТИНА (TRUE); в противном случае она должна возвратить - ЛОЖЬ (FALSE). |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours