MrCreatoR Posted April 15, 2011 Share Posted April 15, 2011 AutoIt version: 3.3.6.1UDF Version: 1.0Description: This UDF allows you to include dynamic libraries (a.k.a plugins), to call stored functions from them.Usefull if we need to include external modules, like plugins, wich can be modified later by users, even when the main script is compiled.Dynamic plugin content:#NoTrayIcon If $CmdLine[0] = 0 Then Exit ;We need at least 1 command line ;Collecting parameters $sParams = "" For $i = 2 To $CmdLine[0] $sParams &= $CmdLine[$i] & "|" Next $sParams = StringTrimRight($sParams, 1) Call($CmdLine[1], $sParams) If @error Then Call($CmdLine[1]) ;==== UDFs Part ==== Func Some_UDF($sParams) Local $iRet = MsgBox(36, @ScriptName & " - Question", $sParams) ConsoleWrite($iRet) EndFunc- All data before ;==== UDFs Part ====, is there to handle command line and parameters passed to the library.- All data after this separator, it is the functions (UDFs) available to be called from the main script (the script that uses PluginInclude UDF).Example (required included library, see above info): #include <PluginInclude.au3> _PluginInclude_AddInclude(@ScriptDir & "\External_UDFs.fnc") _PluginInclude_AddInclude(@ScriptDir & "\Other_UDFs.fnc") $vRet = _PluginInclude_ExecuteFunc("Some_UDF", "Are you sure?") If Not @error Then MsgBox(64, @ScriptName & " - ExecuteFunc", "Returned Message from Some_UDF: " & $vRet) EndIf $vRet = _PluginInclude_ExecuteFunc("Other_UDF", "Notepad.exe") ;Run the notepad If Not @error Then MsgBox(64, @ScriptName & " - ExecuteFunc", "Returned Message from Other_UDF: " & $vRet) EndIfChangelog:v1.0* First version.Attachments:PluginInclude_1.0.zip Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
Kip Posted April 15, 2011 Share Posted April 15, 2011 I don't think I'll be using this for two reasons: 1. The huge performance hit when a "dynamicly loaded" function is called 2. Any static or global variable declared in the 'plugin' will be reset every time a function is called. MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
MrCreatoR Posted April 15, 2011 Author Share Posted April 15, 2011 1. The huge performance hit when a "dynamicly loaded" function is calledWhat performance hit?2. Any static or global variable declared in the 'plugin' will be reset every time a function is called.The idea is to pass any variables from the main script, why do you need the global variables inside the plugin?Anyway, i can add an interaction handler to deal with this (check the process and pass the data via one of the interaction methods). But do we really need this? Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
Kip Posted April 16, 2011 Share Posted April 16, 2011 (edited) What performance hit?The one where everytime a function is called, a new process is created and the interpreter is initialized.Both take quite some time. This is a problem because it pauses the main script because the plugin is called synchronously.If the plugin is called asynchronously, the main script won't be interrupted. A simple callback function in the main script could deal with the return values of the called functions. The idea is to pass any variables from the main script, why do you need the global variables inside the plugin?Anyway, i can add an interaction handler to deal with this (check the process and pass the data via one of the interaction methods). But do we really need this?Well, yes: what if I want to save a "large" array, containing all kinds of data the user doesn't have to know about, between function calls? Passing it back and forth as a parameter is unreasonable because ByRef won't work. Edited April 16, 2011 by Kip MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
MrCreatoR Posted April 16, 2011 Author Share Posted April 16, 2011 This is a problem because it pauses the main script because the plugin is called synchronously.There is a $iWait parameter, wich can be set to 0 to make the script continue and not wait for respones from the plugin.what if I want to save a "large" array, containing all kinds of data the user doesn't have to know about, between function calls?What is the problem, you pass it as a parameter, and how is that related to the fact that you can't use global variables, if the user should not get access to that data, than definitly it can be global Passing it back and forth as a parameter is unreasonable because ByRef won't workI don't understand you, why you need the ByRef when you can pass the parameter and return the mdofied vesrion back? Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
Kip Posted April 16, 2011 Share Posted April 16, 2011 There is a $iWait parameter, wich can be set to 0 to make the script continue and not wait for respones from the plugin.Ok, didn't see that...What is the problem, you pass it as a parameter, and how is that related to the fact that you can't use global variables, if the user should not get access to that data, than definitly it can be global I don't understand you, why you need the ByRef when you can pass the parameter and return the mdofied vesrion back?No, you don't understand me. I want to use global variables because I don't want to copy all the data back and forth everytime I call a function. MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
MrCreatoR Posted April 16, 2011 Author Share Posted April 16, 2011 I want to use global variables because I don't want to copy all the data back and forth everytime I call a function.Why not?Please show me an example of how you would use it with global variables (we are talking about inside pluging include, right?).P.SI just realized, we can't use arrays, i am now fixing this issue by implementing interaction between the main script and the plugin. Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
JScript Posted April 17, 2011 Share Posted April 17, 2011 Very good, I was using something similar but not this way, excellent idea! Greatly ease the implementation of functions that we can upgrade without worry about the executable module... Thanks!!! http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!) Somewhere Out ThereJames Ingram Download Dropbox - Simplify your life!Your virtual HD wherever you go, anywhere! Link to comment Share on other sites More sharing options...
JScript Posted April 17, 2011 Share Posted April 17, 2011 (edited) 1. The huge performance hit when a "dynamicly loaded" function is calledWhich computer do you use to feel such a great impact performance?2. Any static or global variable declared in the 'plugin' will be reset every time a function is called.It is easy to implement!?! Edited April 17, 2011 by jscript http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!) Somewhere Out ThereJames Ingram Download Dropbox - Simplify your life!Your virtual HD wherever you go, anywhere! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now