[Promotion-technology] Fwd: Announcing IronCOM -- harness .NET power via COM automation
David Andrews
dandrews at visi.com
Wed Oct 24 09:51:04 CDT 2007
>
>Now available at
>http://www.EmpowermentZone.com/comsetup.exe
>
>IronCOM
>Version 1.0
>October 24, 2007
>Copyright 2007 by Jamal Mazrui
>MIT License
>
>Contents
>
>Description
>Installation
>Examples
>Development Notes
>----------
>
>Description
>
>COM (Component Object Model) is a binary standard that permits programs
>developed in different languages to interoperate and serve one another
>with specialized functionality. IronCOM is an open source COM server that
>offers access to much of the .NET Framework 2.0 Class Library: an
>organized collection of thousands of classes, methods, properties, and
>other members, which has been developed by Microsoft as a successor to the
>Win32 API (Application Programming Interface). IronCOM is named in the
>spirit of IronPython and IronRuby, bolstering a development approach with
>the strength of the .NET Framework.
>
>After installing IronCOM, a client program can instantiate it with the
>"Iron.COM" ProgID (Program Identifier). This object has a single,
>powerful method called Eval. It evaluates code in a language well-suited
>for such scripting, Boo. The language draws syntax from Python, and seeks
>to combine the strengths of both static and dynamic typing as appropriate.
>
>The code to be evaluated is a string containing any number of Boo
>statements or expressions. The Eval method returns a string that is the
>result of the last expression evaluated. Besides the code parameter of
>the Eval method, four other strings are passed as parameters that the code
>may reference. Each is an empty string if not needed by the code.
>----------
>
>Installation
>
>The IronCOM installer checks whether the .NET Framework is present on the
>computer, and if not, prompts whether to obtain it from the Internet. If
>you restart Windows afterward, you also need to restart the IronCOM
>installer. It creates an IronCOM program group on the Windows Start Menu,
>containing shortcuts to read documentation, navigate to the Boo web site,
>or uninstall.
>
>By default, the installer places files in the directory
>C:\Program Files\IronCOM
>The library is a .NET assembly called IronCOM.dll, which the installer
>registers as a COM server and puts in the Global Assembly Cache for use by
>any COM client on the computer.
>----------
>
>Examples
>
>Here are some examples using the JAWS scripting language as a COM client.
>They show tasks not possible by built-in functions of the language,
>including the ability to invoke a Windows common dialog, download a file,
>or make a Win32 API call at runtime.
>
>Script TestIronCOM()
>; Initial code for examples
>Var
>Object o, Object oNull,
>String sCode, String s1, String s2, String s3, String s4,
>String sDir, String sFile
>
>SayString("Testing")
>; Create IronCOM object
>Let o = CreateObject("Iron.COM")
>
>; Get the current directory of the active process
>; Define Boo code to be evaluated
>Let sCode = "System.IO.Directory.GetCurrentDirectory()"
>
>; Evaluate code and display result
>; Note that parameters s1 ... s4 are empty, since not needed
>Let sDir = o.Eval(sCode, "", "", "", "")
>MessageBox(sDir)
>
>; Get a file name via the Windows open file dialog,
>; prompting with a default name passed in the s1 parameter
>; Note that the Windows forms namespace is imported
>; Note that a line feed character seperates lines of Boo code
>Let sCode = "import System.Windows.Forms\n"
>Let sCode = sCode + "oDlg = OpenFileDialog()\n"
>Let sCode = sCode + "oDlg.FileName = s1\n"
>Let sCode = sCode + "oDlg.ShowDialog()\n"
>Let sCode = sCode + "oDlg.FileName"
>
> ; Define the s1 parameter, doubling backslashes as required by JAWS
>Script
>Let s1 = "c:\\temp\\test.txt"
>
>; Evaluate code and display result
>Let sFile = o.Eval(sCode, s1, "", "", "")
>MessageBox(sFile)
>
>; Download a URL on the Internet to a file on disk
>; Note that a namespace has to be imported
>; from an assembly not examined by default
>Let sCode = "import Microsoft.VisualBasic.Devices from
>Microsoft.VisualBasic.dll\n"
>Let sCode = sCode + "oNetwork = Network()\n"
>Let sCode = sCode + "oNetwork.DownloadFile(s1, s2)"
>
>; Define URL and file in s1 and s2 parameters
>Let s1 = "http://www.EmpowermentZone.com/jfw90doc.zip"
>Let s2 = "C:\\temp\\jfw90doc.zip"
>
>; Evaluate code and display whether downloaded file exists
>o.Eval(sCode, s1, s2, "", "")
>MessageBox(IntToString(FileExists(s2)))
>
>; Get short path name of file via Win32 API call
>; Note that the main code is loaded from a file on disk
>; which may be easier for debugging more complex snippets
>Let sCode = "import Microsoft.VisualBasic.FileIO from
>Microsoft.VisualBasic.dll\n"
>Let sCode = sCode + "FileSystem.ReadAllText(s1)"
>Let s1 = "C:\\Program Files\\IronCOM\\GetShortPath.boo"
>Let sCode = o.Eval(sCode, s1, "", "", "")
>
>; Now evaluate loaded code
>Let s1 = "c:\\Program Files\\Internet Explorer\\iexplore.exe"
>Let sFile = o.Eval(sCode, s1, "", "", "")
>MessageBox(sFile)
>
>; The Boo code that was loaded is shown below
>; In communicating with the Windows API,
>; note that a string data type is used to export the long path,
>; a string builder is used to import the short path,
>; and an integer is used to export the length of that buffer
>; Note that the "pass" statement is indented, as required by Boo/Python
>syntax
>
>/* Content of the file GetShortPath.boo
>import System
>import System.Text
>import System.Runtime.InteropServices
>
>// Define Boo wrapper for Win32 function
>[DllImport('kernel32.dll')]
>def GetShortPathName(sLongPath as String, sShortPath as StringBuilder,
>iLength as int):
> pass
>
>// Call function and return result
>sShortPath = StringBuilder(260)
>GetShortPathName(s1, sShortPath, 260)
>sShortPath.ToString().Trim()
>*/ ; End of file content
>
>Let o = oNull
>EndScript
>
>----------
>
>Development Notes
>
>Within the IronCOM program folder, the main source code is in the file
>IronCOM.boo. The library may be rebuilt with the batch file build.bat.
>The installer may be rebuilt with the Inno Setup definition comsetup.iss.
>Inno Setup is available from
>http://innosetup.org
>
>Several .NET components, used in development, are available from the
>following web pages:
>
>.NET Framework Version 2.0 Redistributable Package (x86)
>http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en
>
>.NET Framework 2.0 Software Development Kit (SDK) (x86)
>http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&displaylang=en
>
>ILMerge
>http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en
>
>Microsoft Component Installer Software Development Kit
>http://www.microsoft.com/downloads/details.aspx?familyid=2A5E4EBC-651C-40AA-9525-1810AF47C317&displaylang=en
>
>Resources for learning and programming in the Boo language are contained
>in the subdirectory called Boo. The Boo home page is at
>http://boo.codehaus.org
>
>I welcome feedback, which helps IronCOM improve over time. When reporting
>a problem, the more specifics the better, including steps to reproduce it,
>if possible.
>
>The latest version of IronCOM is available at the same URL,
>http://www.EmpowermentZone.com/comsetup.exe
>
>Jamal Mazrui
>jamal at EmpowermentZone.com
David Andrews and white cane Harry.
More information about the Promotion-technology
mailing list