Dialog variables need enhancement

Technical support and scripting issues

Moderators: JRL, Dorian (MJT support)

Post Reply
User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Dialog variables need enhancement

Post by Bob Hansen » Sun Nov 04, 2007 4:37 am

I have been able to use variables for Label, and Button objects, but using varibles for Caption, Image and Button hints do not work.

Example:

Code: Select all

Dialog>Message
   Caption=%MessageCaption%     
   Max=0
   Min=0
   Close=0
   Resize=0
   Top=170
   Width=600
   Left=410
   Height=320
   Label=%Msg%,50,40       
   Image=OLDMANATPC_DATA,280,20,250,250
//   Image=%Img%,280,20,250,250
   Button=%Btn%,100,200,110,30,2,,This is a good hint.
//   Button=%Btn%,100,200,110,30,2,,%hint%   
EndDialog>Message
I have lines in the script that change the value of the variables based on conditions and come back and Show>Message with different content.

The following variables DO WORK: %Msg%,%Btn%
The following variables DO NOT WORK: %MessageCaption%,%Img%,Button%hint%

They would appear to use the same logic, but the final results don'e work. Here is what I see for the button hint ..... %hint%. %Img% does not work for imported BMP files or for full path\filename.bmp value. %MessageCaption% seems to work initially but not with ResetDialogAction

From what I understand in Help, these variables does not exist now, could they please be added in the future? Can you also explain what makes a Dialog Modal vs. Non-modal. The example shows buttons on both but makes it sound like not pressing a button

Thanks for listening.
Last edited by Bob Hansen on Wed Jan 02, 2008 5:27 am, edited 1 time in total.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Sun Nov 04, 2007 7:35 am

Hmm, I think I am getting a better picture of using variables in Dialogs
I can't believe after all this time I have never before tried using variables in a Dialog.

In the Dialog I had Label=%Msg%

Later is the script I had Let>Msg=First Message or Second Message based on conditions. Then I called Show>DialogName and the value of %Msg% was showing up. Later in the script I wanted to show the same dialog with a different label. So I used ResetDialogAction, followed by Show>DialogName, and it is working OK.

Code: Select all

If ......
Let>Msg=First Message
ELSE
Let>Msg=SecondMessage
ENDIF
......
.... 
Show>DialogName


If ......
Let>Msg=Third Message
ELSE
Let>Msg=FourthMessage
ENDIF
......
.... 
ResetDialogAction>DialogName
Show>DialogName
But looking closer at the Help, it looks like I need to add something like the SRT>Update. I was thinking that Show>Dialog would make the Dialov visible using the current values of the variable. But I am now thinking that I need to Close Dialog after showing it so it can be regenerated again? I don't understand why the ActionLoop is needed ... Just waiting for another button to be pressed?Modal usually means to me that all other windows are frozen until the modal window goes away. bjt the explanation of the "non-modal" form seems to behave just like that. Until the choice is made to Close, it stays there. But the sample, identiried as Modal, disappears as soon a button is pressed, acting "non-modal" in my mind.

I am just confusing myself now, need to step away. I can do better than this. It is too late, I will need to review this again tomorrow.

Sorry for rambling, sometimes it helps just to verbalize the problem....
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Sun Nov 04, 2007 7:45 am

OK, so I haven't walked away yet. Decided I should do a more through Search here. Found an excellent script from JRL here: http://www.mjtnet.com/forum/viewtopic.p ... og+refresh

It looks promising, creating script files on the fly, and calling them in as Macros from the main macro. Luckily I only have three, but his routine looks like it is unlimited, up the value of %k%.

Really going away now......back tomorrow with fresh ideas.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Tue Nov 06, 2007 3:56 am

I am expecting to use this, changing label and button text with variables, maybe more than a dozen time in the script. This is a test to do it three times.

But the third version is the same as the second version. If the logic is correct from first to second, then why does it not work from the second to the third?

OK, so here is some script that shows the same Dialog three times:

Code: Select all

Label>Start

Label>Variables
Let>MessageCaption=Mesa Single Session Utility
Let>Path=C:\Windows

Dialog>Message
   Caption=%MessageCaption%
   Max=0
   Min=0
   Close=1
   Resize=0
   Top=170
   Width=600
   Left=410
   Height=320
   Label=%Msg%,50,40
   Image=OLDMANATPC_DATA,280,20,250,250
   Button=%Btn%,100,200,110,30,2,,This is a hint
EndDialog>Message

Label>CheckForMesa
IfWindowOpen>Mesa Plus - Version*,DummyMessage,StartMesa

Label>StartMesa
Let>Msg=%CRLF%No other copies of Mesa are running.%CRLF%%CRLF%It is OK to start Mesa.%CRLF%%CRLF%We will now start Mesa for you.
Let>Btn=Start Mesa for me
Show>Message,Result

Change Directory>%Path%
IfFileExists>%Path%\Program\Mesaz.bat,RunBatch
IfFileExists>%Path%\Program\Mesaz.exe,LoadMesa

Label>NoFiles
Let>MessageCaption=Cannot Start Mesa
Let>Msg=%CRLF%Cannot find Mesa file%CRLF%%CRLF%Looking for %Path%\Mesa.bat%CRLF%%CRLF%or %Path%\Mesa.exe files.
Let>Btn=Stop Mesa
ResetDialogAction>Message
Show>Message,Result
GoTo>Goodbye

Label>RunBatch
Run Program>%Path%\Program\Mesa.bat
GoTo>Goodbye

Label>LoadMesa
Run Program>%Path%\Program\Mesa.exe
GoTo>Goodbye

Label>Goodbye
Let>Msg=%CRLF%This utility was provided courtesy of%CRLF%%CRLF%BOB
Let>Btn=Thanks a lot, Bob.
ResetDialogAction>Message
Show>Message,Result

Label>End
This runs Dialog for StartMesa, NoFiles, and Goodbye.
Why is the Dialog at Goodbye the same as NoFiles?
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Post by JRL » Tue Nov 06, 2007 4:58 am

Hi Bob,
Here's your script working as you want it. I added a couple of items to answer your earlier questions about changing titles and images.

Hope this makes sense.


Label>Start

Label>Variables
Let>MessageCaption=Mesa Single Session Utility
Let>Path=C:\Windows

Let>OLDMANATPC_DATA=%Path%\OLDMANATPC.bmp

Dialog>Message
Caption=%MessageCaption%
Max=0
Min=0
Close=1
Resize=0
Top=170
Width=600
Left=410
Height=320
Label=%Msg%,50,40
Image=OLDMANATPC_DATA,280,20,250,250,
NextImage
Button=%Btn%,100,200,110,30,2,,This is a hint
EndDialog>Message

Label>CheckForMesa
IfWindowOpen>Mesa Plus - Version*,DummyMessage,StartMesa

Label>StartMesa
Let>Msg=%CRLF%No other copies of Mesa are running.%CRLF%%CRLF%It is OK to start Mesa.%CRLF%%CRLF%We will now start Mesa for you.
Let>Btn=Start Mesa for me
Show>Message,Result

Change Directory>%Path%
IfFileExists>%Path%\Program\Mesaz.bat,RunBatch
IfFileExists>%Path%\Program\Mesaz.exe,LoadMesa

Label>NoFiles


LibFunc>User32,SetWindowTextA,r,Message.handle,Cannot Start Mesa
Let>Message.mslabel0
=%CRLF%Cannot find Mesa file%CRLF%%CRLF%Looking for %Path%\Mesa.bat%CRLF%%CRLF%or %Path%\Mesa.exe files.
Let>Message.msbutton2=Stop Mesa
Let>Message.NextImage=%Path%\YoungManAtPC.bmp
ResetDialogAction>Message
Show>Message,Result
GoTo>Goodbye

Label>RunBatch
Run Program>%Path%\Program\Mesa.bat
GoTo>Goodbye

Label>LoadMesa
Run Program>%Path%\Program\Mesa.exe
GoTo>Goodbye

Label>Goodbye

LibFunc>User32,SetWindowTextA,r,Message.handle,Bob's Ad
Let>Message.mslabel0
=%CRLF%This utility was provided courtesy of%CRLF%%CRLF%BOB
Let>Message.msbutton2=Thanks a lot, Bob.
Let>Message.NextImage=%Path%\BobsAvatar.bmp
ResetDialogAction>Message
Show>Message,Result

Label>End

User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Post by JRL » Tue Nov 06, 2007 3:11 pm

Can you also explain what makes a Dialog Modal vs. Non-modal.
Modal vs Non-modal dialogs.

