Что нового

Транслятор AutoIt скриптов в PureBasic

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Помогите реализовать транслятор AutoIt скриптов в код PureBasic'a, мотивируется это включением поддержи создания dll на AutoIt'e

AutoIt

Код:
$hForm = GUICreate("Пример", 300, 200)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
	EndSwitch
WEnd


PureBasic

Код:
If OpenWindow(0, 0, 0, 300, 200, "Пример", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget) 
    
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow 
          End 
      EndSelect 
    ForEver 
EndIf

Это только создание окна, а нужно полностью весь AutoIt транслировать в PureBasic, задача более чем сложная, но от этого есть плюсы, скомпилированную программу чтобы взломать нужно будет дезасамблировать ну и конечно появится возможность написания dll и возможно многопоточность.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Viktor1703 [?]
скомпилированную программу чтобы взломать нужно будет дезасамблировать ну и конечно появится возможность написания dll и возможно многопоточность.
В таком случае будет логичнее писать сразу на PureBasic, и не тратить время на пустое занятие.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Тоже самое мне ответили на форуме PureBasic (в таком случае легче писать на PureBasic'e и не тратить время) - но зачем я тогда тему создавал там и AutoIt не брошу, а dll очень хочется, как быть...., ладно, буду ждать пока разработчики AutoIt включат возможность написания Dll
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Viktor1703 как я понял поддержки создания dll на AutoIt'e не будет никогда реализовано?

Yashied Пока AutoIt не станет полноценным компилятором, то нет.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Разве что как-то так (PB + AI)
\Program Files\AutoIt3\AutoItX
там есть библиотеки AutoItX3.dll и AutoItX3_x64.dll (если у тебя Win 64x)
Их (функции этих библиотек) можно из почти любого ЯП вызывать,
в том числе из PB. Из PB - довольно просто.
AutoItX.chm - справка
Будешь 2 языка знать. Удачи.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Спасибо, но тогда придётся за собой таскать AutoItX3.dll
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Нашёл решение.... :laugh:

Код PureBasic с синтаксисом AutoIt`a (правда чуть изменённым)

Код:
IncludeFile "GUI.pb"
  
hForm = GUICreate("MyGUI PureBasic + AutoIt", 300, 200)
hButton = GUICtrlCreateButton("Msg", 20, 20, 50, 20)

While 1
  nMsg = GUIGetMsg() 
  Select nMsg
     Case GUI_EVENT_CLOSE 
       End
       
     ; Обработка событий контролов  
     Case GUI_EVENT_CTRL 
       Select GUIGetCtrl()
         Case hButton
           MsgBox(0, "Example", "Hello World!")
     EndSelect        
       
  EndSelect   
Wend

Все функции для создания такого окна
и контролов находятся в библиотеке GUI.pb
которая при компиляции добавится в тело
вот почти и получился интерпретатор AutoIt
на PureBasic :smile:
 

Suppir

Продвинутый
Сообщения
967
Репутация
62
Purebasic сам использует транслятор в ассемблер.

Имхо, не получится написать, потому что для PB нужно объявлять типы переменных (он же статически типизирован), а для AutoIt - нет. Человек, который сможет написать такой транслятор, не играется с бэйсиками, а сразу пишет на си/c++ :smile:
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
а это ни есть транслятор, и пока что всё работает :smile:

Вот файл скомпилирован на пурике и написанный
методом приведённым выше. Размер 27кб
 
Верх