View previous topic :: View next topic |
Author |
Message |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Wed Jun 16, 2010 14:08 Post subject: |
|
|
Quote: | Могут, конечно, но почему бы не передать некоторые данные, поиск которых занимает некоторое время, но которые уже найдены?
Собственно идея была именно в этом. Если возникнут какие-нибудь мысли насчет такой информации - можно ее добавить в структуру. |
Кстати, сделай первым членом структуры поле с ее размером. Тогда плагин сможет по размеру структуры понять, присутствует ли нужное ему поле в структуре - например, если плагин используется в более старой версии. Этот часто использующийся прием несложен и в то же время удобен (в интерфейсе плагинов ТК он тоже используется).
Quote: | Autorun парсит строку и вызывает из соответствующего плагина функцию Autorun_ExecFunc, которой передает имя MyFunc и массив параметров. |
Ага, так идея виртуальных функций смотрится еще интереснее, хотя все равно использоваться это будет лишь при запуске ТК. Осталось как следует описать это дело кстати, по-английски бы тоже описать и выложить на wincmd.ru.
Кстати, для примера ты можешь свою movebutton вынести в плагин, а в пример конфига вставить команду для загрузки.
Проблема с загрузкой DLL пока следующая: DLL загружается и выгружается в основном потоке, поэтому все, что выполняется в функции DllMain, выполняется в основном потоке - например, если добавить туда отображение сообщения, ТК будет висеть, пока не нажмешь ОК. А в экспортируемой функции, вызываемой после загрузки DLL, все ок. Это надо документировать. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Wed Jun 16, 2010 21:56 Post subject: |
|
|
MVV wrote: | Кстати, сделай первым членом структуры поле с ее размером. |
Разумно. Сделаю.
MVV wrote: | Ага, так идея виртуальных функций смотрится еще интереснее, хотя все равно использоваться это будет лишь при запуске ТК. Осталось как следует описать это дело кстати, по-английски бы тоже описать и выложить на wincmd.ru. |
Зато универсально при минимуме кода
Всё опишу, разумеется, но чуть позже.
MVV wrote: | Кстати, для примера ты можешь свою movebutton вынести в плагин, а в пример конфига вставить команду для загрузки. |
Это в планах. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Fri Jun 18, 2010 00:25 Post subject: |
|
|
MVV
Ну не знаю... ничего особенного, а уж тем более связанного с хуками. В чистом виде после загрузки, плагин только получает пути тотала из переменных, окно текущей копии тотала через EnumWindows и список команд из TOTALCMD.INC. Далее стартует новый поток, в котором выполняются команды. Собственно, всё. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Fri Jun 18, 2010 10:15 Post subject: |
|
|
Да я и сам понимаю, что всё, но как видишь... И прямо из DllMain пробовал вызывать функцию инициализации, и из твоего плагина (в отдельном потоке). Попробовать еще интереса ради загрузить DLL, из которой загрузить эту DLL...
Кстати, а зачем через EnumWindows? Куда проще маленький цикл с FindWidnowEx, где проверять принадлежность окна процессу. И callback-функция не нужна.
Code: | bool GetMainWnd(bool Override=0) {
if (hMainWnd&&!Override) return 0;
HWND hwnd=0;
DWORD pid=GetCurrentProcessId(), wndpid;
while (hwnd=FindWindowEx(0, hwnd, L"TTOTAL_CMD", 0)) {
GetWindowThreadProcessId(hwnd, &wndpid);
if (pid!=wndpid) continue;
hMainWnd=hwnd;
return 1;
}
return 0;
} |
(на Delphi будет примерно то же самое) _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Sat Jun 19, 2010 19:34 Post subject: |
|
|
MVV wrote: | Кстати, а зачем через EnumWindows? |
Да теперь уже и не вспомню...
В общем, вторая бета: скачать.
Поменял обработку необязательных параметров - вроде да, стало удобнее. За счет этого ликвидировал команду SetOption. MoveButton вынесена в отдельный плагин к плагину  |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Sun Jun 20, 2010 00:06 Post subject: |
|
|
MVV wrote: | Предлагаю называть плагины так: Autorun_MoveButton.dll, Autorun_HideMenu.dll и т.п., чтобы подчеркнуть их принадлежность к автозапуску. |
Не возражаю.
MVV wrote: | Еще предлагаю в первом посте добавлять ссылки на модули например, на этот пост с моим Autorun_HideMenu. |
Извините, старые сообщения могут редактировать только модераторы
Надо просить разблокировать  |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10384 Location: Россия, Саратов
|
(Separately) Posted: Sun Jun 20, 2010 00:26 Post subject: |
|
|
Loopback wrote: | Надо просить разблокировать |
Достаточно написать, например, мне в личку — что в какое место поста и в каком виде добавить.
MVV wrote: | А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincm.ru. |
Всецело подерживаю. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Sun Jun 20, 2010 01:03 Post subject: |
|
|
MVV wrote: | А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincm.ru. |
Обычно я с английской и начинаю, но тут сначала для широкого распространения не планировалось. Не проблема, к релизу напишу.
Avada wrote: | Достаточно написать, например, мне в личку — что в какое место поста и в каком виде добавить. |
Да это понятно, но хотелось бы просто иметь возможность редактировать первый пост и модераторов по каждой правке не дергать. |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6180 Location: Москва
|
(Separately) Posted: Sun Jun 20, 2010 01:24 Post subject: |
|
|
Разблокировал. Но вообще, на будущее, выше дали ссылку на тему, где надо постить запросы на разблокировку. Так будет быстрее и с гарантией, т.к. в ворохе обсуждений я могу и проглядеть, что кому-то там понадобилось править старый пост. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Sun Jun 20, 2010 16:41 Post subject: |
|
|
CaptainFlint
Спасибо.
Я ссылку видел, решил просто заняться этим завтра (т.е. теперь уже сегодня). |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Tue Jun 22, 2010 00:46 Post subject: |
|
|
Выложил плагин на wincmd.ru, теперь его постоянное место там.
В релиз добавил функцию IniWrite, идея которой возникла после прочтения этой темы, и которая, как мне кажется, может быть весьма востребована авторами сборок  |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10384 Location: Россия, Саратов
|
(Separately) Posted: Tue Jun 22, 2010 07:29 Post subject: |
|
|
Loopback wrote: | Выложил плагин на wincmd.ru, теперь его постоянное место там. |
Замечательно, что это наконец-то произошло. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|