To make things simple, all you need to remember is that modal dialogs stop the script process until a user picks a button.

The script difference between a modal dialog and a non-modal dialog is centered around the result variable and the Show> function. If the result variable is on the same line with the Show> function the dialog is modal.

The line:
Show>Dialog1,result
makes the dialog modal

To make the subject more complicated...

Non-modal dialogs display and the script continues. This allows the potential for dynamic interaction between the dialog and the user. It provides immense flexibility for the script author to make a dialog perform.

If the result variable is not on the same line as the Show> function, then the GetdialogAction> function is required to acquire the value of a button press and assign that value to a result variable.

Another important point to remember is that the only dialog object type that is involved with the dialog result variable is the button. The only value that will be assigned to a dialog result variable by Show> or GetdialogAction> is the number that is the button result. (Remember that the "X" in the upper right hand corner of a dialog window is a button, the result value of the "X" is always 2.) A basic button definition structure looks like this.

Button=Button Name,X location,Y location,Width,Height,Result

An example:

Button=Ok,200,250,75,25,
3

When the above example Ok button is picked by the dialog user, the value that is passed to the dialog result variable is the number 3. If the user picked the "X" in the upper right hand corner the result variable would be assigned the number 2. Thus, based on the value of the result variable, the script can branch to accomodate the user's selection.

Since GetDialogAction> is nearly unique to non-modal dialogs, using it as a search term on the forum will turn up many fine non-modal dialog examples. I said nearly unique because I recall some posted modal dialog scripts that used GetDialogAction>. These scripts could have been rewritten to not use it, but GetDialogAction> will function in a modal dialog script.

I know this is a very sketchy explanation but hopefully it will suffice for now.

Later,
Dick

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Wed Nov 07, 2007 12:05 am

Thanks for the modal/non modal explanation Dick.

I have been using Dialogs for years without having to worry about the distinction. The button operations and results have been used almost intuitively based on what I needed to do. But when I tried using variables for some of the objects, I began to wonder if modal type had an effect. Answer is NO. Thanks again for the clarification.

---------------------------------
And thanks also for the script mods you made. I never would have figured out to do that. Just a few more things to clarify. The OLDMANATPC_DATA was reference to an imported bmp file that I left out of the sample. But I understand what you are doing with the optional image name. I missed that completely.

You left my %btn% in the Dialog but used Let>Message.msbutton2 instead of my Let>btn=...... Was that an oversight in your edits? Where did the reference msbutton2 come from? I don't see an optional name for button as exists for image. Does the "2" at the end signify any intelligence? There is only one button in this model. Same question re mslabel0. I suspect they are a result of the libfunction and handles?

Re the LibFunction, I have been fortunate enough to avoid learning this until now. Gotta dig in and do some homework.

Thanks lots for the direction......will try this out.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Wed Nov 07, 2007 1:39 am

OK, I have this working,but it needs some explanations. Here is the working script:

Code: Select all

Label>Start

Label>Variables
Let>Path=C:\Windows
Let>Img=C:\Meta2\Pics\OldManAtPCRight.bmp

Let>User=
GetEnvVar>USERNAME,User
IF>%User%=
	Let>Name=
ELSE
	Let>Name= %User%, you
ENDIF

Dialog>Message
   Caption=Single Session Mesa
   Max=0
   Min=0
   Close=1
   Resize=0
   Top=170
   Width=600
   Left=410
   Height=320
   Label=%Msg%,50,40
   Image=%Img%,280,20,250,250,ChangingImage
   Button=%Btn%,100,200,110,30,2,,This is a hint
EndDialog>Message

Label>CheckForMesa
IfWindowOpen>Sesame Plus - Version*,DummyMessage,StartMesa

Label>DummyMessage
LibFunc>User32,SetWindowTextA,r,Message.handle,What a dummy!
Let>Msg=%CRLF%Hey%Name% dummy! %CRLF%%CRLF%Sesame is already running.%CRLF%%CRLF%Save a license for someone else.
Let>Btn=Sorry about that.
Show>Message,Result
Goto>Goodbye

Label>StartMesa
LibFunc>User32,SetWindowTextA,r,Message.handle,Starting Mesa
Let>Msg=%CRLF%No other copies of Mesa are running.%CRLF%%CRLF%It is OK to start Mesa.%CRLF%%CRLF%We will now start Mesa for you.
Let>Btn=Start Mesa
Show>Message,Result

Change Directory>%Path%
IfFileExists>%Path%\Program\Mesa.bat,RunBatch
IfFileExists>%Path%\Program\Mesa.exe,LoadMesa

Label>NoFiles
LibFunc>User32,SetWindowTextA,r,Message.handle,Cannot Start Mesa
Let>Message.mslabel0=%CRLF%Cannot find Mesa file%CRLF%%CRLF%Looking for %Path%\Mesa.bat%CRLF%%CRLF%or %Path%\Mesa.exe files.
Let>Message.msbutton2=Stop Mesa
Let>Message.ChangingImage=C:\Meta2\Pics\OldManAtPCLeft.bmp
ResetDialogAction>Message
Show>Message,Result
GoTo>Goodbye

Label>RunBatch
Run Program>%Path%\Program\Mesa.bat
GoTo>Goodbye

Label>LoadMesa
Run Program>%Path%\Program\Mesa.exe
GoTo>Goodbye

Label>Goodbye
LibFunc>User32,SetWindowTextA,r,Message.handle,A Gift From Bob
Let>Message.mslabel0=%CRLF%This utility was provided courtesy of%CRLF%%CRLF%BOB
Let>Message.msbutton2=Thanks a lot, Bob.
Let>Message.ChangingImage=C:\Meta2\Pics\BobMoveEyes2.bmp
ResetDialogAction>Message
Show>Message,Result

Label>End
No imported bmp images included here because they do not work as variables.

Notes:
1. The first time the Dialog is called it uses the variables. Closing the Dialog creates the Dialog.Object.Names for mslabel0 and msbutton2. Additional buttons, labels, etc. will results in additional Dialog.Object.Names.
2. On subsequent runs, the Dialog.Object.Names do work as variables.
3. Variables for images work for full path images, but do not work with imported bmp files. This needs to be made operable.
4. Dialog Caption Name can be changed with the LibFunction SetWindowTextA. Reference is shown below for MSDN info.
5. Would still like to see a variable for Button Hints to allow changes like the button text itself.
6. LibFunc info at http://msdn2.microsoft.com/en-us/library/ms674884.aspx

And my thanks again to Dick (JRL). Once again you come through for me.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Post by JRL » Wed Nov 07, 2007 4:51 am

Hi Bob. Glad I could help.

Comments on your notes:
1) and 2)
The numbers on the button object names are sequential starting with zero and are related to the order in which the objects are defined in the dialog. In the sample you've submitted the first object is message.mslable0. I'm only guessing here because the image object does not show up in the editor watch list as message.msimage1 but since the button shows up as message.msbutton2, the image object must be included in the numbering. I usually put my image objects at the end of the dialog so I've never noticed. If you add more objects, placement of these objects in the dialog definition will determine the numbers at the end of the assigned object names. If you place a new object ahead of the objects you already have defined, the script will need to be altered to accommodate the renumbering. The first time through the assigned object names do not exist so the variables you created work to define the dialog. But as you've discovered, they only work once. After that you must use the assigned object names and ResetDialogAction> to change the displayed objects.

3)
The way I handle this is to use the new base64> function. For lack of a better method I email to myself any images I want to use. I use Pegasus mail and it converts the images to base64 encoding. All I have to do then is copy and paste the encoding into a script. I assign it as a variable then use base64> decode to write the embedded image out to a file. The file can then be swapped as you've noted. As an example look at my post for the animated earth.

4)
You got it.

5)
I don't know.
One possibility, if you have specific known hint messages, would be to create separate buttons for each hint you want to use. The buttons could be stored off screen and swapped out one at a time as appropriate for the hint you want at the time. See here for Rain's example of moving dialog objects.

Good Luck,
Dick

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Wed Nov 07, 2007 10:37 am

I haven't looked at details yet, but moving objects off screen may be a solution for the different buttons.

I don't think Using base64 approach will work because I am really looking for a single compiled file. Your seggestion sounds like I would still have to package extra files, but they would be base64 vs. bmp. The references in the script about a "gift" is real. This is test stuff right now, but I am looking at a messaging utility that I can give away or could be simply downloaded. And I don't want to bother with an installer, just a single exe file.

