Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[wlx] odbc-wlx - просмотр Access, Excel, CSV файлов
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Tue Nov 09, 2021 22:33    Post subject: Reply with quote

Quote:
Листер не может и не должен раскрываться на полный экран с потерей заголовка окна

По умолчанию, если никаких компонент не добавлять в окно Lister, он как раз разворачивается на весь экран Wink Я нашел это, когда решение с курсором искал. А вот то, что крашится, надо смотреть. Едва ли это из-за режима во весь экран.

Quote:
Так что что-то надо делать с поддержкой нажатий F1-12

Lister использует эти клавиши? Добавить то не сложно.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Wed Nov 10, 2021 00:10    Post subject: Reply with quote

little-brother wrote:
он как раз разворачивается на весь экран

Стоп. Еще раз. ЧТО вы под полным экраном понимаете? В моем случае полный - это окно листера выводится ПОВЕРХ всех окон, включая панель задач винды, исчезает заголовок окна Листера и панель меню. Т.е. на ВЕСЬ монитор отражается только ваш компонент. У листера такого функционала нет. Особенно в формате "если никаких компонент не добавлять".
Это аналогично тому, чтобы открыть простой текстовый файл в нем, и при поиске добиться этого же фокуса - только т.к. никаких компонент там нет - то на весь экран должно открыться простое белое полотно с вкраплением текста на его верху (файл маленький типа открыли). Но это невозможно!
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Wed Nov 10, 2021 00:24    Post subject: Reply with quote

Quote:
У листера такого функционала нет

Есть Smile

При стандартном просмотре двойной клик видимо блокируется. Если реализуется какой то плагин, то на окне Lister создается окно плагина, которое Lister автоматически растягивает на всю свою площадь. В моем примере используется кнопка и она обрабатывает нажатия, а вот если использовать Static (TPanel для Delphi), то он пересылает нажатия родителю, т.е. окну Lister, и да, это разворачивает окно на полный экран.

Code:

#define UNICODE
#define _UNICODE

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

BOOL APIENTRY DllMain (HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
   return TRUE;
}

void __stdcall ListGetDetectString(char* DetectString, int maxlen) {
   snprintf(DetectString, maxlen, "ext=\"TEST\"");
}

HWND APIENTRY ListLoadW (HWND hListerWnd, TCHAR* fileToLoad, int showFlags) {
   HWND hMainWnd = CreateWindowEx(0, TEXT("STATIC"), TEXT("test-wlx"), WS_CHILD | SS_SUNKEN | WS_VISIBLE,
      0, 0, 100, 100, hListerWnd, (HMENU)1000, GetModuleHandle(0), NULL);

   return hMainWnd;
}

void __stdcall ListCloseWindow(HWND hWnd) {
   DestroyWindow(hWnd);
   return;
}


Бинарник тут - https://sgeproject.narod.ru/wlx/min.wlx64
(Как видно в коде я вообще ничего не добавляю и не изменяю).

P.S. Такое поведение как минимум работает при просмотре картинок. И там же работает F11. В отличии от F2 (Обновить файл) и F10 (Закрыть Lister), на которые Lister уже перестает реагировать, если прислать из своего плагина.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Wed Nov 10, 2021 14:01    Post subject: Reply with quote

little-brother wrote:
P.S. Такое поведение как минимум работает при просмотре картинок. И там же работает F11. В отличии от F2 (Обновить файл) и F10 (Закрыть Lister), на которые Lister уже перестает реагировать, если прислать из своего плагина.

Ужасное поведение Листера в этом плане. Да, на картинках при просмотре встроенным функционалом добился повтора этого поведения.
НО! выходит, что по факту работают только:
F1 справка
F2 заявлено, что этим должна активироваться функция перечитывания открытого файла, но я никак не смог добиться того, чтобы она работала.
Т.е. ну ни при каких обстоятельствах я не смог "пересмотреть" открытый файл.
F3 поиск Далее (кстати, эта клавиша почему-то не указана в меню Листера)
F5 тоже, что и F3 поиск Далее
F6 при просмотре текстового файла - показ курсора, будто бы мы вошли в режим редактирования файла.
F7 вызов диалога Поиска, редактирование его условий
F10 выход
F11 позволяет развернуть/восстановить окно Листера.

