Ясно...
Спасибо!
Сообщение откорректировали, спасибо!VladSh wrote:в Hotkeys-плагине добавил вызов скрипта, да назвал скрипт неверно (случайно добавил -OLD в конец, т.е. получилось MyScript.js-OLD), потом при вызове выдалось сообщение с красным крестом...
Можно ли отркорректировать сообщение в более понятное, а то я долго маялся, не понимая что произошло...
Code: Select all
Call("Scripts::Main", 1, "SCRIPT", "ARGUMENTS")
Call("Scripts::Main", 2, "SCRIPT", "ARGUMENTS")
Call("Scripts::Main", 3, "SCRIPT")
InputBox - это не обертка, и никогда не была такой. Существует системный вызов MessageBox, но никогда не было ничего подобного InputBox, и не будет.while current InputBox is a simple wrapper over WinAPI function, the thing what you want is a custom dialog window. You can create it in script, see Search script example.
Может у меня не последние версии плагинов, но почему-то я не нашел обвертки CreateWindow.Идея
Всё-таки создавать окошки на WinAPI - не самый удобный способ, когда есть замечательный способ визуального проектирования - ресурсы диалогов. Теоретически, их можно грузить даже из res файлов, хотя это сопряжено с некоторыми усилиями. Однако можно же встраивать их в DLL и оттуда вызывать! В принципе, всё для этого уже есть, надо только реализовать обертку над CreateDialog, как это сделано с CreatewINDOW.
Посмотрел сорс, да, действительно, она сделана как диалог из ресурсов. Был удивлён, когда обнаружил, что столь полезная вещь не сделана Микрософтом изначально. Что ж, значит, всё просто. Те, кому нужен дополнительный Input, добавляют его по аналогии с InputBox (т.е. собирая свою версию плагина).InputBox - это не обертка, и никогда не была такой
Да, это я перепутал с DialogCallback.Может у меня не последние версии плагинов, но почему-то я не нашел обвертки CreateWindow.
DLL неудобна, знаю. Однако загрузка из res файлов не выглядит чем-то невероятным. В конце концов, все редакторы ресурсов это могут.С Res файлами не стоит делать вообще ничего. С DLL - не проблема. Проблема разработчику скрипта построить DLL и доставить пользователям.
Угу, я знаю. Однако при беглом взгляде на формат res файлов обнаружился приятный момент: информация в них хранится именно в таких же структурах. Более того, даже есть опенсорсные редакторы ресурсов (XN Resource Editor), откуда можно вытащить код.Есть такая пара функций - DialogBoxIndirectParam/CreateDialogIndirectParam
Иметь дело с RES всё-равно что иметь дело с OBJ и LIB - каждый компилятор делает их по своему и чужих не понимают(Intel gcc msvc Borland изначально мало общего имели, пока взялись за COFF, а MSVC вообще иногда не понимает объектные файлы построенные более старой версией). Так что либо в чистом виде в ресурсах, либо в сорсах.DLL неудобна, знаю. Однако загрузка из res файлов не выглядит чем-то невероятным. В конце концов, все редакторы ресурсов это могут.
Именно. Загляните в один из include-файлов FLAT ASSEMBLER и в MSDN по этой теме. Поразительное сходство, правда?информация в них хранится именно в таких же структурах.
Разве? А как же в таком случае Винда их понимает? Я всегда считал, что формат rc файлов может отличаться, но бинарный вариант будет идентичен.Иметь дело с RES всё-равно что иметь дело с OBJ и LIB - каждый компилятор делает их по своему и чужих не понимают(Intel gcc msvc Borland изначально мало общего имели, пока взялись за COFF, а MSVC вообще иногда не понимает объектные файлы построенные более старой версией)
Это-то понятно, коллбэк средствами JS никак не сэмулируешь. А разве DialogProc, которая реализована сейчас, не срабатывает?Попробовал немного поиграться с DialogBoxIndirectParam, но к сожалению ничего не получается(хорошо что хоть не падает) Без доработки со стороны плага не получится этот вызов не заработает(как и другие вызова которые требуют CALLBACK функции)
Я лично не нашел ни одного Res файла у себя в системе. Винда работает только с PE/LE/NE/MZ/ZM, и только в PE есть место для ресурсов.Разве? А как же в таком случае Винда их понимает?
Исходники могут быть в любом угодно формате, главное что-бы существовал компилятор. В FASM-е ресурсы вообще можно задать в самом сыром виде.Я всегда считал, что формат rc файлов может отличаться, но бинарный вариант будет идентичен.
Если честно, то ничего подобного не нашел, ни в примерах, ни в документации. LinesFilter и SrrachReplace работают с обычным Overlapped Window, т.е. работают через регистрацию класса, которую Инструктор делает специальным способом.Это-то понятно, коллбэк средствами JS никак не сэмулируешь. А разве DialogProc, которая реализована сейчас, не срабатывает?
Да, а в PE как раз эти самые Res непосредственно лежат.Я лично не нашел ни одного Res файла у себя в системе. Винда работает только с PE/LE/NE/MZ/ZM, и только в PE есть место для ресурсов
Так и я о чём. Итоговый вариант должен подчиняться стандартам, иначе Винда его не сможет понять.Исходники могут быть в любом угодно формате, главное что-бы существовал компилятор. В FASM-е ресурсы вообще можно задать в самом сыром виде
Так, ещё раз изучил Search.js. Понятно, необходима спец регистрация класса. Досадно.Если честно, то ничего подобного не нашел, ни в примерах, ни в документации. LinesFilter и SrrachReplace работают с обычным Overlapped Window, т.е. работают через регистрацию класса, которую Инструктор делает специальным способом.
Нет, не лежат.Да, а в PE как раз эти самые Res непосредственно лежат.
Итоговый вариант - это то, что лежит в EXE DLL SYS ICL т.е в PE контейнере. RES - промежуточный.Так и я о чём. Итоговый вариант должен подчиняться стандартам, иначе Винда его не сможет понять.
Теоретически можно обойтись тем что есть(есть идея), но практически я такого финта на даже на C/C++ не делал изза ненадобности, так что не знаю что из этого получится(возможно очередной велосипед, который можно было бы сделать мене кривыми руками и вообще не велосипедом)Так, ещё раз изучил Search.js. Понятно, необходима спец регистрация класса. Досадно.
Code: Select all
FSO = new ActiveXObject("Scripting.FileSystemObject");
TextStream = FSO.CreateTextFile("D:\\1.log");
TextStream.WriteLine("foo");