I am hoping that Marcus will quickly provide the ability to use embedded image files as variables just like the external files.

Thanks again, sometimes it just helps to talk things out.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Post by JRL » Wed Nov 07, 2007 1:27 pm

You need to examine the base64 example because Marcus has already provided a way to embed image data into a script. You will be able to send out a single executable file that has the image data embedded in a base64 format. Your script will decode the embedded, base64 encoded data and create on the users hard drive the image files that the script will be using. This process is quite fast, you can create the image files, present them in your dialog then delete them all in the blink of an eye. The user will never know you put a bmp or jpg on the harddrive.

I'll try to make time to type a sample script less complex that the animated earth sample so you can see what I'm talking about...

1 hour later....

Ok, here's a sample:

Code: Select all

Gosub>DefineImage
Let>OLDMANATPC_DATA=%TEMP_DIR%~~tempimage~~.jpg

Dialog>Message
   Caption=A gift for you
   Width=272
   Height=320
   Top=170
   Left=410
   Max=0
   Min=0
   Close=1
   Resize=0
   Label=       A little static,80,136,true
   Image=OLDMANATPC_DATA,90,20,80,80,NextImage
   Button=Ok,76,200,110,30,2,,This is a hint
EndDialog>Message

Show>message,result
DeleteFile>OLDMANATPC_DATA

Gosub>DefineImage2
Let>Message.NextImage=%TEMP_DIR%~~tempimage~~.jpg
Let>Message.mslabel0=Always liked this image
ResetDialogAction>Message

Show>message,result
DeleteFile>Message.NextImage

//Putting the encoded data on individual Concat> lines so that it will post on the forum

