Скопировать файл из плагиновой панели

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Скопировать файл из плагиновой панели

Post by jbak »

Подскажите, плиз, как можно программно
1. Скопировать файл с плагиновой панели в определённую папку;
2. Скопировать файл из папки на плагиновую панель
Очень желательно - пример на C++
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Читай Енц. (http://api.farmanager.com/) и смотри сорцы плагинов, например FarMail, MailView, MultiArc, wfx2far и куча других.
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

Я, наверное, не совсем правильно написал.
Речь идёт о панели, которая принадлежит другому плагину, не моему.
Например, программно скопировать из той же MailView файл в C:\Cashe\Имя_файла.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

V obs'hem ni kak.
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 570
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by Zeroes »

А применение макросов не помогло бы решить проблему?
--- Zeroes & Ones ---
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

Zeroes and t-rex
А можно чуть-чуть подробнее?
Вот что я пробовал:

Code: Select all

    // filepath - путь, куда нужно скопировать (с завершающим /)
    // filename - имя плагинового файла
    KeySequence keys;
    long len = strlen(filepath);
    keys.Count=len+1;
    keys.Sequence=new DWORD[keys.Count];
    keys.Sequence[0]=m_FSF.FarNameToKey("F5");
////// Побуквенно преобразуем путь в макроклавиши
    for(int i=0;i<len;i++)
    {
        key[0]=filepath[i];
        key[1]='\0';
        keys.Sequence[i+1]=m_FSF.FarNameToKey(key);
    }
////////
    keys.Flags=KSFLAGS_DISABLEOUTPUT;
    strcat(filepath,filename);
    m_Info.AdvControl(m_Info.ModuleNumber,ACTL_POSTKEYSEQUENCE,&keys);
    keys.Count=1;
    keys.Sequence[0]=m_FSF.FarNameToKey("Enter");
// Для Enter отдельный запуск. Иначе вместо Enter в конец поля ввода вбивается символ  
    m_Info.AdvControl(m_Info.ModuleNumber,ACTL_POSTKEYSEQUENCE,&keys);
// Пока всё хорошо. 
// Но где-то тут Far должен получить управление и выполнить макрос.
// Что для этого нужно написать ?????

// А вот тут будет ошибка "Файл не найден".
// Макрос-то ещё и не думал выполняться!
Editor(filepath, filepath,0,0,-1,-1,EF_NONMODAL,-1,-1);
А как сделать, чтобы Far выполнил макрос и плагин только после этого открыл файл в редакторе?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Post by zg »

надо выпольнять не просто "F5", а "F5 F11 youpluginhotkey" и завершать работу сразу после ACTL_POSTKEYSEQUENCE. а макрос скопирует файл и вызовет твой плагин снова — тогда и откроешь редактор.
User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

А кстати да, что-то похожее на правду. Спасибо.
Post Reply

Return to “Разработка плагинов”