Jump to content
Ascend4nt

IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI)

Recommended Posts

JohnOne

Cheers bud, pretty ace.

Any Idea why protected mode is turned off, and if so how to enable it?

EDIT: scrap that question Protected mode was not introduced until IE 8 I believe.

EDIT2: Discovered while the control is good for html5 it still will not handle flash games like those bingo or card games on the face book.

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites
Ascend4nt

JohnOne, I'm not sure about Protected mode.  There may be a way to enable/disable it, but I haven't looked into it myself yet.

Also, I've just tested the control on a random flash game (from armorgames.com), and it worked fine.  Did you successfully login to facebook before trying to run those games?  Maybe there's some other incompatibility issue?

By the way, I'm using IE11 and the latest flash plugin for my tests.

Share this post


Link to post
Share on other sites
JohnOne

I use IE 11 and have latest flash also.

It simply would not load any games I tried, including farmville, slingo bingo and others.

Just tried on IE normal and when entered game area got a security message about the content which I choose show all content.

Never seen this with UDF, could be related.

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites
Ascend4nt

JohnOne, all the UDF does is set a value in the registry.  You can try experimenting with different IE versions if you like, or the DOCTYPE setting, etc.  As far as IE browser and security settings, I am not sure how that would be done programmatically.  But the UDF has nothing to do with that stuff :)

Also, I saw a message from mesale0077 earlier that I see he deleted (dude, stop deleting your posts!), referencing >his thread in General Help & Support.

Anyway, he solved the problem he was having by deleting the key, but really the problem stems from the fact that the HTMLDocumentEvents2 interface has changed starting IE11.  See MSDNs HTMLDocumentEvents2 interface page for information on the changes in IE11.  The workaround?  Either figure out how to work with the new interface, or set the Browser Emulation mode to IE 10 or lower.

Edit: Turns out the problem mesale0077 was having isn't related to the new IE11 event objects, but rather to the fact that the <a> anchor elements (without text) weren't registering as being clicked.  Moving the id="#" attributes to the <img> element (or even the <span> element) actually solves the problem.

Edit2: A better option was conceived: on a click, check the parentNode to see if it is an <a> anchor element and if so, what its id attribute is. (see the code in >this post).

Edited by Ascend4nt

Share this post


Link to post
Share on other sites
Ascend4nt

Since everyone likes to look at pictures, I added one ;)

Also, some changes:

2014-08-19:

Changed: UDF Renamed to IE_EmbeddedVersioning

Changed: Function _IE_EmbeddedSetBrowserEmulation() can be called with no parameters - in this case, it sets the Browser Emulation Flags to reflect the current installed version of IE

Updated: HTML5 Canvas demo

  • Like 1

Share this post


Link to post
Share on other sites
mesale0077

IE_EmbeddedVersioning.au3
mini changed
 
added
#include <Process.au3>
OnAutoItExitRegister("_IE_Embedded_unregistry")
 
 
 
Func _IE_Embedded_unregistry()
     RegDelete('HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION', _ProcessGetName(@AutoItPID))
  endfunc

Edited by mesale0077
Copied UDF code removed

Share this post


Link to post
Share on other sites
Ascend4nt

IE_EmbeddedVersioning.au3

mini changed

added

#include <Process.au3>

OnAutoItExitRegister("_IE_Embedded_unregistry")

 

Func _IE_Embedded_unregistry()

     RegDelete('HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION', _ProcessGetName(@AutoItPID))

  endfunc

 

mesale0077, a 'feature request' might work better, than adding your own (flawed) code.  And why post the entire UDF? Please delete it from your post as it will not reflect the current and new versions of the UDF.

Anyway, even though you didn't really ask, I went ahead and added a 'Remove' function to the UDF, which actually works correctly for both HKCU and HKLM branches..

2014-08-19 Update 2:

Added: _IE_EmbeddedRemoveBrowserEmulation() per (pseudo-request) by mesale0077

Changed: _IE_EmbeddedGetBrowserEmulation() parameters are rearranged to match other function signatures

Update in 1st post

  • Like 1

Share this post


Link to post
Share on other sites
Ascend4nt

I suppose it might be of interest how the Canvas example would be done in Javascript, and how it compares to the AutoiIt script, so here's the html & Javascript code:

HTML:

