Вверх ↑
Этот топик читают: Гость
Ответов: 4292
Рейтинг: 465
#61: 2016-05-10 08:45:20 ЛС | профиль | цитата
Эх да простит меня tsdima
Добален метод sys.CreateActiveX в простаранство имён объекта sys
Теперь можно создавать ActiveX контролы из зарегистрированных в системе интерфейсов и подключатся к их событиям newcreateactivex.zip

Вызов таков sys.CreateActiveX ( "CLSID", "префикс событий", handle панели для отображения контрола)

И это уже больше походит на VB
карма: 5

1
файлы: 1newcreateactivex.zip [65KB] [275]
Голосовали:tom-it
Ответов: 4292
Рейтинг: 465
#62: 2016-05-13 13:51:41 ЛС | профиль | цитата
Ещё демка code_37260.txt
карма: 5

0
файлы: 1code_37260.txt [1.4KB] [310]
Ответов: 183
Рейтинг: 2
#63: 2016-05-13 17:29:27 ЛС | профиль | цитата
andrestudio, windows 10 демка в сообщении выше пишет Объект не поддерживает свойство или метод sys.CreateActiveX
карма: 0

0
Ответов: 4292
Рейтинг: 465
#64: 2016-05-13 19:35:58 ЛС | профиль | цитата
kaban4ik, вот тема http://forum.hiasm.com/forum.html?q=3&p=104433
вот комментарий
tsdima писал(а):
Я согласен, что у UseActiveX нехватает нижней точки ActiveX и возможности передавать такие данные внутрь VBJScript. Более того, однажды захочется ещё и обрабатывать события от ActiveX внутри VBJScript, то есть захочется поиметь что-то типа WScript.ConnectObject.


а выше то чем я заполнил этот пробел

