nikzzzz
  - Longevity: 10 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
73545 ради одной команды тащить в скрипт UDF Зато команда будет выполнена корректно, без плясок с бубнами, да и зачем изобретать велосипед? Ну, размер исходника немного возрастет, стрипер выбросит не нужное, так, что возрастет незначительно, скорость будет выше, чем у твоего скрипта за счет того, что все делается напрямую, а не посылкой каких-то команд, с ожиданием отклика или задержкой, в твоем скрипте, например, куча Sleep(). Да и читаемость лучше, а это не маловажный фактор.
|
nikzzzz
  - Longevity: 10 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
AZJIO К стати, ты не знаешь аналога hh.exe для использования в WinPe ? Просмотрщиков много, но для работы со справками большинство неудобны. Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает.
|
 Отправлено: 30-Jan-2020 11:53
(after 1 hour 37 minutes)
niknikto
  - Longevity: 6 years 4 months
- Posts: 60
- REPUTATION:7[+] [-]
|
73549AZJIO К стати, ты не знаешь аналога hh.exe для использования в WinPe ? Просмотрщиков много, но для работы со справками большинство неудобны. Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает. SumatraPDF читает chm файлы
|
AZJIO
  - Longevity: 7 years 3 months
- Posts: 1322
- REPUTATION:127[+] [-]
|
Перезалил Help.7z если указать Exact_match=1 то заголовок справки определяется точным соответствием. Если PathCHM=http..... то справка открывается по ссылке, а искомый текст в ссылке определяется %s. Можно сформировать ссылку как поиск в домене. Если не найден ini или связанная с расширением секция, то появляется информационное сообщение с предложением искать в Google.73549не знаешь аналога hh.exe не знаю
|
AZJIO
  - Longevity: 7 years 3 months
- Posts: 1322
- REPUTATION: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
  - Longevity: 10 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
AZJIO,  73572меня получилось 344 строки, минус 23 строки кода Посмотрел, после стрипера от библиотека осталось 254 строки кода. Но это все не принципиально, нет особого смысла оптимизации, не та задача.73572ControlClick($sTitle... во всех функциях не экономично Согласен, просто нужно было быстро решить задачу, написал на скорую руку, работает, и забыл про нее, если бы не твой пост с Help.au3, вообще бы про нее не вспомнил. Добавлено через 1 час 19 минут 7 секунд:
73572вместо left лучше main Не знал, считал что переназначение кнопок на это не влияет, спасибо за инфу.
|
nikzzzz
  - Longevity: 10 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
AZJIO,73576по умолчанию left, что кажется странным Не понял, left - выполнить, Right - меню, свойства и т.п Я просто считал, что переназначения кнопок в мыши через ее свойства просто ее "переворачивает" ее на 180 градусов, и левая кнопка остается левой, а правая - правой, сам этим не пользовался, правша.
|
AZJIO
  - Longevity: 7 years 3 months
- Posts: 1322
- REPUTATION:127[+] [-]
|
73577и левая кнопка остается левой если left, то левая кнопка остаётся левой, для левши указательный палец на правой, в итоге left должен при переназначении кнопок вызывать меню, именно поэтому я и говорил что надо main. А значит и по умолчанию предпочтительно main. Но всё это я в теории говорю, я не тестировал.
|
AZJIO
  - Longevity: 7 years 3 months
- Posts: 1322
- REPUTATION:127[+] [-]
|
Методом поиска нашёл следующие виды переменных:$T $%T $%&T $%&&T &T &&T %T %%T %&T %%&T @T @@T @&T Имеет ли смысл различать их при подсветке? Используя [@%&$]++\w++ получил список в консоль, далее заменил тексты \w++ на "T", далее удалил дубликаты и сортировал.73522Я пользуюсь редактором SynWrite ........... Если интересно, могу выложить. Да, можно было бы посмотреть, в официальном не подсвечивается синтаксис AutoIt3, PureBasic и PECMD.
|
nikzzzz
  - Longevity: 10 years
- Posts: 3114
- REPUTATION: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можно было бы посмотреть Выложу чуть позже.
Last edited by nikzzzz on 2020-02-02 12:27; edited 1 time in total
|
 Отправлено: 02-Feb-2020 04:25
(after 2 hours 24 minutes)
AZJIO
  - Longevity: 7 years 3 months
- Posts: 1322
- REPUTATION:127[+] [-]
|
nikzzzz, дык я тоже написал вот Нашёл баг, номера элементов после перезапуска справки меняются, надо подумать. Я как раз удалил из примера возвращаемые тексты элементов. Если пару раз выбрать другие вкладки, то начинает работать. У поля ввода нет текста, вариант с поиском по тексту отпадает. Немного разгадал: 3 поля ввода, один в комбо, его можно отсечь по родительскому окну, два других принадлежат не вкладкам, а дочернему окну в котором находится Таб. Номер 1 получает тот, который первым открыт, он первым рисуется и получает номер. Как вариант можно в оба сделать вставку, так как для "Избранного это не мешает". Перезалил, теперь работает стабильно.
|
nikzzzz
  - Longevity: 10 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
AZJIO,73601в официальном не подсвечивается синтаксис AutoIt3, PureBasic и PECMD. Дополнительные лексеры можно взять здесь.73605теперь работает стабильно. Как-то уж больно все сложно. Добавлено через 2 часа 35 минут 31 секунда: AZJIO Посмотрел твой Help.pb, красиво сделан, но уж как-то очень ненадежно выглядит, хотя для данной задачи не принципиально. Немного подправил свой HtmlHelp (использовал твои наработки). Добавлено через 2 часа 55 минут 20 секунд: SynWrite Подсветка Grub4Dos, Tbs, PeCmd.
|
avalat
  - Longevity: 10 years
- Posts: 504
- REPUTATION:127[+] [-]
|
SynWrite Подсветка Grub4Dos, Tbs, PeCmd. Подсветка для PureBasic
|
Page 2 of 4
Current time is: 22-Jun 21:31
All times are UTC + 3
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 You cannot attach files in this forum You can download files in this forum
|
|