AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Scripts plugin
Goto page Previous  1, 2, 3 ... 22, 23, 24 ... 54, 55, 56  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Aug 13, 2010 10:00 am    Post subject: Reply with quote

FeyFre
хмм, да, разбираться долговато. А какой вообще принцип, если на пальцах?
В принципе, именно оконную процедуру привязать - проблем никаких, а вот произвольный callback - даже не знаю, как это можно сотворить. Разве что сделать заглушку, в которой на асме разбирать стек в соответствии с указанным ранее набором параметров и вызывать подходящую функцию...
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2054
Location: Vinnitsa, Ukraine

PostPosted: Fri Aug 13, 2010 11:07 am    Post subject: Reply with quote

Quote:
В принципе, именно оконную процедуру привязать - проблем никаких, а вот произвольный callback - даже не знаю, как это можно сотворить. Разве что сделать заглушку, в которой на асме разбирать стек в соответствии с указанным ранее набором параметров и вызывать подходящую функцию...
Ну вот там приблизительно так и делают при создании callback:
1. Создаю заглушку на асме
2. При каждом создании callback выделяют кусок памяти с атрибутами выполнения.
3. Копируют туда заглшку.
4. В памяти в placeholder-ы заносят реальные адреса функций и инормацию о парметрах и скриптовом callback(контекст)
5. Адрес этой памяти дают куда просят.

Реально заглушка там простая - вызов опреденной С-функции с указателем на контекс которые выставили при создании.
С-функция с контекста достает инфу о параметра/возвращаемом значении и вызываемой скриптовой функции и соответвенно достаёт их со стека(стека параметров заглушки, а не своего), маршалит и вызывает скрипт.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Aug 13, 2010 1:47 pm    Post subject: Reply with quote

Ага, ясненько. Да, было бы неплохо такую штуку в Scripts засунуть Smile
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2615
Location: Киев, Русь

PostPosted: Fri Aug 13, 2010 2:02 pm    Post subject: Reply with quote

Fr0sT wrote:
было бы неплохо такую штуку в Scripts засунуть Smile
А что оно в результате даст? Чем оно лучше, чем сейчас?
Back to top
View user's profile Send private message Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2054
Location: Vinnitsa, Ukraine

PostPosted: Fri Aug 13, 2010 3:09 pm    Post subject: Reply with quote

VladSh
Не нужно будет городить огороды что-бы создавать окна и диалоги(как видишь, диалоги сейчас и с огородами не создаются).
Я в хотелке написал что оно даст.

Я бы был не против, если бы был бы прикручен IUP к плагину, но он сам весит огого, да и опять таки этот же костыль нужен для взаиодействия со скриптом(ибо биндингов на JS нету)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Infocatcher



Joined: 06 Aug 2007
Posts: 1631

PostPosted: Tue Aug 17, 2010 5:03 pm    Post subject: Reply with quote

Новая версия плагина (Scripts.dll: версия 6.7, 48 128 байт, MD5: 9a349502e167c279730402a8a58ec979) роняет AkelPad при вызове любого скрипта.
Windows 7, 32-битная.

Версия из предыдущего PlugsPack.zip работает нормально (Scripts.dll: версия 6.6, 49 152 байт, MD5: 8030d911a386ba670b78949f9a0b65d2).
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Tue Aug 17, 2010 6:03 pm    Post subject: Reply with quote

Infocatcher
Туда попала версия, с которой проводились эксперименты Smile Поправил.
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2054
Location: Vinnitsa, Ukraine

PostPosted: Wed Sep 15, 2010 8:33 am    Post subject: Reply with quote

Instructor
Вопрос на засыпку:
Code:
var data = AkelPad.MemRead(memoory, 5/*DT_BYTE*/);
Читает знаковые данные или без знаковые? Собственно по остальным(DT_WORD, DT_DWORD) тот же вопрос.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Wed Sep 15, 2010 1:22 pm    Post subject: Reply with quote

FeyFre
Это как понимать? Smile
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2054
Location: Vinnitsa, Ukraine

