[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
73545 ради одной команды тащить в скрипт UDF
Зато команда будет выполнена корректно, без плясок с бубнами, да и зачем изобретать велосипед?
Ну, размер исходника немного возрастет, стрипер выбросит не нужное, так, что возрастет незначительно, скорость будет выше, чем у твоего скрипта за счет того, что все делается напрямую, а не посылкой каких-то команд, с ожиданием отклика или задержкой, в твоем скрипте, например, куча Sleep().
Да и читаемость лучше, а это не маловажный фактор.

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
AZJIO
К стати, ты не знаешь аналога hh.exe для использования в WinPe ?
Просмотрщиков много, но для работы со справками большинство неудобны.
Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает.

[Quote]

    niknikto
  • 20306
  • Longevity: 6 years 4 months
  • Posts: 60
  • REPUTATION:7

    [+] [-]
73549AZJIO
К стати, ты не знаешь аналога hh.exe для использования в WinPe ?
Просмотрщиков много, но для работы со справками большинство неудобны.
Я пока остановился на KchmViewer, наиболее близок по функционалу к hh.exe , но у него свои заморочки, не на всех chm файлах корректно работает.
SumatraPDF читает chm файлы

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
niknikto
73551SumatraPDF читает chm файлы
Знаю, к сожалению не подходит, для работы со справками неудобен. ak

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
Перезалил Help.7z
если указать Exact_match=1 то заголовок справки определяется точным соответствием.
Если PathCHM=http..... то справка открывается по ссылке, а искомый текст в ссылке определяется %s. Можно сформировать ссылку как поиск в домене.
Если не найден ini или связанная с расширением секция, то появляется информационное сообщение с предложением искать в Google.
73549не знаешь аналога hh.exe
не знаю

[Quote]

    AZJIO
  • 17953
  • 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, потому что для левши с переназначенной кнопкой это вызывает конт. меню.

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
AZJIO, aa
73572меня получилось 344 строки, минус 23 строки кода
Посмотрел, после стрипера от библиотека осталось 254 строки кода.
Но это все не принципиально, нет особого смысла оптимизации, не та задача.
73572ControlClick($sTitle... во всех функциях не экономично
Согласен, просто нужно было быстро решить задачу, написал на скорую руку, работает, и забыл про нее, если бы не твой пост с Help.au3, вообще бы про нее не вспомнил.
Добавлено через 1 час 19 минут 7 секунд:
73572вместо left лучше main
Не знал, считал что переназначение кнопок на это не влияет, спасибо за инфу.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
nikzzzz, но по умолчанию left, что кажется странным

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
AZJIO,
73576по умолчанию left, что кажется странным
Не понял, left - выполнить, Right - меню, свойства и т.п
Я просто считал, что переназначения кнопок в мыши через ее свойства просто ее "переворачивает" ее на 180 градусов, и левая кнопка остается левой, а правая - правой, сам этим не пользовался, правша.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
73577и левая кнопка остается левой
если left, то левая кнопка остаётся левой, для левши указательный палец на правой, в итоге left должен при переназначении кнопок вызывать меню, именно поэтому я и говорил что надо main. А значит и по умолчанию предпочтительно main. Но всё это я в теории говорю, я не тестировал.

[Quote]

    AZJIO
  • 17953
  • 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.

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
AZJIO, aa
73543Хотел на PureBasic переписать, чтобы компактная утилита была, но не нашёл способа манипуляций вкладок
Что-то меня это задело, обижаешь пурик ! ab
Написал утилиту

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

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
nikzzzz, дык я тоже написал вот
Нашёл баг, номера элементов после перезапуска справки меняются, надо подумать. Я как раз удалил из примера возвращаемые тексты элементов. Если пару раз выбрать другие вкладки, то начинает работать. У поля ввода нет текста, вариант с поиском по тексту отпадает.
Немного разгадал: 3 поля ввода, один в комбо, его можно отсечь по родительскому окну, два других принадлежат не вкладкам, а дочернему окну в котором находится Таб. Номер 1 получает тот, который первым открыт, он первым рисуется и получает номер. Как вариант можно в оба сделать вставку, так как для "Избранного это не мешает".
Перезалил, теперь работает стабильно.

[Quote]

    nikzzzz
  • 215
  • 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.

[Quote]

    avalat
  • 222
  • Longevity: 10 years
  • Posts: 504
  • REPUTATION:127

    [+] [-]
SynWrite
Подсветка Grub4Dos, Tbs, PeCmd.
Подсветка для PureBasic

Page 2 of 4


Display posts:    

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