Ну так давайте тогда просто свой обработчик глобальный повесим на перехват нажатий этих кнопок и введем свою логику для нихWink
F1 - передаем на обработку Листеру - пускай вызывает свою справку
F2 - ловим и используем в своих целях - для перезагрузки содержимого открытого файла
F3+F5+F7 - используем в своих целях для поиска инфы среди содержимого открытого файла
F10 - ок, используем, будем выходить как и принято в домах Швейцарии)))
F11 - ок, используем, развернуть/восстановить окно Листера вместе с нашим компонентом плагина - вполне нужная весчь
F6 и двойной клик (не важно как он формировался и отправлялся - помним же, что я по нажатию F3 дважды его сэмулировал по сути) полностью игнорим
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Wed Nov 10, 2021 18:49    Post subject: Reply with quote

С F2 не все так просто: потребуется переписывать кусок кода, выполняемый при инициализации в ListLoad, чтобы его можно было бы вызвать повторно. Да и костыль это получается. Кнопки n и p вот честно перегружают плагин и потому с моей стороны достаточно просто передать их Lister. C F2 ожидалось бы точно такое поведение, но увы.
F2 работает как минимум при просмотре текста. Так что на потом.

F3/F5/F7 уже используются. В том числе с Ctrl и Shift. Тут без изменений.
F1 наверно лучше показывать справку плагина. Наверно даже сделаю переход на Wiki.
F10, то же странно работает - как будто нажимается Alt. Поскольку выход по F10 это какая то экзотика, думаю можно не реализовывать.

P.S. ghisler ответил конечно на вопрос, но толку в ответе никакого. Что делать с курсором - не ясно Sad
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Wed Nov 10, 2021 20:41    Post subject: Reply with quote

little-brother wrote:
C F2 ожидалось бы точно такое поведение, но увы.
F2 работает как минимум при просмотре текста. Так что на потом.

Увы, но автор так и не ответил вам на ваш вопрос про "Can Lister-plugin catch File > Reload File event?" Значит как минимум этот вопрос там стоит заново поднять, пригласив автора в топик. Указав его никнейм вроде как в вопросе.
И у меня F2 даже в тексте не работает... Но похоже главное это то, что "потребуется переписывать кусок кода, выполняемый при инициализации в ListLoad". Раз это так, то и вправду стоит на очень "потом" отложить это дело)))

little-brother wrote:
F10, то же странно работает - как будто нажимается Alt. Поскольку выход по F10 это какая то экзотика

Ну, почему-то срабатывание Alt - это какая-то особенность плагина. На чистом Листере - без подгруженных компонентов/плагинов F10 честно срабатывает как выход. Но эта кнопка как и сам ESC - не везде адекватно поддерживается. Именно в случае сторонних компонент и встраиваемых плагинов. НО! если в принципе перехват и возможность реализации поддержки для этой кнопки "условно говоря" ничего особо не стоят, то, имхо, будет куда полезнее реализовать это "стандартное листеровское" поведение на выход, чем оставлять текущее непонятное мимикрирование под нажатие кнопки Alt.

little-brother wrote:
ghisler ответил конечно на вопрос, но толку в ответе никакого

Значит вступаем в продолжительную переписку))), задаем уточняющие вопросы.
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Wed Nov 10, 2021 20:59    Post subject: Reply with quote

Quote:
почему-то срабатывание Alt - это какая-то особенность плагина

На минимальном плагине, в котором то и кода нет, F10 также имитирует нажатие Alt, а не F10. Имхо, это все последствие каких то костылей в Lister.

Quote:
Значит вступаем в продолжительную переписку))), задаем уточняющие вопросы.

Да вроде пофиксил, правда мне не очень нравится как (через SetCursor, который меняет курсор глобально).
Да и не факт, что ghisler знает - TC, ранее во всяком случае, был написан на старой версии Delphi, т.е. использовал уже готовые компоненты. Сейчас скорее всего это уже не так, т.к. до 7 включительно не было поддержки юникода, который в Windows используется по умолчанию.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Thu Nov 11, 2021 16:29    Post subject: Reply with quote

little-brother wrote:
На минимальном плагине, в котором то и кода нет, F10 также имитирует нажатие Alt, а не F10. Имхо, это все последствие каких то костылей в Lister.

ИМХО, тем более надо перекрыть эту клавишу своей логикой - срабатывания нажатия ESC|выход. Чтоб уж никакой ALTернативщины не было)))
little-brother wrote:
правда мне не очень нравится как (через SetCursor, который меняет курсор глобально).