PostPosted: Wed Sep 15, 2010 3:04 pm    Post subject: Reply with quote

Instructor
Это понимать, так:
В памяти лежит байт с HEX кодом 0xFF
После кода
Code:
var number = AkelPad.MemRead(memory, 5/*DT_BYTE*/);

В number что будет лежать: -1 или 255 ?
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Wed Sep 15, 2010 3:28 pm    Post subject: Reply with quote

Код из Document_MemRead:
Code:
  else if (dwType == DT_DWORD)
  {
    vpData->vt=VT_I4;
    vpData->lVal=*(DWORD *)nPointer;
  }
  else if (dwType == DT_WORD)
  {
    vpData->vt=VT_I2;
    vpData->iVal=LOWORD(*(DWORD *)nPointer);
  }
  else if (dwType == DT_BYTE)
  {
    vpData->vt=VT_UI1;
    vpData->bVal=LOBYTE(*(DWORD *)nPointer);
  }

Только DT_BYTE unsigned, остальные signed. Если какие-то сложности возникают с типами, то вручную можно преобразовать:
Для DWORD:
Code:
if (nValue < 0) nValue+=0xFFFFFFFF + 1;

Для WORD:
Code:
if (nValue < 0) nValue+=0xFFFF + 1;

Для BYTE:
Code:
if (nValue < 0) nValue+=0xFF + 1;
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2054
Location: Vinnitsa, Ukraine

PostPosted: Wed Sep 15, 2010 3:48 pm    Post subject: Reply with quote

****
Пока писал в чём проблема, осенило что проблема в голове/кривых руках.(допиливаю zen coding)
****
А может лучше сделать DT_BYTE/DT_WORD/DT_DWORD беззнаковыми, и добавить знаковые варианты?
И значения этих констант зашить по аналогии с _TSTR, _TCHAR, _TSIZE ? А то каждый раз приходится лазить к доки что-бы вспомнить что использовать.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Thu Sep 16, 2010 8:14 am    Post subject: Reply with quote

Вообще Word и DWord всю жизнь были unsigned, от того, что они вдруг стали signed, настает когнитивный диссонанс %)
Back to top
View user's profile Send private message
[Yustas.NeO]



Joined: 12 Mar 2007
Posts: 258

PostPosted: Thu Sep 16, 2010 12:13 pm    Post subject: Reply with quote

se7h wrote:
разве есть моменты, когда без них не обойтись?
Есть. Например, при включенной галочке "Сохранять при потере фокуса" в разделе AutoSave SaveFile-плагина... Вот если бы в AutoSave была соответствующая проверка - тогда я тоже за немодальность всех окон! А то сейчас очень раздражает, когда вызываешь окно Macros, и происходит массовое пересохранение всех открытых вкладок!...
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5419

PostPosted: Thu Oct 28, 2010 4:56 am    Post subject: Reply with quote

Изменено: теперь не используется libc.lib при компиляции.
Добавлено: методы MemStrPtr, WindowSubClass, WindowUnsubClass, ThreadHook, ThreadUnhook, SystemFunction().RegisterCallback, SystemFunction().UnregisterCallback.
Добавлено: возможность передавать в SystemFunction().Call строки напрямую в качестве констант.
Добавлено: необязательный параметр для GetAkelDir() позволяющий получить различные подпапки AkelPad'а.
Исправлено: некорректный переход к строке при ошибке в скрипте, если использовался перенос по словам.

Changed: libc.lib is no longer used when compiling.
Added: methods MemStrPtr, WindowSubClass, WindowUnsubClass, ThreadHook, ThreadUnhook, SystemFunction().RegisterCallback, SystemFunction().UnregisterCallback.
Added: possibility to pass in SystemFunction().Call strings directly as constants.
Added: optional parameter for GetAkelDir() that allows to obtain various AkelPad subfolders.
Fixed: incorrect movement to a error in the script, if word wrap used.


Scripts plugin v7.0
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 22, 23, 24 ... 54, 55, 56  Next
Page 23 of 56

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group