elvis66666 Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 Хотел спросить у тех, кто пользуется: 1 - Ultimap 2 работает оооочень медленно, на отсев одного раза тратится час и более, конечно использую HDD, а не SSD и скорость записи/чтения всего 60мб.с. , но это что-то уж ооочень долго. У всех так? или это баг? 2 - Ultimap - при добавлении инструкций в codelist постоянно высвечивается окошко добавить и его нельзя закрыть, помогает только убить процесс CE =( Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 Ultimap 2. Ничего не скажу. железо не подходит Ну, да в Ultimap есть такой баг. Можешь написать Дарк Байту Для вывода и сохранения данных из окна Ultimap можно использовать код из темы Работа с данными ultimap через lua. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 26 января, 2017 Автор Поделиться Опубликовано 26 января, 2017 35 минуты назад, MasterGH сказал: Ultimap 2. Ничего не скажу. железо не подходит Ну, да в Ultimap есть такой баг. Можешь написать Дарк Байту Для вывода и сохранения данных из окна Ultimap можно использовать код из темы Работа с данными ultimap через lua. Благодарю Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 26 января, 2017 Автор Поделиться Опубликовано 26 января, 2017 1 час назад, MasterGH сказал: Ultimap 2. Ничего не скажу. железо не подходит Ну, да в Ultimap есть такой баг. Можешь написать Дарк Байту Для вывода и сохранения данных из окна Ultimap можно использовать код из темы Работа с данными ultimap через lua. Кстати , может подскажешь, как уменьшить тормоза в игре, когда работает ultimap? уж слишком он жестоко рубит процессор. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 59 минут назад, elvis66666 сказал: Кстати , может подскажешь, как уменьшить тормоза в игре, когда работает ultimap? Я бы сам хотел знать как это сделать. Я довольно давно пытался сделать аналог ultimap - очень быстрый. Через Lua скрипт я патчил call-ы и вел считчик их вывозов в специальной области памяти. Её я сканировал обычными способом на уменьшилось/увеличилось/не изменилось. Находился счетчик. По нему выходил на инструкцию. Но, это касается не всех call-ов, и совершенно не касается прыжков (как в ultimap). Код в этой теме. Форматирование текста к сожалению пропало. Поправлю скоро. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 26 января, 2017 Автор Поделиться Опубликовано 26 января, 2017 Вот ultimap2 в этом плане вообще супер, не тормозит ничего, но требует быстрый накопитель большого объема Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 Я так думаю, что для CE вообще надо железа покупать - 64 Гб оперативы и быстрой - SSD жесткий диск чем больше тем лучше, или несколько таких - проц под ultimap2 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 26 января, 2017 Автор Поделиться Опубликовано 26 января, 2017 1 минуту назад, MasterGH сказал: Я так думаю, что для CE вообще надо железа покупать - 64 Гб оперативы и быстрой - SSD жесткий диск чем больше тем лучше, или несколько таких - проц под ultimap2 ну вот все обновил, кроме SSD, она на 128 у меня была, но ее не хватает) Нужно разжиться m2 SSD Сейчас попробовал lua скрипты, вообще супер) Еще раз спасибо. А можно быстро переписать скрипт , чтобы в codelist добавить столбцы? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 2 часа назад, elvis66666 сказал: А можно быстро переписать скрипт , чтобы в codelist добавить столбцы? Попробую сделать. upd. Быстро не получится. Может минут через 30. Эта функция запрятана и её нет в main.lua. Поэтому по кнопкам двигаемся по CE, и таймеру её придется оформить. Функция добавления мне тоже нужна. Давно хотел сделать. upd2. В общем не получилось. На одном из диалогов InputboxTop не вызывается doClick (inputboxTop.Button1.doClick() ). Код оставлю, может кто решит допилить. Скрытый текст function FindFrom(formName) local formCount = getFormCount() for i=0, formCount-1 do if(getForm(i).Name == formName) then return getForm(i) end end end local defaultDisassemblerView = getMemoryViewForm().DisassemblerView local popupmenuFromDefaultDisassemblerView = control_getPopupMenu(defaultDisassemblerView) local menuItem_AddressCodeList = nil local menuItems = popupmenuFromDefaultDisassemblerView.Items local count = menuItems.Count - 1 for i = 0, count-1 do local item = menuItems.getItem(i) if(item.Caption == 'Add to the code list') then menuItem_AddressCodeList = item break end end getMemoryViewForm().DisassemblerView.TopAddress = 0x75A55111 menuItem_AddressCodeList.doClick() local test = 0 local stateAddToCodeList = false local timer = createTimer() timer.Interval = 2000 timer.OnTimer = function () print('A') local frmAddToCodeList = FindFrom('frmAddToCodeList') if(frmAddToCodeList) then frmAddToCodeList.Button1.doClick() print('B') return end print('C') local inputboxTop = FindFrom('InputboxTop') if(inputboxTop) then inputboxTop.Button1.doClick() print('D') return end print('E') getMemoryViewForm().DisassemblerView.TopAddress = getMemoryViewForm().DisassemblerView.TopAddress + 1 menuItem_AddressCodeList.doClick() test = test + 1 if(test >= 10) then timer.Enabled = false end end Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 26 января, 2017 Поделиться Опубликовано 26 января, 2017 (изменено) 3 hours ago, MasterGH said: upd2. В общем не получилось. На одном из диалогов InputboxTop не вызывается doClick (inputboxTop.Button1.doClick() ). Код оставлю, может кто решит допилить. Я думаю это из-за того, что данная форма вызвана через if InputboxTop.showModal() == mrOk и у кнопки установлен ModalResult := mrOk, при котором не требуется задания onClick. В обычном случае достаточно передать форме ModalResult = 1 и выполнить Hide() (модальные формы не закрываются), но пытаясь проделать это через CE я, в случае вызова Hide() ловлю блокировку всех окон, а Close передает ModalResult = 2 (читай mrCancel). Попробую еще потыкать. UPD: Наврал про хайд, по второму кругу получилось на своих формах. Но так как я не могу запустить ваш скрипт, могу советовать только теоретически. Попробуйте следующее - после нахождения inputboxTop выполнить: inputboxTop.ModalResult = mrOK inputboxTop.hide() Изменено 26 января, 2017 пользователем srg91 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 27 января, 2017 Поделиться Опубликовано 27 января, 2017 (изменено) 11 час назад, elvis66666 сказал: Вот ultimap2 в этом плане вообще супер, не тормозит ничего Серьёзно? Если так, то надо бы обновить проц, но где взять ~60 тыщ на нормальный комп? Хочется и ultimap2, и DirectX 12, да плюс ещё SSD под ultimap2. А если ещё и 64 гига оперативы брать... Нехило так вложиться надо... Изменено 27 января, 2017 пользователем aliast Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 января, 2017 Поделиться Опубликовано 27 января, 2017 11 час назад, srg91 сказал: Я думаю это из-за того, что данная форма вызвана через if InputboxTop.showModal() == mrOk и у кнопки установлен ModalResult := mrOk, при котором не требуется задания onClick. Да, так и есть. Спасибо 11 час назад, srg91 сказал: Попробуйте следующее - после нахождения inputboxTop выполнить: inputboxTop.ModalResult = mrOK inputboxTop.hide() Работает. Добавление инструкций начиная со своего стартового адреса (это скрипт не для Ultimap, а просто как добавить промежуток адресов из дизассемблера) Скрытый текст startAddress = 0x0045464A -- поставить свой адрес function FindFrom(formName) local formCount = getFormCount() for i=0, formCount-1 do if(getForm(i).Name == formName) then return getForm(i) end end end local defaultDisassemblerView = getMemoryViewForm().DisassemblerView local popupmenuFromDefaultDisassemblerView = control_getPopupMenu(defaultDisassemblerView) local menuItem_AddressCodeList = nil local menuItems = popupmenuFromDefaultDisassemblerView.Items local count = menuItems.Count - 1 for i = 0, count-1 do local item = menuItems.getItem(i) if(item.Caption == 'Add to the code list') then menuItem_AddressCodeList = item break end end local test = 0 local stateAddToCodeList = false local timer = createTimer(nil) timer.Interval = 50 stateAdd = false timer.OnTimer = function () if(stateAdd) then stateAdd = false getMemoryViewForm().DisassemblerView.TopAddress = getMemoryViewForm().DisassemblerView.TopAddress + getInstructionSize(getMemoryViewForm().DisassemblerView.TopAddress) menuItem_AddressCodeList.doClick() test = test + 1 if(test >= 5) then timer.Enabled = false end return end local inputboxTop = FindFrom('InputboxTop') if(inputboxTop and inputboxTop.Enabled and inputboxTop.Visible) then inputboxTop.ModalResult = mrOK inputboxTop.Button1.ModalResult = mrOK inputboxTop.Button1.doClick() inputboxTop.hide() print() stateAdd = true return end local frmAddToCodeList = FindFrom('frmAddToCodeList') if(frmAddToCodeList and frmAddToCodeList.Enabled and frmAddToCodeList.Visible) then frmAddToCodeList.ModalResult = mrOK frmAddToCodeList.Button1.ModalResult = mrOK frmAddToCodeList.Button1.doClick() return end end timer.Enabled = true getMemoryViewForm().DisassemblerView.TopAddress = startAddress menuItem_AddressCodeList.doClick() Добавление правой колонки из Ultimap (можно поставить левую). Если будет ошибаться, то задержку таймера увеличить с 50 на значение выше Скрытый текст -- Вывод колонки2 local column = 2 function FindFrom(formName) local formCount = getFormCount() for i=0, formCount-1 do if(getForm(i).Name == formName) then return getForm(i) end end end function GetAddressArray(argListView, columnNumber) local addresses = {} local items1 = argListView.Items local linesCount = items1.getCount() local line = '' for i=0, linesCount-1 do local item = items1.getItem(i) if(columnNumber == 1) then addresses[i+1] = getAddress(item.Caption) else local subItems = item.subItems local itemCount = subItems.getCount() if(columnNumber == 2) then addresses[i+1] = getAddress(subItems[columnNumber-2]) end end end return addresses end local frmUltimap = FindFrom('frmUltimap') local ultimapListView1 = frmUltimap.findComponentByName('ListView1') local tableAddresses = GetAddressArray(ultimapListView1, column) local defaultDisassemblerView = getMemoryViewForm().DisassemblerView local popupmenuFromDefaultDisassemblerView = control_getPopupMenu(defaultDisassemblerView) local menuItem_AddressCodeList = nil local menuItems = popupmenuFromDefaultDisassemblerView.Items local count = menuItems.Count - 1 for i = 0, count-1 do local item = menuItems.getItem(i) if(item.Caption == 'Add to the code list') then menuItem_AddressCodeList = item break end end local stateAddToCodeList = false local timer = createTimer(nil) timer.Interval = 50 stateAdd = false timer.OnTimer = function () if(stateAdd) then stateAdd = false indexTable = indexTable + 1 if(indexTable > #tableAddresses) then timer.Enabled = false else getMemoryViewForm().DisassemblerView.TopAddress = tableAddresses[indexTable] menuItem_AddressCodeList.doClick() end return end local inputboxTop = FindFrom('InputboxTop') if(inputboxTop and inputboxTop.Enabled and inputboxTop.Visible) then inputboxTop.ModalResult = mrOK inputboxTop.Button1.ModalResult = mrOK inputboxTop.Button1.doClick() inputboxTop.hide() stateAdd = true return end local frmAddToCodeList = FindFrom('frmAddToCodeList') if(frmAddToCodeList and frmAddToCodeList.Enabled and frmAddToCodeList.Visible) then frmAddToCodeList.ModalResult = mrOK frmAddToCodeList.Button1.ModalResult = mrOK frmAddToCodeList.Button1.doClick() return end end timer.Enabled = true indexTable = 1 getMemoryViewForm().DisassemblerView.TopAddress = tableAddresses[indexTable] menuItem_AddressCodeList.doClick() Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения