nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
73545 ради одной команды тащить в скрипт UDF Зато команда будет выполнена корректно, без плясок с бубнами, да и зачем изобретать велосипед? Ну, размер исходника немного возрастет, стрипер выбросит не нужное, так, что возрастет незначительно, скорость будет выше, чем у твоего скрипта за счет того, что все делается напрямую, а не посылкой каких-то команд, с ожиданием отклика или задержкой, в твоем скрипте, например, куча Sleep(). Да и читаемость лучше, а это не маловажный фактор.
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO К стати, ты не знаешь аналога hh.exe для использования в WinPe ? Просмотрщиков много, но для работы со справками большинство неудобны. Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает.
|
Отправлено: 30-Янв-2020 11:53
(спустя 1 час 37 минут)
niknikto
- Стаж: 5 лет 9 месяцев
- Сообщений: 60
- Репутация:7[+] [-]
|
73549AZJIO К стати, ты не знаешь аналога hh.exe для использования в WinPe ? Просмотрщиков много, но для работы со справками большинство неудобны. Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает. SumatraPDF читает chm файлы
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Перезалил Help.7z если указать Exact_match=1 то заголовок справки определяется точным соответствием. Если PathCHM=http..... то справка открывается по ссылке, а искомый текст в ссылке определяется %s. Можно сформировать ссылку как поиск в домене. Если не найден ini или связанная с расширением секция, то появляется информационное сообщение с предложением искать в Google.73549не знаешь аналога hh.exe не знаю
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz, я обфуцировал HtmlHelp.au3 у меня получилось 344 строки, минус 23 строки кода, в итоге импортировано 321 строка. У меня из 140 строк (обновлённый, а был 82) осталось 84 строки (старый код дал 55 строк)скорость будет выше, чем у твоего скрипта за счет того, что все делается напрямую, а не посылкой каких-то команд, с ожиданием отклика или задержкой, в твоем скрипте, например, куча Sleep(). У меня Sleep() после активности объекта справки, если что-то выделил, например часть кода, при чём указывание $hWnd не помогает исправить ситуацию, так что надо ещё проверять будет ли _GUICtrlTab_ClickTab на этом спотыкаться, ведь ControlCommand($hWnd, "", $hControl, "TabRight") также указывает дескриптор окна, дескриптор элемента, но умудряется спотыкаться. Второй Sleep(10) можно удалить, третий Sleep(50) можно заменить на клик кнопки. Но как я говорил скорость тут не важна, потому что винда делает задержи по 400мс намерено, а у меня на данный момент в сумме 110 (0,1 секунда). nikzzzz в HtmlHelp.au3$hWnd = WinWait($sTitle, '', 5) получить дескриптор, а потом пользоваться заголовком ControlClick($sTitle... во всех функциях не экономично, потому что доступ к окну всегда происходит по дескриптору. Если получить дескриптор а пользоваться заголовком это заставить скрипт каждый раз из заголовка вычислять дескриптор, причём если будет похожие по заголовку окна и по умолчанию режим поиска заголовка по началу то при активации другого окна с похожим заголовком часть скрипта выполнится для другого окна.ControlClick($sTitle, '', '[CLASS:Button; INSTANCE:1]', 'left') вместо left лучше main, потому что для левши с переназначенной кнопкой это вызывает конт. меню.
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO, 73572меня получилось 344 строки, минус 23 строки кода Посмотрел, после стрипера от библиотека осталось 254 строки кода. Но это все не принципиально, нет особого смысла оптимизации, не та задача.73572ControlClick($sTitle... во всех функциях не экономично Согласен, просто нужно было быстро решить задачу, написал на скорую руку, работает, и забыл про нее, если бы не твой пост с Help.au3, вообще бы про нее не вспомнил. Добавлено через 1 час 19 минут 7 секунд:
73572вместо left лучше main Не знал, считал что переназначение кнопок на это не влияет, спасибо за инфу.
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO,73576по умолчанию left, что кажется странным Не понял, left - выполнить, Right - меню, свойства и т.п Я просто считал, что переназначения кнопок в мыши через ее свойства просто ее "переворачивает" ее на 180 градусов, и левая кнопка остается левой, а правая - правой, сам этим не пользовался, правша.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
73577и левая кнопка остается левой если left, то левая кнопка остаётся левой, для левши указательный палец на правой, в итоге left должен при переназначении кнопок вызывать меню, именно поэтому я и говорил что надо main. А значит и по умолчанию предпочтительно main. Но всё это я в теории говорю, я не тестировал.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Методом поиска нашёл следующие виды переменных:$T $%T $%&T $%&&T &T &&T %T %%T %&T %%&T @T @@T @&T Имеет ли смысл различать их при подсветке? Используя [@%&$]++\w++ получил список в консоль, далее заменил тексты \w++ на "T", далее удалил дубликаты и сортировал.73522Я пользуюсь редактором SynWrite ........... Если интересно, могу выложить. Да, можно было бы посмотреть, в официальном не подсвечивается синтаксис AutoIt3, PureBasic и PECMD.
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO, 73543Хотел на PureBasic переписать, чтобы компактная утилита была, но не нашёл способа манипуляций вкладок Что-то меня это задело, обижаешь пурик ! Написал утилитуHtmlHelp#HH_DISPLAY_TOPIC = 1 #HH_KEYWORD_LOOKUP = $0D #HH_SYNC = $09 #HH_DISPLAY_INDEX = $02 #PB_Shortcut_SrodFlag=1<<16 Structure tAKLIN cbStruct.l fReserved.l pszKeywords.s pszUrl.s pszMsgText.s pszMsgTitle.s pszWindow.s fIndexOnFail.l EndStructure Global hWnd, hWnd_Find, g_ID_Search, ID , g_class.s, classText.s = Space(256) Procedure.l enumChildren(hwnd.l) If hwnd GetClassName_(hwnd, @classText, 256) If classText = g_class ID = ID + 1 If ID = g_ID_Search hWnd_Find = hwnd ProcedureReturn 0 EndIf EndIf ProcedureReturn 1 EndIf ProcedureReturn 0 EndProcedure Procedure _KillProcess(Pid) Protected phandle = OpenProcess_(#PROCESS_TERMINATE, #False, Pid) If phandle <> #Null If TerminateProcess_(phandle, 1) result = #True EndIf CloseHandle_(phandle) EndIf ProcedureReturn result EndProcedure Procedure _KillOtherProcess(ProcName$, CurrentPid.l) Protected ProcNameTmp$=Space(#MAX_PATH),ProcessFound,Pid,Process.ProcessENTRY32,hProcess Process.ProcessENTRY32\dwSize = SizeOf(ProcessENTRY32) Protected psapi_dll=OpenLibrary(#PB_Any,"psapi.dll") Protected Snapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0) If Snapshot ProcessFound = Process32First_(Snapshot, @Process) While ProcessFound Pid = Process\th32ProcessID If Pid <> CurrentPid hProcess=OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ,#Null,Pid) If hProcess CallFunction(psapi_dll,"GetModuleFileNameExW",hProcess,#Null,@ProcNameTmp$,#MAX_PATH) CloseHandle_(hProcess) If LCase(ProcName$)=LCase(ProcNameTmp$) _KillProcess(Pid) EndIf EndIf EndIf ProcessFound = Process32Next_(Snapshot, @Process) Wend EndIf CloseHandle_(Snapshot) CloseLibrary(psapi_dll) EndProcedure Procedure HtmlHelp(HelpFile.s, Keyword.s) Protected AKLIN.tAKLIN,hWnd.l Protected HHCtrl_ocx = OpenLibrary(#PB_Any, "HHCtrl.ocx") AKLIN\cbStruct = SizeOf(tAKLIN) AKLIN\fReserved = 0 AKLIN\pszKeywords = Keyword AKLIN\fIndexOnFail = #True hWnd=CallFunction(HHCtrl_ocx, "HtmlHelpW",0, @HelpFile, #HH_KEYWORD_LOOKUP, AKLIN) If hWnd ID = 0 g_ID_Search = 1 g_class.s = "Button" EnumChildWindows_(hWnd, @enumChildren(), 0) SendMessage_(hWnd_Find, #BM_CLICK, 0, 0) CallFunction(HHCtrl_ocx, "HtmlHelpW", 0, @HelpFile, #HH_DISPLAY_TOPIC, 0) CloseLibrary(HHCtrl_ocx) While GetTopWindow_(hWnd):Delay(100):Wend EndIf EndProcedure FullPrograName$=Space(#MAX_PATH) GetModuleFileName_(#NUL,@FullPrograName$,#MAX_PATH) _KillOtherProcess(FullPrograName$,GetCurrentProcessId_()) HelpFile$ = ProgramParameter() SearchWord$ = ProgramParameter() HtmlHelp(HelpFile$, SearchWord$) В скомпилированном виде весит 8 Kb Не требует указания title окна, посчитал излишеством.73601можно было бы посмотреть Выложу чуть позже.
Последний раз редактировалось: nikzzzz (2020-02-02 12:27), всего редактировалось 1 раз
|
Отправлено: 02-Фев-2020 04:25
(спустя 2 часа 24 минуты)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz, дык я тоже написал вот Нашёл баг, номера элементов после перезапуска справки меняются, надо подумать. Я как раз удалил из примера возвращаемые тексты элементов. Если пару раз выбрать другие вкладки, то начинает работать. У поля ввода нет текста, вариант с поиском по тексту отпадает. Немного разгадал: 3 поля ввода, один в комбо, его можно отсечь по родительскому окну, два других принадлежат не вкладкам, а дочернему окну в котором находится Таб. Номер 1 получает тот, который первым открыт, он первым рисуется и получает номер. Как вариант можно в оба сделать вставку, так как для "Избранного это не мешает". Перезалил, теперь работает стабильно.
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO,73601в официальном не подсвечивается синтаксис AutoIt3, PureBasic и PECMD. Дополнительные лексеры можно взять здесь.73605теперь работает стабильно. Как-то уж больно все сложно. Добавлено через 2 часа 35 минут 31 секунда: AZJIO Посмотрел твой Help.pb, красиво сделан, но уж как-то очень ненадежно выглядит, хотя для данной задачи не принципиально. Немного подправил свой HtmlHelp (использовал твои наработки). Добавлено через 2 часа 55 минут 20 секунд: SynWrite Подсветка Grub4Dos, Tbs, PeCmd.
|
avalat
- Стаж: 9 лет 9 месяцев
- Сообщений: 465
- Репутация:127[+] [-]
|
SynWrite Подсветка Grub4Dos, Tbs, PeCmd. Подсветка для PureBasic
|
Страница 2 из 4
Текущее время: 21-Ноя 18:31
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|