SRT>DefineImage
Let>ImageData=/9j/4AAQSkZJRgABAQEAHQAdAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMQD/
Concat>ImageData,2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
Concat>ImageData,AQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
Concat>ImageData,AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCABQAFADASIAAhEBAxEB/8QAHAAA
Concat>ImageData,AwEAAwEBAAAAAAAAAAAABgcICQIEBQoD/8QAKBAAAgMBAQEBAAIBBAIDAAAABQYDBAcIAgEJ
Concat>ImageData,FBUWChITFxEZABgk/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQIDBAD/xAArEQEBAQACAQQBBAED
Concat>ImageData,BQAAAAACAQMREhMABCEiMSMyQVEzFFJhU3FygZH/2gAMAwEAAhEDEQA/AMw7YnQiHRWVudPS
Concat>ImageData,fxuzD1T+XB9WVbv8oSMqVD5D+PaPoDOTTBUzeeZa00IXwRg10+WuWXP7CvjvJkvaGW53TN2K
Concat>ImageData,MblOZW1f9M+JTZUzpSMirXnO+NolJgSR1yUXLSmObLkPIasLWRF+OuZFNFetE6EbYQZaCDB4
Concat>ImageData,+O+YLDaBq5jnfSDg0vbP0TxhfJiPkCjaYeBeW9yOt2f0IILRzwOZspzMy4aK4x/TwRfhLQ6L
Concat>ImageData,iE3qUqGte7NS4Ks1SE3HUUJx1PrGlkeS9Cdu74DKZgo3I3PlXjpEwSvlmf0Pf0gSeXyllplM
Concat>ImageData,txMPg3FL6moueejNPJw3l9an+EKtwb8+6aLl5iVht0ehaEukhH6J2DQhuWq35yoVffM6MDrn
Concat>ImageData,UtRlMt4rtJn9rqnZ8fHPUK/+r8/Pz5mxcKWOQ3RZ19g7r7SEK2xwV2XLl/BMn5L50e3Rajl9
Concat>ImageData,ty+WUv8AC+s0zR7NofUt0DXqpTw5eZfUcVWgaTgpoZCAHxqW5W6PxgyzKulIn6/bFjurxiaw
Concat>ImageData,dk/pNjK1lgkFt/bwkmKlTDlwK4GCFq9TgBCX4aoKNeoQ/n3SV2zUnGfdFD286Hj4+Nadiv6u
Concat>ImageData,9X5mraCvB9TXdIKPq7RPMN4eZUIKzXrFkQhbAJUy5b0pNFhS+6Mv1bVsSxDPgquIu3C/mrmT
Concat>ImageData,O1pNJLC0L5l/S14WD5c09ZfoDQYwupdyeuWCEZ1yuudbePR/Ykq0lijF/wAUjbmzmBi6HpVf
Concat>ImageData,8hKFCkN0fBIaUHgJR64ub5rPkgeZAhvh4aVePL3GdDSzqyX02H1dHqkbTaVTabEbTbLSpzEb
Concat>ImageData,88I2lT5NsstgP1z+p+L+OgdXx/vtSHmUYykA1Lae08T5vvECVKuOiFUgGRpIw00nLNgr5iLT
Concat>ImageData,BaZSCGQGV8XrhCndmGTwrXLOIlt/JbLQWecuPehtDV/Pu6KROkv0AqPWkoa+AAUAUpCJOrdY
Concat>ImageData,fV6FJ825PtS05OLIpMq2yQXKo4HYD2xdCDXUzjeOEoEfW6HGBbe9Irtv+9hh6O03hjVdCBZ7
Concat>ImageData,PIGSqjrpHxo3K4s7DCaMiqsakeMAFOswr8oC2e0sbUIjbc07NfGKjo06yy6MD/LfkjDbT6GV
Concat>ImageData,yL6MxTi+/OXmI/XSeQeVOYE8tq19YJhERO1SUHKUcmHi9f6OK25qEBYpNPudPuISHIjBVT1s
Concat>ImageData,lnWtJWWfM5Vvz+fQ9KBGT+bsQyO0E1wR+cUoG9oKQgripX0ZSdiHOhqEmQcKKPeaVlx0gMsX
Concat>ImageData,ztu4dqkS+h7UiEror7bpGnRYAxVZYB/qd65gPYXoaprvdHMvxQp1ZBJjPkTl7Ft1OUrzZLEI
Concat>ImageData,E+V3Y1PP+qNOkIVF9Rjr1Xy9stO5KbACRHh2Z64eeDw9udMm/OLMS2mekfoflspndEpArvvw
Concat>ImageData,VzFn1bxMaWq33+QUSr6RuSfpTcthbZqrogY22KunrxCmbsKYe1QqifF2WFNR7BocUt+ph/vd
Concat>ImageData,XeupSa3ROHkMClqibzCpKwn2euzQs9loPa4RcTajVGmTFPOawIQzFPJeIDWHmxhP1/Rmb+39
Concat>ImageData,zvkx4o++WrWIb7matZS6ZZrVYDTWYYybQjQkmVhRyKFdMzrDoc3UZ5MVlahxzLNQdDTFLT9Z
Concat>ImageData,YykV9LF6Jf0PRFoY5LnSPUWUOOY1BQAD4q8fzUWKW8DirglaggiVG3z9lahnFz5OPtlZ7wda
Concat>ImageData,8rlUVXv1PgQn6gEw9gQj3Y5VXa3+93r1QCun/irb+Q6TxTRb3s8VXvJoDIOI+tE07VBSwIsD
Concat>ImageData,bvtlIT2PNuyUuChN1thI0a/oq7FTsqZhQs8V9bH/AOocScbgz2IiM0xUbeg/PnXFJgu0aoJl
Concat>ImageData,9+C++TK9+I2MsxWgxKkdpJPm1/vq0KEkdqAZ/wDNT3P8+VwHjcJvJufutEjLm72WohPe5vmI
Concat>ImageData,bO2M1NqXfnqoSWamRXOj9DJLEtVUnPXYKRRVuVp2EdcCATXq40kAqw2/SrMkOy6Wfiric2k3
Concat>ImageData,VGdOZIV15tklV5b184AnWH7Oz47ZEH9Tse50GLAGy0SC8s5aY88ZfL1ctX8uVQZT5neG5iO0
Concat>ImageData,b27rsxq+x6paeGG5BQA2q7Je9n6AP7bpsL0lszhUgVfH6atrWIYo4zb30tzRT6ure3CrfvtV
Concat>ImageData,QUsvlTcW7GYC4D7Aq2rZCxcOri8pxkGC3VsV/IUP7sWWcyLF6NwOa7J1X8zMHdrgEgBRF75z
Concat>ImageData,A0tLq5B7bkFsrrmorx0RvJJ3oQUfhSoIWEsnQj92K1G2JGghEE5KRa9N1eWcZCY4kDf0V/yx
Concat>ImageData,DINFLRG/7zknvWauqhWVaHo3cBqyEC6OEhhsDBmw86L8CyWdZWsFK1++cFMQe99Kr949tB7k
Concat>ImageData,pubb6q/TWFV6QPTTNBg16wHRa3haWhaV1xP0DYpEbEVIopeZZZOLLOZZZxZZ8Xnn+fQav4zh
Concat>ImageData,2pK1Mo17f0ZsN5ookZKvqn/Q7DQZW8UQn8+A9trN9MaDDl7ItEvdoOZvD52SkT/ratwRP9li
Concat>ImageData,mJeKqlwrEteLqmSdS8X6kKu56bYa57KC7f1bb05ihJ04pgjZeDZ7n+9GwyCXK+w9iZ4XqB2G
Concat>ImageData,ApD5qG2CnRrkSEHj8tbIyasqMyrjnJHR2sr0Ap20ko8OfWPS+OM1eBeJjKAAlZK+9W6yq5Z/
Concat>ImageData,bD6N2dXDGPBpLaZ5yPkbaWSZWEBck9tTF906oMW2Xnh+1XaHBYbXj+Iy93DTFTPLNq7ATtCR
Concat>ImageData,rAicdY3Ku+lCFpir20WzNXda1xxW/lq37lo3h/qNh7WwwytuHlKCtJWGtJQzvSZ24I4B4M49
Concat>ImageData,FSIwqftccRqC4PFgtFMQ7SqxxVdqFbnCJsH9yw1zavQLHCn5WKailWJh4Jqcu2uxJlj6dQqp
Concat>ImageData,kbZtj1dZYdcXGwWt02cLUr+5HIULteRRYV7hCSCmWwJgSTznFZty+rmV5Z/BDAtfWGEpVKqp
Concat>ImageData,Hqm+ScSwgM10T5e8f+/TlQiJdPdeKlbhIGGN1kviqfkeT9DR4qCiL7vP/NmskisIzpDkXCs7
Concat>ImageData,zZVqshiwf0fcOir2sNDRA5VvYXNAji2EOfRI1WagtWOFa0FKVTt635DAB5ZpKrZq6Woubq3n
Concat>ImageData,THfbgK0zKs85zyZxo40XSBT92R17iJzH8pERjLH188NKT5I7bpehFWxbabgEEvNel6Ej0/pA
Concat>ImageData,RcOI9GpCX/330XuBnPa6PU5DRaz26a8Z1UgWky56TRQwpwxUmS2yT13/AB/HNvH/ADZJb/3s
Concat>ImageData,Jlv54Mn4k9ZfnuswySGiz3on9S18CTU3trWWZQzQmvtqasqAmejeqB032o8fdDstqgOq/PEq
Concat>ImageData,GrfTcYgMDC2BpmUW8f8AL9KAiH3mq6GFZr3TP6B9Db3glhVKK+Yf9f5hfptP/YELHXFR3Qeg
Concat>ImageData,6VznKOz8IQq3vFloXIA4FnbP6CW76E/0X2Cn4vPzp3HGX5ztPrnrrXnWwLTGGkyrL/mHCHAw
Concat>ImageData,ToBHoSyqi/aJkEmMzg7TrENeneuwpurqmTkE09VZ/N9nIFgAf0N8qjR37HuF+I2iHOP0Ugb9
Concat>ImageData,I3UYDJK5XknPuYqGk6E3FLQ8rQEf4RX5uUHFSXGKa4SuhIUR5vWla4JsLkvkyQNsJS/O9/GO
Concat>ImageData,Z+n3063rJy+uXknbjm8Hx3rbYe3MkqvIMpnHZKdkvteeKrzZP6k+JJ/Bknzx6l7nrJ9pfmq6
Concat>ImageData,/C827S07GYEK/XcvHS3xIX0z2oA7v9AStY0Q2DU1/QNMOhXpliF3ZVMP5BSkvP2kPs1IbUVS
Concat>ImageData,o6VN6xrp1X9Yms/n1+oO/uKrYqVHsUIrFsmB2lOkUl+x/Bs6psdRU/hDGj6AuSQkk9vXJv8A
Concat>ImageData,i8SeLP2c19lHdhJ2Prdk/wCvdd86l+rfby5PltY4Uz1Y1DzyQ7KrZZ+wzqA/7awLpP2s0gUg
Concat>ImageData,sNbqmFd6yS85H5IyRYIP8l2ajdqTGRk3prssFJv45/X470GboWLH3J9D2HxuV3wuxTfZxRT3
Concat>ImageData,9v8AAldxuDC0hKzHUuztJ6SwxTEGJklu3zXwiYbf3H+o2elOWeq50ZwBxPLbsRyz655Gf4wc
Concat>ImageData,gBDnOD27Kn1eXYWVc9UfvnatXy3UimkhY0O+l6pyJnGVFX3L0YyaqV7l3R4wWw6dtKeQDCPD
Concat>ImageData,Arg7mkeiETGc+f0Rn4seKV2SzKvM67xR1Icl/wDr9r3Uh+tmRiseYCuoVs85R+2hZWrUTKzB
Concat>ImageData,72JF6noOhR+nowFa1cCJog1/7ZNzzGFuMXSHrxeR8U6SneNsf6w/o3nNmpHiojyvN2q8sMet
Concat>ImageData,ZQmVvQCzXeF0yna1V8KrQ3IZi+ILZyFruxlc8snyNimgmH2KxGDYB1VOq3TPs+HZd0BoQpxJ
Concat>ImageData,Y560WDQeXcUwrKUPTqH09SluXXErz9lagoJdAbJUHGZMLc9Q0Q5ekF2IJ2Kh9OQ+xNp7ZTXW
Concat>ImageData,PQan9RDWZ7HBZ9z7Y7zb5emc3uml1WWJkMxQWkXdbRmKrSM8zarbCADObbbwSSZzbeJJOfie
Concat>ImageData,myzBBaQeKZpMX3Zm5jz6/VRw4AD1jRN7r8jmlG0CHrU1nnvmBteSxSsynLdW9T0BomOn7zBc
Concat>ImageData,CuLAZ/5w3sXmJ0Nz7vQBu1DQf/XxuTOlZe0whM0v2dC0ukCaL12kEnJnbxKPlbLGV/U4aIfx
Concat>ImageData,8oL2nvBCO5aj90UmzYi8DFsoMu2xdlAD2Z0mBv8A1oEmH/2Qv2twWwuy5r9JCKNXy7FKqeZW
Concat>ImageData,9vfqnkaRitQiytdSz0ObKLs1a5ZtxkQZYdYfL9a2TW04Eu6dzr+pWkZ9/wBg/CdB92brGuoj
Concat>ImageData,YF8fa8iY/RLOOgfApxFHLtbxLKr2auojqUtSxTuVRXmOWb1Ln0rjuSXeY8EIuPNFTyc5WW8G
Concat>ImageData,12o2Fl9iwVLPVOthi+vFSMnY1cmG3kS9ybHOqRhVihtocNRc9iul9BcVt5XCnBfODtLSAWGU
Concat>ImageData,XZM9ZpfTKyvXA6/7GB9QtKNfTMZg8nlwQQiXVRot1aH2pYsDfdqnL8r+KVxKnIGj57qGzaLq
Concat>ImageData,HZvLDw0Ng8oPULloNtemD11H9+7diOX1ojW/iMgUGliFfPvlkrWxP0BPfu2fV+S7f+rpkL82
Concat>ImageData,26qOCVdZfFC/xrivjQY/H+B4s1dWdw5I1hyA9nm9M1P21EL2lFURWdkzxPbgr1HQ+IDRhhU6
Concat>ImageData,7dOj/ci8G809gOfgw4cfjmjc9/lR6fcuzIjriUztmpX9XxUOusrMaql1E8Ox7YbxItA2NXy1
Concat>ImageData,DGACUb6qRpWp7NGQ5DPSD2wNcrM8/c655+PxlLDEd0ttDmahpuVbpxTkVtYtJ0ENbUEKV6mW
Concat>ImageData,q88STm/j+JJ88fn+f/nqytqQMps4046BmPUn9Vr0LuSup5JL5H+7JJk0fxvjuBUlQ3BzS+d8
Concat>ImageData,WsfBVK6U9yzuTIRBihxA1UHkG6lMPI083926CGYEppb89u3atCG1VDuOI6Kuc2c0ZZtxis10
Concat>ImageData,lhwGO33XM9xAsnnxSl8+NJheX6mhibhWNkEf3HgJW/t7lqq9l6RU588iy7VLv5h4VV+IUDXo
Concat>ImageData,9DlLBUobp/tShV1n2vgUxS6MA7av6j8CL5Et7PLpFFDmGYRQGlqLovBIvvi/Myb1VnVtM+Ee
Concat>ImageData,WNR6adFFauj5xGuh+RUxeOBDo/x8u0c9BrXMnOkCeHuOH2yXXSq22uSsOsrs5iWy3LUxiXzW
Concat>ImageData,YY77Z3T22c9wYd01npmhhfb+SM+7QTXtV2z4g1E1UebzzY1zrEGgzC0l4Vomlos0QgqsuaQi
Concat>ImageData,seaWfMY8hLAV6w6OiHS7yYt7x81b9pt+UXlkCegNw7+luQr2fHGwovWpyIVhGJVLR/8AB4gd
Concat>ImageData,Q1fYbirXulT9gWbioy2P/EVX3d9TAuSK/S8ELq6cRZd0CYXPLWTIENN74A5YWXrRIiIivCXq
Concat>ImageData,zlOEC3SNhrUmKhKFIr+jA1mx5KViFy7QazdwZYdWladdb6VLGwfa/VXNc1KrYu7BkOfpuXnl
Concat>ImageData,FtZmYcGRy6276Ja68o4orkRtkKNHlVsblvhiz1xt+CtyxDcOjoZwvD8/zbGb+c5a8cgKZTRE
Concat>ImageData,Jj9ZyJOdDcq7Yzp7DTOGrdQw7m7y5oyXwo6g1kPFTaLzkBl+O9MB78/F9aPt0rDYkh7fZ0Za
Concat>ImageData,be0o1ukryW2bzzIrtmnT51GvUGeLQIzT7T4XSk0sNk7FcQRCkG5fesaEiLWpUcNP4JpUcpuY
Concat>ImageData,ZE7diZuAKtOU955qTslS7UwPAPWUXK+eraoCgUP599bNKOV5x0izizs6t8o2ilxKdEGAoI9p
Concat>ImageData,Js7WsNsQNgHl6rqW72FQHsHUnWHpG17QWcsGSdXyJZ7m0jL/AAo6H9jnCrD2s6U6IeQL5RgZ
Concat>ImageData,PMlIPEZzb6D/AIdVbM2yAbyREs31V2s4E0sNpZ4Gw3L+Yo3hz+MDkyZlvTh/ij+LEDxPk8Cf
Concat>ImageData,lzOujtHg9ffPogL9mlCo6WKllFsL8hUYUv24L9ITH4K5suhfRORnvz+46z8naoX2yIIiOW45
Concat>ImageData,rrge7bJjSFUgibPb6csX9ZGU7lGxMMOVgaackklIFSZWyJGeauv3Gl3fnsyK0vDGWeGBiBEq
Concat>ImageData,GHtssccs1zOsAnKLttXNs58fji8fjt2Uv/lwirP74Rtn4UvzOnlFXJRM5Rsyth/Qg+nXaJaA
Concat>ImageData,qJwwBVZMLJWTBKjNQknAJvYe0LY8d9iDxf7Vo9/BE2SMXwnUCeyIAROO8ABmnKmal1vWHW90
Concat>ImageData,Y37evHGA/wDE2g2ZXFsI6iZo3ximOJYNtCGhoTmHlORWbFNh+hysbT/sI/fAxt/2ebREv+/m
Concat>ImageData,3374dDWy4zQ5t13HnCyL/wASP5Nx9cw0HBRsL9YKaE1qC9xa/gl0v6J1fgGvGnOZhd9H5Jjc
Concat>ImageData,ofx5KEaVSvsUI9YbBjFFJs7X+r8GgL8H/X27ZZz0DwLUfAT7SJ/RFMhK8Eupc/8A6xcsQ+iA
Concat>ImageData,z3RjzBeb4l6hOBgDK/8ADuT3Blc59r4jQL2Gp00PuLUrTOhtztFgijzps7nUK8nvU5IHL2Yd
Concat>ImageData,bEB28a7wfqyiOrwLYjMNx6iu9C7pT1GQveIjYIiudYOC01Y9xhPkBT+zGxBFEP5hoeTdryuT
Concat>ImageData,0SBDza/UuM9W4iwajrmM4qkDc8HrIuJq1B72lIXs3t0A32v4857X5szfb870n2u6f8r+Cfoi
Concat>ImageData,VWz2omF5dqjh1UeSu/a/qXAuHVkG+Hj01S/YfoxNcRbyHNoW96rzVjyCDvQE2OuUHeQ47o+y
Concat>ImageData,u3v5BgpfFsUJ04a8UYZ4hMsX8738qUWr85v/ADUcM0rMWC/mQk5pI53LKj5eSvesP1yWJwhc
Concat>ImageData,6M0qOow0aO0qi9Nbhq2hEZHORx2OmY9X6lMdOt+7ctSHll1EeTQK9qHMvHnfDWcWi1OteWRu
Concat>ImageData,uzp01f76d9tOrfkHTkzyZl8yaGjyArmRnN2jvJO8Gts5sOlv29ejF+lfPjUNjQ+pujOBRd+r
Concat>ImageData,M1TB9Ty/Its1IzjN5U+2g3uDQKjxi7KxfSVE8d8+s+qWXs/5nh/4vBKMHQGiT3rNlc6dQR/U
Concat>ImageData,OXE//Zsb56wN9WaqUxMPBuKlcQ16IvfDiG8NZJqigBadsb1Q2y+aFawQsJZIYUq1/EHsbdNf
Concat>ImageData,S32dkpWXNRHeaDUvIvBGbYqoLcGaDFa9tnOWq17ltc9VAonyYZ2DFk7SClBWLi6pI+ymFg2w
Concat>ImageData,eD6v78iK12na92Llq48xbFppfWM6abPImQmbDGIbErS03kjAN9BkhlzzWEnjA3LTmPS2s9i8
Concat>ImageData,0RS6IJ+wqMcoEvRa4xVwUheWz6ioYtM9NCdBmOjofLouigJ0eUWMc561VEtSzOq2Sp6y4n5I
Concat>ImageData,5H2FlZtP1/rPpTpGBmtsPjO9dfnPLefXsFAuG6s8UlkntXQV8mNBMQy5OclqHeWvJ48TKw+/
Concat>ImageData,IJe/8G7vyj+TME5xVT6q3MmFNHXS2NcbVEEov/Vv54Fhq5l/i1LMMLa6tJuiD3ErJSuzWvdE
Concat>ImageData,/wDbKsH8jJPAqWia8EI4vJZ0nm/Zd11v32L9BuYduJBftX2htP3jxUyvRQH/ADNHj7XG/ap5
Concat>ImageData,FR/q1MLr3LlgUQFOXzyNkoD61SaKEWPrR/o78pdHZSnUZ9T6s6tzqK3QICp5s5ylsRxLzEYu
Concat>ImageData,iGF+P0xm0b6sJLmtWilpa/sRcZBFqfCC6HJEwFwrJQOWZScVX/dZb8uz4JPxG1DzDLZnMxby
Concat>ImageData,6PIm21tsMsnBlMsJNs7V3tTJWpXfs6lD1HPQgydWWXBdHcNZgm/QXkRWzDEqa2zpi9mn53Dn
Concat>ImageData,6stOMpsF7XhWju9HlvwqJCYPPXC1e2GWto0OqxnZZFeOzDTL3P4y/wAL14qz+mESV7H7w1qv
Concat>ImageData,cYvjCAc+L+QmtkYxl0UwAbsFxYKaDouRNdLx7Ywl7zYt5fOZI0F2SJS8eZF+x8G1uZB9c9YW
Concat>ImageData,CEWQsHZ+aIGPeQwK1e4/4GEZoo6u0J8QicWwvGtA9zU2n09Ep/Fa9Rmdo74yhf8AIxspK3mO
Concat>ImageData,9ML+VXDu2fbZRq56PR/9Qi5f2CDAN8LtnqcMWR16ehNWWidihNn962VBWrhmSzS9olscThIW
Concat>ImageData,rVT5Mm+463yXyAxsEJ1p83VdiYjpi0Z97OwPN7WSwuTNqXqLJpETs1CZxOVYZyrJJzbJzbZJ
Concat>ImageData,/dsk+b6C8FdhTW8aArIDR+7jvh9lXBLXVESryhmxTQl9oDwFfv8AIOW2Fq2BiHByI/weo3b9
Concat>ImageData,xfViJq1cjlcbdq3U82a/gD+f/wAxr7oXMnec/wBBdESw5RmF0Xbsms+5yop5ApWmp0BJayHW
Concat>ImageData,zC3RM3jFXyRqrtyVTrj5fNOp/wAl/wA2Yq32bTWP7igPAtgRPz+791XNmVfsU6aBW3tqd3st
Concat>ImageData,Z+Xr95ih0Y2O4/kG/wCPlbdKtZNLGfhxYwJTDGZ6DcPKEh5uo2XTE72vKkJ6zwR+b+RGBxkX
Concat>ImageData,5XU+Pqgeos476LHU5qtUkxNHauIamw1KAn5Ba/srJ+ZTImqM9yyRjCU4S3i22Jw20zOuO1lN
Concat>ImageData,euCayT6HsSmB3ud/STEuTQqx01yo1d2++eRq+co84fGDJnXdCrob20aemvPc8gHMxo8DNfBc
Concat>ImageData,XzvS0JZy4ty/gV+sgX/hohQ0v9PjeHB2pjI3xajPesZXrBq7Km3xI6sKhvKavrKVD/QVprMV
Concat>ImageData,iMaPt3aBrrGPcbREmNMyjEfz55t9i7RxamSNk7oz7ZfY+4CsLjLVuiyUvWHTvy3O7lRF0ZMZ
Concat>ImageData,gzFNZQyf6nWxjHFUYfc9o8t55zWBTvjRs2t/i9DrLo10WP8AxIO99PaWNzGfOFmsOv11hmWH
Concat>ImageData,7pfFvTw3Lw1VrXR4OeoCjIj6cENw7KKgqxlmk7/wL9WPJNb665C9MgN/Esqkk6PzUp6rnQao
Concat>ImageData,L+eo19gFM2bY+L0kcFrFikq0NTNGFvN5RgtsJef1OseBBoqlvbRaWTl3lGfXP4SXBzHUZzlW
Concat>ImageData,Xxk/WE/gCFep/wCoP2duONP3c8eP9nHfj55/x8T9/PEufbPBkePQepM27A/OVM2LxCOHh0fP
Concat>ImageData,+SGtiOfz714TZJUP+0L2QbcgWo7Av3JXDkp561q4RoD7v2utSXLcPofC7GFpTxNb+W2opv2l
Concat>ImageData,joqgLSed+cKOZSR04mO4BdQQTO80iTEDUfp0xH8WGF5pMNO/Gch+D7lcwWivBBtlpesP+kr3
Concat>ImageData,gD9/Rg30mwMT1n7YpY7yjyPoyE8U7pGzJbE1oLjWgcmeGIbDVgFrqREsasySL8UcEivn9qtL
Concat>ImageData,9t0wTaOjJRSu3WiYz9dl8uxl4QCwskdz0bxgVSpOueKrDFV8Nevao/RGrV8aQPVL0khj4G//
Concat>ImageData,AFDoYvdL+H/XV8+kz2wNgx9xStcTOQ5lqNsiquzRy1GemcbXVmOXvyvSw2mv+DSbeZzyorPr
Concat>ImageData,zzeYFzZOJ+LZ2ksfbyma6U8QnPmU/qy3DSQPx/WENzzxpKAxLOMvV5wwBPUmZVKADAX+zjhv
Concat>ImageData,zy37UhNdh++bYoeUvVJLnqrePudUyy1pj/sv5+9XPumk6DAKa8/JDn3ja03E5QFL4JvoBpMs
Concat>ImageData,xV2GvEN8EyhsJCniomgeBPXB1WAjJXWLlYJD53HsmU1lvRuD+q+hymf3Z1Ect7IL6F2i8zjj
Concat>ImageData,ImFjUCR81ztzjVBo5ZelY6/huYL5ha0Y8LIjB90yV+CWCneVzUgnW1PXMoFfmLxMmaZ8IHdA
Concat>ImageData,HjljetiB1fNYdL8AOVF7zLop3YmQRLXn/qZ0kez6hh4WqQt2fpITb93PH8AaDtmDTfbajPQe
Concat>ImageData,6yi+NwlSL31k1iR2KWeIxo8B0LQep9FRnnLTtOjXOalnR/Bcov7VyJFzJfrJfxPX/9k=
Base64>%ImageData%,decode,bob
Let>WLN_NOCRLF=1
WriteLn>%TEMP_DIR%~~tempimage~~.jpg,wresult,bob
END>DefineImage

