Martin -
I thought I'd answer this - it avoids taking down Christmas lights and
it offers an opportunity to mention something that I hope TJ catches.
This pattern of passing variables into and out of Amibroker arises in
several different applications. You may want to run an AFL with
overriden parameters, or invoke a number of different AB functions
outside of AB with parameters. In your case you want invoke a script
for ExportImage with a name parameter. BTW, looks like you did a lot
of legwork in trying.
What I really wish that AB had was COM methods for the
following. It would make MANY THINGS much easier ! I'm hoping that
it would be a straightforward addition to the object model -
StaticVarSet
StaticVarGet
StaticVarSetText
StaticVarGetText
Anyway, working around it is straightforward. The general case is
that you want to invoke some script - let's say within an indicator.
I had a similar one in VBS handy, so let's call it ExportImage.vbs -
here's the AFL -
trig = ParamTrigger( "Export image", "CLICK" );
if ( trig )
{
imgname = "ExportImage1.png";
OWSHShell = CreateObject( "WScript.Shell" );
Cmdline = "ExportImage.vbs " + " \"" + imgname + "\" " + 1024 + " " +
768;
// For other options see -
// msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx
rc = OWSHShell.Run( Cmdline, 4, False );
}
Plot( C, "C", colorDefault );
Now, the VB script is placed in this case in the \Program Files\Amibroker
directory and looks like this -
Set oWSH = CreateObject( "WScript.Shell" )
Set oARGS = WScript.Arguments
imgname = oARGS( 0 )
width = oARGS( 1 )
height = oARGS( 2 )
Set oAB = CreateObject( "Broker.Application" )
Set OAW = oAB.ActiveWindow
rc = OAW.ExportImage( imgname, width, height )
P.S. In ths ExportImage case, though, I'd hope that it is just a bug
and is meant to be possible within an indicator.
-- Bruce R
--- In [email protected], "grizzly_cz" <grizzly...@...> wrote:
>
> Greetings,
>
> I am trying to export images from Amibroker via ExportImage. Calling
> directly from Amibroker does not work, also I have read some posts
> that it should be run externally, so I created simple file
> "screenshot.js" in my filesystem which looks like this:
>
> AB = new ActiveXObject("Broker.Application"); // create Amibroker object
> dir = "C:\\Images\\";
> AB.ActiveWindow.ExportImage( dir+AB.ActiveDocument.Name+".gif", 1680,
> 1050 ); // export image
>
>
> This works fine, after execution of this file the image is saved on
disk.
> But I would like to use some static variables saved in Amibroker in my
> javascript file to choose more compound filename. Object "AFL", which
> is used in Amibroker environment, is unknown to scripting host. :o(
>
> Or maybe it is somehow possible to create an afl formula which could
> call ExportImage with passing chosen filename in variable? Is there a
> way to call screenshot.js with some parameters directly from Amibroker
> formula? Or is it possible to create and call a DLL? Unfortunately, I
> am not able to figure how to use DLLs in Amibroker, so I would be
> grateful even for any URL with basic information about this area.
>
>
> Thank you very much,
> Martin
>