------------ Дoбавленo в 19.35:
kaban4ik, скажу так:
Я шёл к этому годы но результат увидел налицо. А те кто считает байты пускай их считает, (а может у них они и последние в нашем теробайтовом а скоро и (Иоттабайт) пространстве.

з.ы В Японии если есть инженер то есть разработки рационализаторские предложения, если нет и того и другого то пнх(выбирай другую профессию) а у нас демократия и хрен куда попрёшь. На нашу новую элктро-станцию прислали директора из Москвы. Возраст -36,Электричество берётся из розетки, бутерброд нужно колбасой вниз ложить. (дак вопрос то простой, Как ты Мудак будешь первостепенные задачи от второстепенных отличать?)Гуляй Россия, гуляй Европа а у нас самммая самммммая опа
карма: 5

0
Ответов: 16407
Рейтинг: 1209
#65: 2016-05-14 08:18:42 ЛС | профиль | цитата
andrestudio, http://news.bbc.co.uk/hi/russian/life/newsid_6388000/6388103.stm Смеха было... Весь Израиль лежал на спине и дрыгал ногами.
Так что "Мудак" - это распространённое явление во всём мире.
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 41
Рейтинг: 0
#66: 2018-05-09 14:00:39 ЛС | профиль | цитата
Теперь компонент может создавать таймеры (с дополнением Sleep метода), может вызывать методы и получать переменные между скриптами

например так:

Add(MainForm,2953706,140,112)
{
Width=506
Caption="VBScript_Me_Timer_demo"
Position=1
}
Add(VBJScript,15800674,224,112)
{
EventPoints=#7:onEvent|
VarPoints=#4:##Me|
Script=#19:Dim myVar, myVarStr|0:|32: myVarStr = "Моя переменная = "|13: myVar = 100|2: |18:Sub Demo( str_in )|15: MsgBox str_in|7:End Sub|0:|21:Sub onTimer( strMsg )|21: sys.onEvent strMsg |7:End Sub|
link(onEvent,11375942:doEvent1,[])
}
Add(VBJScript,13030562,224,182)
{
WorkPoints=#7:doStart|6:doStop|7:doSleep|
EventPoints=#7:onTimer|
DataPoints=#3:scr|
Script=#24:' Переменные под обьекты|15:Option Explicit|56:Dim MyScript, objTimer1, objTimer2, objTimer3, objSleep |0:|28:' Процедура тиков таймера №1|17:Sub onTimerVBS1()|31: sys.onTimer "onTimerVBS1()!" |7:End Sub|0:|28:' Процедура тиков таймера №2|17:Sub onTimerVBS2()|31: sys.onTimer "onTimerVBS2()!" |7:End Sub|0:|28:' Процедура тиков таймера №3|17:Sub onTimerVBS3()|47: ' Вызов процедуры onTimer внешнего скрипта!!!|57: MyScript.onTimer("onTimer() внешнего скрипта! " & Now) |7:End Sub|0:|44:' назначанная процедура остановки таймера №3|16:Sub onStopVBS3()|94: MsgBox "Таймер №3 вызвал процедуру остановки событий по количеству тиков или методом Stop()"|7:End Sub|0:|19:Sub doStart(dt,Idx)|0:|79: ' Подключаем удалённый скрипт через сервисную точку ##Me (и только ##Me !!!)|25: Set MyScript = sys.scr|64: ' Теперь можно читать внешние переменные и вызывать процедуры|48: MsgBox (MyScript.myVarStr) & (MyScript.myVar)|42: ' Вызываем процедуру удалённого скрипта|40: MyScript.Demo( "Hello VBJScript!!!" )|3: |47: ' Создаём таймер №1 методом "CreateTimer()"|80: Set objTimer1 = sys.CreateTimer() ' вызов на создание таймера без параметров!|37: ' Присваеваем интервал тиков в ms |56: ' (если не присваивать то по умолчанию 1000 = 1 сек) |27: objTimer1.Interval = 100|65: ' AutoStop = 0 говорит о том что таймер будет тикать постоянно|62: ' Присваивать не обязательно т.к присваивается по умолчанию|25: objTimer1.AutoStop = 0|39: ' Присваеваем процедуру вызова тиков|36: objTimer1.onTimer = "onTimerVBS1"|21: ' Запускаем таймер|59: objTimer1.Start() ' вызов метода запуска без параметров!|3: |30: ' По аналогии с таймером №1|36: Set objTimer2 = sys.CreateTimer()|27: objTimer2.Interval = 200|25: objTimer2.AutoStop = 0|36: objTimer2.onTimer = "onTimerVBS2"|22: objTimer2.Start() |3: |48: ' По аналогии с таймером №1 но с автостопом и|40: ' процедурой вызова остановки таймера|36: Set objTimer3 = sys.CreateTimer()|27: objTimer3.Interval = 300|26: objTimer3.AutoStop = 10|0:|50: ' по сути присвоение процедур должно быть таким|50: ' Set objTimer3.onTimer = GetRef("onTimerVBS3")|53: ' Set objTimer3.onStop = GetRef("onStopVBS3") |48: ' но пока не нашёл решения для реализации ...|1: |36: ' Присваеваем имя процедуры тиков|47: ' назначить процедуру тиков в другом скрипте|57: ' например так objTimer3.onTimer = "MyScript.onTimer" |63: ' или так Set objTimer3.onTimer = GetRef("MyScript.onTimer")|73: ' не получится, поэтому через переходник пока... (с onStop тоже самое)|38: objTimer3.onTimer = "onTimerVBS3" |3: |77: ' Если назначить событие на остановку (objTimer3.onStop = "onStopVBS3" ) |68: ' то оно выполняется и при objTimer3.Stop() если таймер запущен |61: ' и при остановке по количеству тиков (свойство AutoStop) |3: |50: ' присваевается имя процедуры остановки таймера|36: objTimer3.onStop = "onStopVBS3" |22: ' Запускаем таймер |20: objTimer3.Start()|12: |7:End Sub|0:|27:' остановка всех 3 таймеров|18:Sub doStop(dt,idx)|0:|42: If not IsObject(objTimer1) then Exit Sub|60: objTimer1.Stop() ' вызовы методов отановки без параметров!|18: objTimer2.Stop()|20: objTimer3.Stop() |2: |32: ' Удаляем обьекты обязательно!|25: Set MyScript = Nothing|25: Set objTimer1 = Nothing|25: Set objTimer2 = Nothing|25: Set objTimer3 = Nothing|0:|7:End Sub|0:|69:' Демонстрация задержки выполнения скрипта (замена WScript.Sleep(ms))|66:' Метод Sleep ограничен по минимальному времени задержки ~10-15 ms|66:' Работу запущенных таймеров не останавливает и неподвешивает GUI |20:Sub doSleep(dt, idx)|33: MsgBox "Тест задержки на 3 сек"|50: ' Создаём либо используем готовый обьект таймера|34: Set objSleep = sys.CreateTimer()|42: objSleep.Sleep(3000) ' задержка на 3 сек|25: MsgBox "Тест закончен" |23: ' не забываем удалить|24: Set objSleep = Nothing|7:End Sub|
link(onTimer,5471364:doWork2,[])
link(scr,15800674:##Me,[])
}
Add(Button,2210866,140,182)
{
Left=25
Top=20
Caption="Start"
link(onClick,13030562:doStart,[])
}
Add(Memo,10002883,399,182)
{
Left=110
Top=20
Width=355
Height=225
AddType=1
ScrollBars=2
}
Add(LED,1354173,399,112)
{
Left=40
Top=120
}
Add(Hub,11375942,308,112)
{
link(onEvent1,1354173:doChangeValue,[])
link(onEvent2,5471364:doWork1,[(354,125)])
}
Add(HubEx,5471364,350,182)
{
link(onEvent,10002883:doAdd,[])
}
Add(Button,14807500,140,224)
{
Left=25
Top=50
Caption="Stop"
link(onClick,13030562:doStop,[(186,230)(186,195)])
}
Add(Button,12683136,140,266)
{
Left=25
Top=80
Caption="Sleep"
link(onClick,13030562:doSleep,[(198,272)(198,202)])
}

карма: 0

0
Ответов: 41
Рейтинг: 0
#67: 2018-05-12 21:01:30 ЛС | профиль | цитата
Продолжение темы:
Теперь компонент может работать со свойствами контролов через их Handle.
Свойства:

    Caption
    Text
    Color
    Left
    Top
    Width
    Height
    FontName
    FontHeight
    FontColor
    FontBold
    FontIitalic
    LoadFromFile
    SaveToFile
    ShowControl
пример схемы
Add(MainForm,2953706,161,77)
{
Width=625
Position=1
Point(Handle)
}
Add(VBJScript,1839749,154,231)
{
WorkPoints=#6:doTest|
DataPoints=#4:hwnd|
Script=#18:Sub doTest(dt,idx)|13: Dim objCtrl|36: If sys.hwnd = "NULL" Then Exit Sub|63: ' Вызов с параметрами handle контрола и имя объекта в скрипте|63: ' В отличии от объектной переменной objCtrl обьект KOLControl|61: ' нельзя уничтожить или переназначить для другого контрола,|47: ' он будет уникальным до завершения программы|51: Set objCtrl = sys.Control(sys.hwnd, "KOLControl")|14: With objCtrl|29: .FontName = "Arial Black"|20: .FontHeight = 30|25: .Fontcolor = vbYellow|43: .Caption = "Это моя форма синего цвета"|19: .Color = vbBlue|19: .Hide = vbFalse|10: End With|66: ' т.е писать и читать своства для уникального имени можно так...|40: 'MsgBox "RGB = " & KOLControl.Color |24: Set objCtrl = Nothing|7:End Sub|
link(hwnd,9671356:Var,[])
}
Add(Button,11676348,84,231)
{
Left=10
Top=50
Width=115
Caption="Test"
Point(Handle)
link(onClick,1839749:doTest,[])
}
Add(Label,6485018,98,77)
{
Left=145
Top=30
Width=105
Height=35
Point(Handle)
}
Add(ChildPanel,10442349,224,77)
{
}
BEGIN_SDK
Add(EditMulti,4107669,21,21)
{
VarCount=1
link(Var1,9259457:Handle,[(27,179)(41,179)])
}
Add(Panel,9259457,35,105)
{
Left=145
Top=80
Width=445
Height=165
Alignment=2
Point(Handle)
}
END_SDK
Add(Memo,7133508,280,77)
{
Left=10
Top=80
Width=115
Height=165
Point(Handle)
}
Add(GetIndexData,9671356,154,168)
{
Count=4
link(Data1,6485018:Handle,[(160,128)(111,128)])
link(Data2,2953706:Handle,[])
link(Data3,10442349:Var1,[(174,128)(230,128)])
link(Data4,7133508:Handle,[(181,140)(307,140)])
}
Add(ComboBox,14560296,84,161)
{
Left=10
Top=15
Width=115
Height=24
Strings=#5:Label|4:Form|5:Panel|4:Memo|
Text="Label"
ReadOnly=0
link(onClick,9671356:doIndex,[])
}


Ещё одна приятная особенность что можно вызывать методы и читать свойства и переменные из разных ЯВУ (vbs,js) примерно так
Add(MainForm,2953706,112,98)
{
}
Add(VBJScript,2723942,196,168)
{
WorkPoints=#6:doTest|
DataPoints=#3:scr|
Script=#10:Dim objJS|0:|18:Sub doTest(dt,idx)|34: ' Подключаем удалённый JS скрипт|22: Set objJS = sys.scr|26: MsgBox objJS.summ(2,5)|21: MsgBox objJS.demo|43: 'MsgBox Chr(192) & Chr(193) & Chr(194)|60: MsgBox objJS.Chr(192) & objJS.Chr(193) & objJS.Chr(194)|7:End Sub|
link(scr,14676190:##Me,[])
}
Add(Button,13154026,112,168)
{
Left=20
Top=25
link(onClick,2723942:doTest,[])
}
Add(VBJScript,14676190,196,98)
{
VarPoints=#4:##Me|
Language=1
Script=#9:var demo;|22: demo = 1234567890;|0:|18:function summ(x,y)|2:{ |12: var temp; |12: temp=100; |19: return x+y+temp; |1:}|0:|22:function chr( ascii ) |1:{|36: return String.fromCharCode(ascii);|1:}|
}

Не хватает ещё работы с графикой Уже подумываю прикрутить обьект GraphicsWindow подобно как из ShmallBasic от майкрософта
Для тех кто в танке
https://drive.google.com/drive/folders/0B4uxw3DEyywZSmw1QWx5QUdfMkE
https://onedrive.live.com/?id=201F3835D49587FE%21377&cid=201F3835D49587FE
https://blogs.msdn.microsoft.com/smallbasic/tag/featured-extension/

з.ы а если разойдусь то сделаю ActiveX для блица чтобы можно было 3D игрушки в блокноте писать

Редактировалось 3 раз(а), последний 2018-05-12 21:04:12
карма: 0

0
Ответов: 41
Рейтинг: 0
#68: 2018-06-01 16:04:33 ЛС | профиль | цитата
кириллица теперь дружит с fpc.
p.s вроде как на первый взгляд ничего не даёт но для офисных утилит можно делать вполне легальное ПО
карма: 0

0
68
Сообщение
...
Прикрепленные файлы
(файлы не залиты)