<!DOCTYPE html>
<html>
 <head>
     <meta content="text/html; charset=UTF-8" http-equiv="content-type">
     <title>Experiments</title>
     <style>
         canvas { display:block; background-color:white; outline:#00FF00 dotted thin;}
     </style>     
    <script src="html5-canvas-click-example.js" type="text/javascript" language="javascript"></script>
 </head>
 <body>
    <!-- onevent="func()" attributes fail to pass event objects correctly in Firefox, so addEventListener() is used instead
    <canvas width=420 height=320 id="myCanvas" onmousedown="MouseDownCanv()" onmouseup="MouseUpCanv()" oncontextmenu="OnCanvCtxMenu()">
     -->
    <canvas width=420 height=320 id="myCanvas">
    If you are seeing this, your browser doesn't support HTML5 Canvas.
    </canvas>
 </body>
</html>

Javascript (named "html5-canvas-click-example.js"):

// Simple interactive HTML5 Canvas demo
// Author: Ascend4nt (except MouseEventToCanvasCoords() by Mark Pilgrim)

// Globals
var g_Canvas, g_Ctx;
var g_LastX, g_LastY;
var g_bMouseDown = false;

// Canvas event coordinate transfer
// (from http://diveintohtml5.info/canvas.html)
// Author: Mark Pilgrim
function MouseEventToCanvasCoords(e, Canvas)
{
    var x, y;
    if (e.pageX != undefined && e.pageY != undefined) {
        x = e.pageX;
        y = e.pageY;
    }
    else {
        x = e.clientX + document.body.scrollLeft +
            document.documentElement.scrollLeft;
        y = e.clientY + document.body.scrollTop +
            document.documentElement.scrollTop;
    }
    x -= Canvas.offsetLeft;
    y -= Canvas.offsetTop;
    return [x, y];
}
// "oncontextmenu" handler for Canvas
function OnCanvCtxMenu(evt)
{
    evt = evt || window.event;    
    //console.log("Canvas Context-menu event");

    // Prevent the Default context menu from showing up:
    evt.preventDefault();
    evt.returnValue = false;    
}
// "onmousedown" handler for Canvas
// - Draws small box, records X, Y position -
function MouseDownCanv(evt)
{
    evt = evt || window.event;
    //var elem = evt.target || event.SrcElement;

    // evt.x doesn't work on Firefox:
    //g_LastX = evt.x - g_Canvas.offsetLeft;
    //g_LastY = evt.y - g_Canvas.offsetTop;
    var coords = MouseEventToCanvasCoords(evt, g_Canvas);
    g_LastX = coords[0];
    g_LastY = coords[1];
    
    //console.log("Mouse down recvd, X = " + g_LastX);
    
    g_bMouseDown = true;
    g_Ctx.fillStyle = "blue";
    g_Ctx.fillRect(g_LastX - 2, g_LastY - 2, 3, 3);
}
// "onmouseup" handler for Canvas
// - Draws either a line from last X, Y, or draws a circle if no movement -
function MouseUpCanv(evt)
{
    evt = evt || window.event;
    if (g_bMouseDown)
    {
        var coords = MouseEventToCanvasCoords(evt, g_Canvas);
        var x2 = coords[0], y2 = coords[1];
        
        // Assemble random color string
        // as a # followed by 3 hex pairs: "#1A2B3C"
        var sColor = "#";
        for (i = 0; i < 3; i++)
            sColor += Math.floor((Math.random() * 256)).toString(16);
        
        //console.log("Color = " + sColor);

        // Draw either a line or circle depending on where the mouse button is released
        if (x2 == g_LastX && y2 == g_LastY)
        {
            // Circle if mouse start = mouse end
            g_Ctx.beginPath();
            g_Ctx.arc(x2, y2, 8, 0, Math.PI * 2);
            g_Ctx.fillStyle = sColor;
            g_Ctx.fill();
        } else {
            // Line if mouse start <> mouse end
            g_Ctx.beginPath();
            g_Ctx.lineWidth = "3";
            g_Ctx.strokeStyle = sColor;
            g_Ctx.moveTo(g_LastX, g_LastY);
            g_Ctx.lineTo(x2, y2);
            g_Ctx.stroke();
        }
        g_bMouseDown = false;
    }    
}
// Main function (runs after page is loaded)
function main()
{
    //console.log("HTML loaded");
    
    // Get Canvas element and Context
    g_Canvas = document.getElementById("myCanvas");
    if (!g_Canvas) return;
    g_Ctx = g_Canvas.getContext("2d");
    if (!g_Ctx) return;   
    
    // Add event handlers (The onevent="func()" attributes work incorrectly
    // in Firefox [event objects aren't passed])
    // Also, older IE versions might need .attachEvent()
    g_Canvas.addEventListener("mousedown", MouseDownCanv, false);
    g_Canvas.addEventListener("mouseup", MouseUpCanv, false);
    g_Canvas.addEventListener("contextmenu", OnCanvCtxMenu, false);
    
    // Example Drawing: Gradient:    
    var Grad = g_Ctx.createLinearGradient(0,0,0,60);
    if (Grad)
    {
        Grad.addColorStop(0, "red");
        Grad.addColorStop(1, "blue");
        g_Ctx.fillStyle = Grad;
    }
    g_Ctx.fillRect(0,0,419,60);
     
    // Example Drawing: Text
    g_Ctx.font = "30px serif";
    g_Ctx.fillStyle = "white";
    g_Ctx.textBaseline = "top";
    g_Ctx.fillText("HTML5 Canvas Drawing!", 50, 10);
    
    // Example Drawing: Circle, Line
    g_Ctx.beginPath();
    g_Ctx.arc(200, 100, 20, 0, Math.PI * 2);
    g_Ctx.fillStyle = "red";
    g_Ctx.fill();

    g_Ctx.beginPath();
    g_Ctx.lineWidth = "3";
    g_Ctx.strokeStyle = "green";
    g_Ctx.moveTo(185, 85);
    g_Ctx.lineTo(215, 115);
    g_Ctx.stroke();
    
    // End main [event handlers will continue to run]
}

window.onload = main;

_

edit: see >1st post for the 'standalone' ZIP file with these 2 files inside

Edited by Ascend4nt

Share this post


Link to post
Share on other sites
mLipok

Additional example is located here:

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-09-20

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • rm4453
      By rm4453
      I have a table I am parsing, to find specific vehicle information. I am unable to get _ArrayFindAll to return the only valid result with my test data.
      Below is a sample of the table's HTML:
      <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 DB</td> <td></td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">80,975</td> <td class="textRight" nowrap="nowrap">$16,800</td> </tr> <tr><!-- 308 --> <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 RG</td> <td></td> <td>BLACK</td> <td class="textCenter">R</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">5</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">95,224</td> <td class="textRight" nowrap="nowrap">$9,500</td> </tr> <tr><!-- 309 --> <td class="textCenter">2011</td> <td>BUICK</td> <td>REGAL</td> <td>CXL RL4</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">102,694</td> <td class="textRight" nowrap="nowrap">$5,000</td> </tr> <tr><!-- 310 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>AVALANCH 4X4 CR</td> <td>LS</td> <td>GRAY</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">64,759</td> <td class="textRight" nowrap="nowrap">$16,300</td> </tr> <tr><!-- 311 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>EQUINOX AWD 4C</td> <td>LT W/2LT</td> <td>BLACK</td> <td class="textCenter">S</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">91,896</td> <td class="textRight" nowrap="nowrap">$4,400</td> </tr> <tr><!-- 312 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>TAHOE 4X4 V8</td> <td>LTZ</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter">8</td> <td>C</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>N</td> <td class="textCenter">MR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">126,982</td> <td class="textRight" nowrap="nowrap">$17,800</td> </tr> <tr><!-- 313 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>GRAY</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">60,303</td> <td class="textRight" nowrap="nowrap">$18,100</td> </tr> <tr><!-- 314 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>SILVER</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">89,403</td> <td class="textRight" nowrap="nowrap">$15,900</td> </tr> <tr><!-- 315 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LTZ</td> <td>BLUE</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">53,087</td> <td class="textRight" nowrap="nowrap">$17,700</td> </tr> <tr><!-- 316 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>3500 CUTAWAY</td> <td>WORK VAN</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter"></td> <td></td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter"></td> <td>N</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">202,477</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 317 --> <td class="textCenter">2011</td> <td>CHRYSLER</td> <td>TOWN &amp; COUNTRY</td> <td>TOURING</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter"></td> <td class="textRight" nowrap="nowrap">198,541</td> <td class="textRight" nowrap="nowrap">$1,900</td> </tr> <tr><!-- 318 --> <td class="textCenter">2011</td> <td>DODGE</td> <td>DURANGO AWD V6</td> <td>CREW</td> <td>BLUE</td> <td class="textCenter">S</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">176,036</td> <td class="textRight" nowrap="nowrap">$2,800</td> </tr> <tr><!-- 319 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FOCUS</td> <td>SE</td> <td>SILVER</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">101,929</td> <td class="textRight" nowrap="nowrap">$3,100</td> </tr> <tr><!-- 320 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FUSION FWD 4C</td> <td>SEL</td> <td>WHITE</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">78,290</td> <td class="textRight" nowrap="nowrap">$5,500</td> </tr> <tr><!-- 321 --> <td class="textCenter">2011</td> <td>FORD</td> <td>F150 4X4 CR</td> <td>XLT</td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">70,909</td> <td class="textRight" nowrap="nowrap">$16,000</td> </tr> <tr><!-- 322 --> <td class="textCenter">2011</td> <td>FORD</td> <td>MUSTANG V6 CPE</td> <td>V6 PREMIUM</td> <td>BLACK</td> <td class="textCenter">2</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">92,531</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 323 --> <td class="textCenter">2011</td> <td>GMC</td> <td>ACADIA FWD</td> <td>SLE</td> <td>RED</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">79,199</td> <td class="textRight" nowrap="nowrap">$10,700</td> A picture of the table test data is attached here:

      Here is the _query function, and all other relevant code that I can share.
       
      Func _query($aSel, $aUrls) $oIE = _login() If $oIE = "Return" Then Return EndIf $j = 0 While $j < UBound($aSel) - 1 $i = 1 $aucID ;Unable To Share What This Is Other Than Var Name. _IENavigate($oIE, "Something" & $aucID[0] & "Something") _IELoadWait($oIE, 100, 2000) $oObj = _IETableGetCollection($oIE, 3) $cars = _IETableWriteToArray_ProgressBar($oObj, True, "Processing Requested Information!") ;<---- Modified Version See Post For It: https://www.autoitscript.com/forum/topic/195335-solved-how-to-add-a-progress-bar-to-_ietablewritetoarray/?tab=comments#comment-1400699 $carsYear = _filter($cars, 0, 0, GUICtrlRead($year)) $carsMake = _filter($carsYear, 0, 1, GUICtrlRead($make)) Global $carsModel = _filter($carsMake, 0, 2, GUICtrlRead($model)) $i = 0 $engine = GUICtrlRead($engine) If $engine <> "" Then While $i < StringLen($engine) $carsEngine = _filter($carsModel, 0, 6 + $i, StringLeft($engine, 1)) ;_ArrayDisplay($carsModel, "Cars Model Before Array Delete") $x = 1 While $x <= UBound($carsModel) _ArrayDelete($carsModel, $x) $x += 1 WEnd ;_ArrayDisplay($carsModel, "Cars Model After Array Delete") ;_ArrayConcatenate($carsModel, $carsEngine) ;_ArrayDisplay($carsModel, "Cars Model After Concatenate") $engine = StringTrimLeft($engine, 1) $i += 1 WEnd Else Dim $carsEngine[1][16] EndIf _ArrayConcatenate($carsEngine, $carsModel) _ArrayDisplay($carsEngine, "Cars Engine") Dim $carsDriveTrain[1][16] Dim $carsDriveTrain2[1][16] $driveTrainVal = GUICtrlRead($driveTrain) If $driveTrainVal = "4x4" Or $driveTrainVal = "awd" Then $carsDriveTrain = _filter($carsEngine, 0, 9, "4") $carsDriveTrain2 = _filter($carsEngine, 0, 9, "a") ;~ _ArrayDisplay($carsDriveTrain, "Drive Train Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train Error: " & @error) ;~ EndIf ;~ _ArrayDisplay($carsDriveTrain2, "Drive Train2 Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train 2 Error: " & @error) ;~ EndIf _ArrayConcatenate($carsDriveTrain, $carsDriveTrain2) _ArrayDisplay($carsDriveTrain, "Drive Train After Concat") ElseIf $driveTrainVal = "" Then _ArrayConcatenate($carsDriveTrain, $carsEngine) Else $carsDriveTrain = _filter($carsEngine, 0, 9, $driveTrain) EndIf Dim $carsOdom[1][16] $min = GUICtrlRead($odomMin) $max = GUICtrlRead($odomMax) For $i = 0 To UBound($carsDriveTrain) - 1 If $carsDriveTrain[$i][14] > $min And $carsDriveTrain[$i][14] < $max Then _ArrayAdd($carsOdom, $carsDriveTrain[$i]) MsgBox("", "", "ADDED!") EndIf Next _ArrayDisplay($carsOdom, "Cars Odom") $j += 1 WEnd _IEQuit($oIE) EndFunc ;==>_query Func _filter($tofilter, $xpos1, $ypos1, $str) ;~ If UBound($tofilter, 1) <= 1 Then ;~ $endx = 0 ;~ Else ;~ $endx = UBound($tofilter, 1) - 1 ;~ EndIf ;~ $cars = _ArrayFindAll($tofilter, $str, $tofilter[$xpos1][$ypos1], $tofilter[$endx][$ypos1], 0, 1, $ypos1, False) $cars = _ArrayFindAll($tofilter, $str, Default, Default, 0, 1, $ypos1) Dim $carsFiltered[1][16] = [["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"]] ;_ArrayDisplay($carsFiltered) $i = 0 $uBound = UBound($cars) - 1 While $i < $uBound $filtered = _ArrayExtract($tofilter, $cars[$i], $cars[$i], 0, 15) ;_ArrayDisplay($filtered, "_filter Array of Filtered") _ArrayConcatenate($carsFiltered, $filtered) $i += 1 WEnd _ArrayDelete($carsFiltered, 0) Return $carsFiltered EndFunc ;==>_filter  
      If you know of a more efficient way of doing this please let me know would be more than happy to chew down my inefficiency while learning! (It's like my grandpa used to say, "The only criticism I can't use is that which is not given to me.")
       
      The Item an I am using to test the filter is:

       
    • rm4453
      By rm4453
      Hello,
       
      I am currently writing a program that parses a massive table from a website, and need a way to add a progress bar while parsing.
      I am currently using the function _IETableWriteToArray($oObj, True) to parse the array. I need the progress bar to update as the table is parsed, not just at the end of the parsing.
      Any help at all would be very much appreciated!
       
      *EDIT --> The array I am left with after parsing is $array[0-50000][16]
    • SkysLastChance
      By SkysLastChance
      I have a goofy problem. I am hoping someone could shed some light. The example is not going around the text box. It is way off. 
      I have seen some post blaming IE 11, however I have IE11 on my desktop and it works fine.
      Is there anything I can do that might fix this? 
       
      ; Open a browser with the form example and get a reference to the form ; textarea element. Get the coordinates and dimensions of the text area, ; outline its shape with the mouse and come to rest in the center #include <IE.au3> Local $oIE = _IE_Example("form") Local $oForm = _IEFormGetObjByName($oIE, "ExampleForm") Local $oTextArea = _IEFormElementGetObjByName($oForm, "textareaExample") ; Get coordinates and dimensions of the textarea Local $iScreenX = _IEPropertyGet($oTextArea, "screenx") Local $iScreenY = _IEPropertyGet($oTextArea, "screeny") Local $iWidth = _IEPropertyGet($oTextArea, "width") Local $iHeight = _IEPropertyGet($oTextArea, "height") ; Outline the textarea with the mouse, come to rest in the center Local $iMousespeed = 50 MouseMove($iScreenX, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth, $iScreenY + $iHeight, $iMousespeed) MouseMove($iScreenX, $iScreenY + $iHeight, $iMousespeed) MouseMove($iScreenX, $iScreenY, $iMousespeed) MouseMove($iScreenX + $iWidth / 2, $iScreenY + $iHeight / 2, $iMousespeed)  
       
    • Rskm
      By Rskm
      Hi, for a script of mine, I wish to keep a time frame on till how the program will work.. basically, I want the program to read the date and if the read date < 'a particular date', the program continues, else it exit. I don't want to read the time from the computer as the program can be fooled by resetting the pc time. is there a way to read time from internet - so that the user cannot fool the program by date reset? thanks
    • SkysLastChance
      By SkysLastChance
      So I have two things I am trying to click.
      Policy which works.
      $oInputs3 = _IETagNameGetCollection($oIE, "div") For $oInput3 in $oInputs3 If StringStripWS($oInput3.innertext,1) = "Policy" Then $target = $oInput3 _IELoadWait($target,"",70000) ExitLoop EndIf Next _IEAction($target, "click")  

      And Add Insurance which I havent been able to get to work. 
      $oInputs2 = _IETagNameGetCollection($oIE, "div") For $oInput2 in $oInputs2 If StringStripWS($oInput2.innertext,1) = "Add Insurance" Then $target = $oInput2 _IELoadWait($target,"",70000) ExitLoop EndIf Next _IEAction($target, "click")

      Any Ideas on what I am doing wrong?  I feel like it might be the spaces between >  Add Insurance  < but I am not sure. 
×