ну и главное же работает)))
хотя, если честно, ну и пусть бы себе он кратковременно менялся на палочку. Ибо ну не успеваешь это толком заметить, т.к. достаточно было бы дернуть мышкой хоть на мм, как палочка опять превращалась в стрелочку. Ну и пусть так.
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Thu Nov 11, 2021 19:16    Post subject: Reply with quote

Quote:
надо перекрыть эту клавишу своей логикой

Да чет нет желания править косяки TC. С какой то версии надеюсь, что F2 и F10 заработают как надо. С F2 подозреваю проблема в том, что Lister в текстовом режиме, где она работает, не только перегружает файл, но и переходит на позицию, в которой был, потому там надо как то передать это предыдущее состояние в новое, а штатных средств для этого нет.

Quote:
ну и пусть бы себе он кратковременно менялся на палочку

Переставал работать выход по Esc, да и при быстром F3 получался двойной клик, который разворачивает окно на весь экран. Так себе поведение. Сейчас стабильно работает.

P.S. Поддержку csv отключил в новом релизе.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Thu Nov 11, 2021 22:52    Post subject: Reply with quote

little-brother wrote:
С какой то версии надеюсь, что F2 и F10 заработают как надо.

Ой, я бы не надеялся, ой, не надеялся.....
Намного более полезно и правильно будет приделать свои "костыли" к этим клавишам.

Добавлено спустя 37 минут:

Кстати, в вики надо бы уточнить, что число 16 во всех упоминаниях процесса установки 64 битных дров - это потому,
что на компе в момент работы с драйверами стоял офис 2016.
Если у кого-то стоит 2019 - то там вроде как 19 будет)) А то все начнут искать ТОЛЬКО элементы с 16 внутри и попадут в тупик, не найдя их у себя.

И вместо строгого пути вида "c:\Program Files\totalcmd\" лучше указать "%COMMANDER_PATH%" - ибо мало ли кто куда поставил тотал? А так - в этой переменной этот путь должен быть указан.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Tue Feb 22, 2022 12:02    Post subject: Reply with quote

little-brother
гипотетический вопрос - а эти драйвера не могут показывать/выдавать код VBA из модулей/листов/книги?
Было бы очень приятно, кроме таблиц увидеть (при наличии) и код макросов/VBA, что встроен в просматриваемый excel файл с макросам - xlsm.
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Tue Feb 22, 2022 20:17    Post subject: Reply with quote

Практически уверен, что код показать не смогут.
Получить список макросов (в терминах баз данных - процедуру) или запустить - небольшая, особенно для Excel, вероятность есть.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Tue Feb 22, 2022 23:53    Post subject: Reply with quote

https://www.codeproject.com/Articles/15216/Office-2007-bin-file-format
https://www.decalage.info/vba_tools
https://interoperability.blob.core.windows.net/files/MS-OVBA/%5bMS-OVBA%5d.pdf

это вроде как может помочь с доступом/выборкой кода VBA из файла-проекта!
Если что - можно интегрировать в плагин и будет супер-такой плаг, который может такое, что не могут другие)))
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Wed Feb 23, 2022 01:05    Post subject: Reply with quote

Странно, что формат бинарный. Вроде как с 2007-го файлы это просто архивы и там xml-ки хранятся. Возможно макросы как бинарные данные и держатся (проверить не могу, у меня Office 2003 при сохранении в 2007 теряет макросы). В целом дохлый номер в бинарном формате рыться. Тем более в таком, т.к. наверняка там куча нюансов.

Макросы можно достать через OLE-интерфейсы, установленного Office, т.е. без Office не будет работать в отличии от ODBC драйверов. Работать с OLE в C, на котором написан плагин, очень больно, и потому потребуется сменить его на С++. К этому я не готов.
Другой вариант - это вызывать скрипты, напр. PowerShell, но там могут возникнуть проблемы с правами.

Как мне кажется - для ODBC-плагина данный функционал излишен, т.к. другие то базы данных макросов не имеют. Гораздо проще сделать дополнительный плагин, который будет помещен после odbc-плагина по иерархии и который будет содержать список макросов. В таком случае его надо писать с нуля, и можно сразу на С++.

Хотя думаю хватит мне развлекаться - надо начинать работу искать Very Happy
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Fri Feb 25, 2022 11:44    Post subject: Reply with quote

little-brother
день добрый!

хоть и поиск Р. - очень важное дело - в плагине ошибка вылетает.
Таких файлов много.. Просьба посмотреть:
w w w.upload.ee/files/13916710/export.xlsx.html

типа синтаксическая ошибка в выражении FROM.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next
Page 6 of 10

 
Jump to:  
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