SRT>DefineImage2
Let>ImageData2=/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
Concat>ImageData2,AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEB
Concat>ImageData2,AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAAR
Concat>ImageData2,CABEAFADASIAAhEBAxEB/8QAHAAAAQUBAQEAAAAAAAAAAAAACAAGBwkKBQsD/8QANxAAAQMD
Concat>ImageData2,AwIFAwEHAwUAAAAAAQIFEQMEBgcSIQAxCBQVIkEJEzIWJCUzNUJRYSMmsURjcXKB/8QAGwEA
Concat>ImageData2,AgMBAQEAAAAAAAAAAAAABgcEBQgDAQL/xAAuEQEAAgEDAwIFAwQDAAAAAAABAhEhBAUSAAMx
Concat>ImageData2,BkEHIjJRYRMUFRZxgZEjQnL/2gAMAwEAAhEDEQA/ALosRYL9/cACqU2tnPm7mTEBKUwSkb5+
Concat>ImageData2,AFSJB7Ux1bN4ecBLXizbe17eLi5HuIJ4AKlFJnYolQgRuXsUo9lSCLunmB0LGizVja/s4KRf
Concat>ImageData2,Wd9JCggKBBChwgbyEmFSQQriALHcWLSyNNhYslCLa2CZ5kgghRjkkknmFbYASCDII5FycB4A
Concat>ImageData2,TzdREv6iuR5x7t1FbfcdREAXN3LzlU83imvJxyUIN9OYVm+zubehRAggG7k9iIISSAo7eQnl
Concat>ImageData2,UgSQkJgdOh3d0treK6YB2gqUtQ9oBI7jdtkAyVAJEpSCF8JYN7ZVaVx5ynQmhcwQR2VE7iNs
Concat>ImageData2,A8jcSkn8o3bu1UHjO+qloboXlDxpX67XzDIWtlNk82eO2i3MWDmQSWN9IT+mFBMJB2kbuCUK
Concat>ImageData2,VAVF1er0OiiS11eXi3jIWcSNKUDLLVR+XNx9t23W7rqzSaQ+Wo8mgI+AzG0vPFbGOYgBVx4z
Concat>ImageData2,BnFMK++CIsRwYHvUex7kAg7VQAoEH2xPTGctWmGhc29vRurZVteLbvJ3SiolRWpKiIAKdwgk
Concat>ImageData2,yIAI3EA9Zg6P1P8ALczum+xr0Gxkx20vDe+rXTz6lkiArdJASlUqHrm5QQkA/qAwUkjogsV8
Concat>ImageData2,U7s5XVu8efL8XUG9FtalkKG+QVQST+JS+GNyZnmVEyROXrHZ1I2tcisOVFBv5qVqzxTkz0Vx
Concat>ImageData2,9E7tDl+4gREL8xaGIteU4ntTks9utILC+0HdCwAN6QfMdjT3EqG0EmO8gp5+QZj2ufoBtBte
Concat>ImageData2,say6+o0PPobXC8kFndyUuzgSkAwrg5Ao7vypwUx7YgDo+ei/Q6s1enh3BzRgRAqjx9+Lltf8
Concat>ImageData2,V0K7lpv2upl26wGM+QxfgT+yCFHtfUXai0wLvGa4EqS488xKaaqao+eRvPMdie5AAbmc3KKe
Concat>ImageData2,H39BXe5vWoTxElQISDuBk7D8E/2/x3NR1Td4zRUOFXDpUn5EU6QHBBHO4EH4ieZEMLUS9KbC
Concat>ImageData2,hYH/AKl3QEyODKEwCYPAUCo9uCfz4SO0nlNiGaoRtV4ZK9/mlFH6S3wETzTESUbT5crmiJOH
Concat>ImageData2,GsmbuTnN1+eodw/GgLSwofYPJUYO7+r7f5JSCrghW8k8887SSSXYscMW07iFJMSYBCt0jfwJ
Concat>ImageData2,TPwDyIIVBX1C2UZ1gGiunmT6t6pZU24Vpvp2zumUZjkDre/ulua53Fa5mEpSSR7JgBIR7gQA
Concat>ImageData2,1D66PguuHxuxWpT1ZY7R+MsmobnhDO54M4qI3DYNP8gyvJSCEgEnEUyVAlW7aRX6vedo2cP3
Concat>ImageData2,m6xZf9SUiMlcgRllcOSXsN4Xqx2/09v+/Vq9p2ue8xUJzjCUu3FYkSTPIUOI+0bspSTh+pl4
Concat>ImageData2,5Robgjtojou9hOtmY2SrF1yG0WlR0zan6UB84KEoyRaOcKpLUpIqISoklIWcn7/jbZVFxfvl
Concat>ImageData2,/cuT/c3qr16eHa8U6Oji6mCXuCkEDvyJBBG9e0GS01TzyvqJlGc6uPlevc3eVvLtk1sq8A9R
Concat>ImageData2,DUggsQE8gJT2UQkAxvPKiKXtbvEfijjlxab6xc/TrO8NheXilPCWxtUSJkpJkCAk/wAMyomU
Concat>ImageData2,bSoI31Numt3jWHBkxiVEzXEkefLUjLStXdZJaF9E+k9JtGjizqMpZWXGyVA/e0QEsPlDNcid
Concat>ImageData2,nF9sMaeKBsLgXLfbXY/ZPOQHJRCxEyQdwkymFmABAmTr0E11xujds9Z4sfU3C1SU2e2zTvmN
Concat>ImageData2,xiTyfbAJBJ7lU7JpWoW9xeuBtm54tq7fdmnf2QMkSnaUCICgEgiCCk+4ATKts9Ye15I2N7df
Concat>ImageData2,Ubi6Vb3NmR5uAPYmZCwDMBO1QmQlKkkb0SOhbVcoo1JQKCKSsrAKSrFBTKvvSdMHUbLpE8xk
Concat>ImageData2,YRs+Zl72YEVGTiKNZB62TeFPJNN9ULMsdu+Jt8rayb+ydrMLbnJudIkvhJAIIEGYQZVztMHq
Concat>ImageData2,7zAny8fMdtFOyqCXi3QLR4FsQE03JEbwkchJIAXBncohUBKtoxB+DXVa/wBNs4xgqyq6tXB2
Concat>ImageData2,uxei159LJKBukyApIVJj5E8KMBWx7TjKPPN7NklExbutoo3lomCEk7DIMEQOFDuFFRPChtDG
Concat>ImageData2,9Db9IqLJcCxZD8uMtLUTNWCZ9uSIP4jemjSV3CJ70UGVBitBkuhtlX00B0+tRqVcPOK19wFu
Concat>ImageData2,m+AWPmQR8AEmFEHmB/YkkgRrqR/OmL7P5blbIiY2K+324ifx/pmY6l/UKmmq0tzpb7SG11a7
Concat>ImageData2,+7JHuDeFLUsmQoiJECN0lXYx1EOf3J9fxygogJVbKSSIkJA4B4P5LIIVxBBk7TAb8nl7lM+Y
Concat>ImageData2,xbXNcTF+VPmrxxqojJR6YCQpKLfHB5fk8P3LFAbuMvOEU/qY+HbIfEt9PTxJ6N4cuuMyd8Ka
Concat>ImageData2,Mjxq1s9u5zdtKsxZc8YGIc7QctVgqcaUJG2m+LUduwHrCVhubNeD6HuD7fsV1dOGE3YLyz2t
Concat>ImageData2,37W87ikwZJIBIUe4MnjgBHprN9mirbrp3IC0XFoICR3TO2UphRSoTzwqYAEz1hw+pr4SX3Rn
Concat>ImageData2,xi6w0LDFzb6SatvAerSzLMBjl+2Z7D/kHogA2g4nkIfVc7CmQEoSPaFD8U9jZfxO7wJXCRHu
Concat>ImageData2,VyaGpxVjmwlluSNAcsdaK+AvqnR9vS7t6S18u0dvuP8AUUZLCLyhEJ9slJz8rGREfNyYi2xh
Concat>ImageData2,qHcXZwehb2PFxdtDVYJUqDP7hIESTKieCfaCDBB7CgzxeWTpj+Bs+KYu1Ol1nFy9Ot7kuWWd
Concat>ImageData2,nyVEMPoTKIqpGP42lIfCEkqUog7gUKwtR0KZlRb2ZnW0Gh5dtarTyB87MxzISZ9yClJJnmFU
Concat>ImageData2,xt5T1WRqTXw2sHBLZYJdLriE8lrAhSVFagCCkCDCiEmAeQOBvZd50u1ak1TUngZfeTHJeW7l
Concat>ImageData2,HIBkVBOj7dPTzv2ldNopcVlYxKawsj+7Xi32SVX0JnhIw3Ia4sHB/uLj021g2jTeXvu9y5Hw
Concat>ImageData2,B7oUSPaobVIkJEdWjeNxnynRzQDQ7MsAsbe3ZnVla8WzF2vLJbl+nzACs29AICcgBSOcVT+X
Concat>ImageData2,uUoJBgBHpvrGw4qGCxv7HzN1mUXtnbM9istjARBh9fFFJYCUSYIEJ5AmSq6jPvHH4S9YvC5k
Concat>ImageData2,GJ47jVxkg0jW02equPZHZPmNujcH18YMBYnrBSYL+n9RP0wo/rdX2yCBx19x3HQ6rWfvdbGh
Concat>ImageData2,WURMNVYLbLODzmNXyMdNTsu8abQ7bHSTBBCXJsazyCrou25XbxUXqsH6WuNPvi2xHXrIs4cL
Concat>ImageData2,li1r0avcWvGZpu7R5U55Y1v8MResFfhk0fqXEci9CBxYpGGZrhXtG1ROb4Zu70GfspZfCvav
Concat>ImageData2,F/QurTKGLTd1vTaXYgIcyxqJB7kABCQgKQYMgjYZGdb6dfh/0UoOtDKtGnc4483V4Ly+tLuz
Concat>ImageData2,Zi5OIEfuQbUqICuQf6EyBKd6utJGdWXp2guQWF9em2oEtYvrwWYKlbXnHuUkyFAH2pAkhKjE
Concat>ImageData2,qPFrpO/tWq/lt22ba6WNR8hJqhD3LcJV/M15jFWbxpt1hPa9p3vdf5mDMZNPKMZTjcSg5cY8
Concat>ImageData2,j8ufbNV/hx+pBrM7/UhwzwGPrPcZtQebBxq6pZm/ZI9OdRuVR0yTkyKbGxIjG2KmpQ2qpoCx
Concat>ImageData2,XT7EKKlhPV4mXgUn9nsUV/MeUsjZ+5XP48kgEJ2gjaBtMEgAJCeatPpnfSzOhGvee+MnPs3V
Concat>ImageData2,nGc6j2jr+n/NpUlzsUPbuuo9ursVGKlepUpgCmlZSEkgq3FBNnr9WTXy0CRNtYiQr8SVHlSY
Concat>ImageData2,JICypRJSOCYEJKT0ZejHef4Yd6ZCy5dvlJZEVioA+9SQZJWcyWqL4t970NqfV226X0J24Q2n
Concat>ImageData2,Z/TEI9yXGId31NCJfGTfP9Plw5sZXKPC7ikSgaQDVQkgFO2oYPIntMdpgAT3gAdh1x8q0+wf
Concat>ImageData2,OU2VPMMNxnLktN55xmTlWONGQlrdEoj1Zs9bp3BoLSlcFVEpWooBQds7+u0Efep8jlFSOe/c
Concat>ImageData2,8f34BPHwJ6c3R/xJk4yCUeSVIJAVGwHBj/H4fHSU7UmLyipIlLI04k0P3KxT7Yx1gz+q8x5X
Concat>ImageData2,pZ4ktZsWc6VWytn/AFIdsmtVpUhSXDGM5ey9MqAULErpsKKiaiIBRUQtBJUSo54bPH80N04v
Concat>ImageData2,dvlL9XcbR6dk3LTePQDZ7iZJWoEY6BASFJ9oVHMhMeiZ9Xjw6eGjWDRm0yDWjL3HTrOmClfW
Concat>ImageData2,GnGWYwyJybJb1yWbojE0YYmklWRMdytKU1qIrYqKSRblWY2Sa9VVXEg96MVMQeXj1C4oXdhe
Concat>ImageData2,QLsWd8AmUmCADuEABQCkpA3KKlQFCM4+qtsNg3lY8ZR7ltRtQkgWVKmMW+JnjY4c7S+G/qzR
Concat>ImageData2,756T27tP6kd37MowHuDHmRhC0ktJJQZWvLl46FWi8YbibBcWKWnL215fgPPO7vjgVCSUkg/p
Concat>ImageData2,5QgABJCUCZCR7k89TzmL1o3qpirBfYW6ujZlNrZNQyXHmjDHn/doYASwGSN20dkkkAR7tpEd
Concat>ImageData2,c4Y9Y0nW5oeeu7tvtCb8ptr8g7o4PckwOJMkiNvM9HLo94bMk1DYLBOC3z7dpurMTapEuYUY
Concat>ImageData2,G5QlCkgnsZJkKVyDBFjU5HLjwQtBrkOG6/8AL75oLYOq7+k0+k4soi/eQFgVWQ42EnzSmBkd
Concat>ImageData2,CboHrVrxorrHjF61XluxtHm03tq02nLklKn1h2l+kSUgE9/coqO7aY69Cjwsv9HXHAGZ8yKy
Concat>ImageData2,RcWltZNl7chRJT6ptqEkoPICEpUpSgCkjuT7icy/h0+jxrtmGpLNlWoDfj+nWIW1iRaXWVur
Concat>ImageData2,Wt0UlJJKVM3OSIJ/7tVISESUgGetfmimlDFo3p4wYRj9f1C2arJAu3RSElb24q+2VutUpUtP
Concat>ImageData2,3VlBkUlBCRtgEoSQxvh5te86jWfu5HHZXMYzjEZoAcR9pNWcfYkAAmf/AIv+ptl7mk2zR6CR
Concat>ImageData2,/LxK7k+0j+nFBeU4/Sh4BwvJ8p1JITRbLMW9K3o29uP2W0tbXgQdwSAdqNqgAokCYj8txjoP
Concat>ImageData2,ryoKuZ5DPJ8+kKBHyFgfPxwYE9uD0YjrVFO1ChJJr0wmPhSCpfM/H+mR2PMcRz0GtOp9/KH+
Concat>ImageData2,sQAVOyIgmAPuLHHPztB/446dGphcYwj8kBACgcxb4lYqUo0UFvs11nrTyGSytmNpm8pG1Sm/
Concat>ImageData2,dXkufbormz+Ig/O5fPzwhUc/46zv+Of6pHid0d1h1I0g08p6bsTVi92im0ZOrFL1zyuik/cB
Concat>ImageData2,FQuz/e4tVJFNPuVi+4cwQTPS6XUXcJzht8ZQnKMuMXlGTFv9PtZsR67enoQ7m9cO5CM4LAYz
Concat>ImageData2,iSinKeGMhE/x1RjnfiW1q1uyWzzzU7OHPKXl7Lmny18pJZ2dJSjhga0gUGke4x5ftA+AOhe1
Concat>ImageData2,buat/bVjUV9rdW+6fLzT98xMqK1RwDyTzz8CF0us+7yslZKtOVvxyTz9nJ9nPnrVfp2MY9+R
Concat>ImageData2,GMYkWBEiABfbKAMFKUYy9fTw34eyu2Stlrf0q1xb3t+tNzSVVATVEk8wgEGRMpIPJ/8Amqzw
Concat>ImageData2,f46w47jrdatLRYW1E2LRKRbpVBJqAwT2/AHtwZ/8BdLqHtAOsFBecspfjuIefsYPxjx1P9Zy
Concat>ImageData2,lHSSIykDC0FBXtRVQfdy/nPnq2ZlWm5x0U61GgpIWUj2QRzT5mZKvcrkz3/wI6zKarE57m25
Concat>ImageData2,uaFAq2eRFZRshwST9nhSlGe61qj+kAz0ul049vwQDAyFrFvHsNte9q391fL1nnVBOE+YT/45
Concat>ImageData2,fUEvZ+9/Y/11PTv/ACpf/pT/AOB0FbEkKdXMRArvDv8AcieZCwYmY4SkcR2/yZXS6OX6T8y7
Concat>ImageData2,Q/k4DX+wf7h0E6MHuIllOHx9Z1//2Q==
Base64>%ImageData2%,decode,bob
Let>WLN_NOCRLF=1
WriteLn>%TEMP_DIR%~~tempimage~~.jpg,wresult,bob
END>DefineImage2

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Sat Nov 17, 2007 5:33 am

...hoping that Marcus will quickly provide the ability to use embedded image files as variables just like the external files.
Hi Marcus.

Maybe I should have been more demanding rather than providing a gentle hint.
Is there any possiblity of this happening? And soon?

I have completed some scripts using variations of the script above. I appreciate your work to create that script, Dick, but I have not chased the Base 64 approach, it still looks like too much work. But I have held off shipping the files because I want to use embedded images. If this feature will not be available soon, then I will make delivery with external image files. But I can still wait a while if this may soon be a reality.

If it won't be here soon, then I may have to followup on the work that Dick has already provided for me. Just prefer to take the easy way out and allow you the opportunity to make Macro Scheduler even more powerful and flexible.

Thanks again for listening.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Marcus Tettmar
Site Admin
Posts: 7395
Joined: Thu Sep 19, 2002 3:00 pm
Location: Dorset, UK
Contact:

Post by Marcus Tettmar » Sat Nov 17, 2007 9:24 am

I'm not too sure I understand what you want thought I admit I haven't read the above thread in detail. You can already do:

Code: Select all

Let>img=FLDR_DATA

Dialog>Dialog1
   Caption=Dialog1
   Width=284
   Height=236
   Top=209
   Left=192
   Image=%img%,88,56,105,105
EndDialog>Dialog1

Show>Dialog1,r

FLDR_DATA:
424DBA2100000000000036000000280000002700....
Note that FLDR_DATA works like a label. It is not a variable.

I see some reference above to Base64 and something about too much hassle. Not sure why:

Base64>data,ENCODE,coded_data

Base64>coded_data,DECODE,data

So the following short script will read in a bitmap file and base64 encode it:

Code: Select all

Input>file,Bitmap File:
ReadFile>file,bitmap_data
Base64>bitmap_data,ENCODE,coded_data
MessageModal>coded_data
Run it, specify a bmp file and hit Ok. You'll then get a message containing the data. Copy it to the clipboard.

Now in your dialog script you can do:

Let>img1=
Base64>img1,DECODE,img1
WriteLn>%TEMP_DIR%\img1.bmp,r,img1

And your dialog image can then reference %TEMP_DIR%\img1.bmp

So now you have quickly embedded your image data into your script, as a variable. So you could easily have several embedded images assigned to several variables, and change them simply by writing the image data out to a temporary .bmp file.

Dialog>Dialog1
Caption=Dialog1
Width=187
Height=184
Top=209
Left=192
Image=%TEMP_DIR%\img1.bmp,32,24,105,105,MainImage
EndDialog>Dialog1

It is also possible to change the image in a non-modal dialog with:

Let>Dialog1.MainImage=c:\somefile.bmp
ResetDialogAction>Dialog1

At present the above works only against files. Hopefully we can make it work for embedded image data in the future. In the mean time use the base64/temp file solution. It's very simple.
Marcus Tettmar
http://mjtnet.com/blog/ | http://twitter.com/marcustettmar

Did you know we are now offering affordable monthly subscriptions for Macro Scheduler Standard?

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Sun Nov 18, 2007 6:33 pm

At present the above works only against files. Hopefully we can make it work for embedded image data in the future.
That was the current question I was asking. So it sounds like the answer, for now, is I should not expect to see that happen soon enough for my current need.

OK Marcus, thanks for that.

Now I will look more closely at the base64 option. The explanation you provided does not seem to require including external files with the distribution, the earlier one did. I will dig into both examples in the next few days. Thanks for the suggestions.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

User avatar
Bob Hansen
Automation Wizard
Posts: 2475
Joined: Tue Sep 24, 2002 3:47 am
Location: Salem, New Hampshire, US
Contact:

Post by Bob Hansen » Wed Jan 02, 2008 5:26 am

Thanks Marcus!

In the upgrade notes for Version 10, I found this new feature:
Ability to change dialog images at runtime extended to using embedded image data.

I tried it out right away, and was pleased to see it working great. Just wanted to say thank you for listening to your users. Very few programs allow end users to have direct input into development and design changes.

And this is just one of many new features that are continuing to make this such a great product.

Thanks again, keep up the great work on a terrific product.
Hope this was helpful..................good luck,
Bob
A humble man and PROUD of it!

Post Reply
Sign up to our newsletter for free automation tips, tricks & discounts