Sign in to follow this  
Followers 0
ubelong2matt

Possible Send Bug

9 posts in this topic

#1 ·  Posted (edited)

I'm hoping someone can help me.  I have a script that grabs the source of an XML page, parses it using _XMLDomWrapper, writes to an INI, and compares that with preparation to use "send" commands to post to a Twitter account.  The problem is, when trying to send the title of the XML, message boxes display it correctly but the sent information omits the first character, posts second, then omits two more before posting the rest of it.
 
For instance, the title is stored in a variable and is displayed as when passing it to a message box:

#Phishing: Phishing: It Help Desk

However, when it is passed to the send command to be typed into a Twitter post, it turns into:

ishing: Phishing: It Help Desk

It sounds confusing so here's my code.  The XML file and INI file will generate automatically.  I would suggest, since that's a live feed of XML that you use the XML provided below and opt NOT to update the XML file when asked.  Also, each time you run the program, you'll want to delete the INI file so it actually runs the functions to send the information.
 
WARNING:  I am not good at coding.  I learn by example and most of the code I write is sloppy and could probably be done in vastly fewer lines of code and easier with different functions or techniques.  You have been warned that this will be ugly.
 
Script:

#include <_XMLDomWrapper.au3>
#include <Inet.au3>

Opt("SendKeyDelay", 10)

;==============================================
;     VARIABLES
;==============================================
Global $xmlFile = @ScriptDir & "\alerts.xml"
Global $alertINI = @ScriptDir & "\alert.ini"
;==============================================

If FileExists($xmlFile) Then
    Switch MsgBox(36,"File Exists","The XML file exists." & @CRLF & "Should it be deleted and a new one downloaded?")
        Case 6 ;yes
            FileDelete($xmlFile)
            _getXML()
            _parseXML()
            _iniCompare()
        Case 7 ;no
            _parseXML()
            _iniCompare()
    EndSwitch
Else
    _getXML()
    _parseXML()
    _iniCompare()
EndIf

;==============================================
;     FUNCTION _getXML
;==============================================
Func _getXML()
    Local $xmlSource = _INetGetSource('http://alerts.illinoisstate.edu/xml/',True)
    FileWrite($xmlFile,$xmlSource)
EndFunc
;==============================================

;==============================================
;     FUNCTION _parseXML
;==============================================
Func _parseXML()
    _XMLFileOpen($xmlFile, 'xmlns:isuoa="http://alerts.illinoisstate.edu/xml/oa.dtd"')

    Local $title = _XMLGetValue("//title")
    Global $alertTitle = "#" & $title[3]
    MsgBox(0,"test",$alertTitle)

    Global $alertLink = _XMLGetValue("//link")
    $alertLink = StringReplace($alertLink[3],"http://","")
    $alertLink = StringReplace($alertLink,"illinoisstate","ilstu")
    $alertLink = StringReplace($alertLink,"#_","")
    ;MsgBox(0,"test",$alertLink)

    Global $alertUpdate = _XMLGetValue("//isuoa:updatecount")
    $alertUpdate = $alertUpdate[1]
    ;MsgBox(0,"test",$alertUpdate)
EndFunc
;==============================================

;==============================================
;     FUNCTION _iniCompare
;==============================================
Func _iniCompare()
    If $alertTitle = IniRead($alertINI,"OPTS","Title",0) And $alertLink = IniRead($alertINI,"OPTS","Link",0) Then
        If $alertUpdate > 0 Then
            If $alertUpdate <> IniRead($alertINI,"OPTS","Update",0) Then
                ;_twitterLogin()
                _postUpdate()
            EndIf
        EndIf
    Else
        ;_twitterLogin()
        _postAlert()
    EndIf
EndFunc
;==============================================

;==============================================
;     FUNCTION _twitterLogin
;==============================================
Func _twitterLogin()
    ;MsgBox(0,"test","lets log into twitter")
    ShellExecute("http://twitter.com")
    Sleep(2000)
    Send("{ENTER}")
    Sleep(5000)
    Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}")
EndFunc
;==============================================

;==============================================
;     FUNCTION _postAlert
;==============================================
Func _postAlert()
    Sleep(2000)
    Send("{ASC 35}" & $alertTitle & @CRLF & $alertLink)
    ;Send($alertTitle & @CRLF & $alertLink)
    IniWrite($alertINI,"OPTS","Title",'"' & $alertTitle & '"')
    IniWrite($alertINI,"OPTS","Link",'"' & $alertLink & '"')
    IniWrite($alertINI,"OPTS","Update",$alertUpdate)
    Sleep(2000)
    ;MsgBox(0,"test",$alertTitle & @CRLF & $alertLink)
EndFunc
;==============================================

;==============================================
;     FUNCTION _postUpdate
;==============================================
Func _postUpdate()
    Sleep(2000)
    Send("[UPDATE] {ASC 35}" & $alertTitle & @CRLF & $alertLink)
    ;Send("[UPDATE] " & $alertTitle & @CRLF & $alertLink)
    IniWrite($alertINI,"OPTS","Update",$alertUpdate) ;make this last
    Sleep(2000)
    ;MsgBox(0,"test",$alertTitle & @CRLF & $alertLink)
EndFunc

;==============================================

XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:isuoa="http://alerts.illinoisstate.edu/xml/oa.dtd" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Tech Alerts at Illinois State University</title>
        <link>http://alerts.illinoisstate.edu/</link>
        <description>Technology Alerts that affect Illinois State University</description>
        <language>en-us</language>
        <copyright>Copyright 2013, Illinois State University</copyright>
        <webMaster>alerts@illinoisstate.edu (Tech Alerts at Illinois State)</webMaster>
        <atom:link href="http://alerts.illinoisstate.edu/xml/" rel="self" type="application/rss+xml" />
        <image>
            <url>https://alerts.illinoisstate.edu/templates/images/rss-logo.png</url>
            <title>Tech Alerts at Illinois State University</title>
            <link>http://alerts.illinoisstate.edu/</link>
            <description>Tech Alerts</description>
            <width>102</width>
            <height>102</height>
        </image>
        <item>
            <title>Phishing: Phishing: It Help Desk</title>
            <link>http://alerts.illinoisstate.edu/#_2614</link>
            <description><![CDATA[<p>The following phishing email has been reported to the Help Desk. This email was not sent by Illinois State University.</p>
<p><span style="color: rgb(255, 0, 0); font-weight: 700;">Important:</span> If you clicked the link in this email and &quot;logged in&quot; with your ULID and password, you should change your password and security question immediately.</p>
<p>For more information, refer to <a href="http://helpdesk.illinoisstate.edu/kb/1364/">[1364] How to recognize phishing emails targeting Illinois State University</a>.</p><blockquote><p>Your mailbox is almost full.</p><p>465MB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500MB</p><p>Current size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maximum size</p><p>Please increase your mailbox quota size automatically by clicking HERE&lt;http://valmessage.jigsy.com/&gt; and fill-out the necessary requirements to automatically increase your mailbox quota size.</p><p>IMPORTANT NOTE: You won&#39;t be able to send and receive mail messages at 480MB .</p><p>ITS help desk</p><p>ADMIN TEAM</p><p>=A9Copyright 2013 Microsoft</p></blockquote>]]></description>
            <pubDate>Tue, 22 Oct 2013 12:15:00 -0500</pubDate>
            <category>Active</category>
            <isuoa:updatecount>0</isuoa:updatecount>
            <author>alerts@illinoisstate.edu (Tech Alerts at Illinois State)</author>
            <guid isPermaLink="true">http://alerts.illinoisstate.edu/archive/2614/</guid>
        </item>
        <item>
            <title>Network: Network Maintenance</title>
            <link>http://alerts.illinoisstate.edu/#_2343</link>
            <description><![CDATA[<p><span style="color: rgb(0, 0, 0); font-family: Tahoma, sans-serif; ">Telecommunications &amp; Networking have scheduled network maintenance for this date. More details will be posted as they become available.</span></p>]]></description>
            <pubDate>Sun, 17 Nov 2013 00:00:00 -0600</pubDate>
            <category>Upcoming</category>
            <isuoa:updatecount></isuoa:updatecount>
            <author>alerts@illinoisstate.edu (Tech Alerts at Illinois State)</author>
            <guid isPermaLink="true">http://alerts.illinoisstate.edu/archive/2343</guid>
        </item>
    </channel>
</rss>
I scoured the internet and these forums/site for anything that could explain what it's doing.  If this is a stupid question/problem all I ask is that you go easy on me and forgive my ignorance.
 
Thank you for your time,
Matt
Edited by ubelong2matt

Share this post


Link to post
Share on other sites



Would like to help you but got this when I tried to download the dependency:

 

403. That’s an error.

Your client does not have permission to get URL /files/_XMLDomWrapper.au3 from this server. (Client IP address: 220.xxx.xxx.xxx)

You are attempting to perform an activity that you have insufficient permissions for. If you feel this is in error, please contact the project administrator. That’s all we know.

 

Share this post


Link to post
Share on other sites

Would like to help you but got this when I tried to download the dependency:

 

Hmm, not sure what dependency you're talking about.  If it's the XML file, I said not to use it since it changes.  This script works fine unless the word starts with a PH (for phishing).  There are system and network alerts also.  I've only tested it with system, aside from phishing, and it works fine with that.  You shouldn't use the XML download (say no when prompted).  I provided the XML to test with since, in this particular incident, the bug exists in it.

 

Help file -> "When using 2 digit ASCII codes you must use a leading 0"

 

The ASCII code was added as a "work-around" attempt for this problem.  I thought the use of the hash tag may have been the problem.  Before that, I was using +3 to issue a hash tag.  I also tried slowing down the send speed but it didn't work or I need to slow it down further.

After more testing, I noticed that there is rectangle window that appears, for a split second, over SciTE which I think is the culprit.  It has nothing in it that I can read and doesn't appear long enough to even screen shot.  However, I think it's causing the problem.  I will try to find out what it is.

Thanks for the help so far, guys!

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Ok I get you now.

Try sending the # raw.

Send("#", 1)

EDIT:

Or the whole string as raw, else autoit sees #p as Windows key + p

 

John, you're wonderful.  Thank you so much.  That worked!!!!  I owe you a beer.

EDIT

The window I saw, shape and all, WAS Windows+p.  So simply.  Awesome catch!!!!

Edited by ubelong2matt

Share this post


Link to post
Share on other sites

wrong dependency, i'm talking about

_XMLDomWrapper.au3

Share this post


Link to post
Share on other sites

Oh.  Grunty, you can just search the web for the AutoIt _XMLDomWrapper.au3 include.  I would post it here but it won't be updated as newer versions get created (possible).

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
Sign in to follow this  
Followers 0

  • Similar Content

    • ur
      By ur
      If you observe in below code.
      Func _WinWaitActivate($title,$text,$timeout=$time_out) Logging("Waiting for "&$title&":"&$text) $dHandle = WinWait($title,$text,$timeout) if not ($dHandle = 0) then If Not WinActive($title,$text) Then WinActivate($title,$text) WinWaitActive($title,$text,$timeout) Else Logging("Timeout occured while waiting for the window...") Exit EndIf EndFunc WinActivate("Untitled - Notepad") $p = "Notallowed1!!" Send("{ENTER}{ENTER}{ENTER}{ENTER}"& $p &"{ENTER}create{SPACE}database{SPACE}"& $p &";{ENTER}") In the notepad if you observe, ! is missing in the text got.
       
      Is there way to get that also printed.
    • rawkhopper
      By rawkhopper
      Hello everyone,
      I have a script that is automating a piece of sluggish software.  I want to automate it with a bit of caution and I am not sure the best way to do it.  ControlSend works great most of the time.  If I have it enter 10 into a text box every once in a while it will enter 1 or 11 and then hit enter.
      To overcome this I use MouseClick to select the text I just entered and then see if it matches the string it was supposed to put in before it hits enter.  This seems to work but what I love about ControlSend is there is less room for human interaction messing it up.  
      Yes I could block input but I prefer not to do that (permissions).
      Is there a better way of doing this?  Any Help would be much appreciated.
      Anyway here is the snippet of the script in question:
      Func KVSend () WinActivate ( "Window", "" ) Local $WindowPos = WinGetPos("Window", "") If $kV < 30 Then WinActivate ( "Window", "" ) ControlClick ("Window", "", 1001) ;Click in Accel Voltage box Sleep (100) ControlSend ("Window", "", 1001, $kV) ; \ kV Sleep (100) MouseMove($WindowPos[0]+130,$WindowPos[1]+75,1) MouseClick($MOUSE_CLICK_LEFT) MouseClick($MOUSE_CLICK_LEFT) Send ("^c") Local $clip = ClipGet () If $clip = $kV Then ControlSend ("Window", "", 1001, "{ENTER}") ;Hit ENTER if value is correct Sleep (100) ControlClick ("Window", "", 1518) ;Lens Clear Else Send ("{BACKSPACE}") KVSend() ; If value is incorrect try again EndIf EndIf  
    • spuuunit
      By spuuunit
      This is what I'm trying to do: In Firefox, if you hold down CTRL + C for about 200ms, then press CTRL + T. This is my code:
      While WinActive(" - Mozilla Firefox") If _IsPressed("A2", $hDLL) And _IsPressed("43", $hDLL) Then $timer = TimerInit() While _IsPressed("A2", $hDLL) And _IsPressed("43", $hDLL) Sleep(10) $diff = TimerDiff($timer) If $diff > 200 Then Send("^{T}") While _IsPressed("A2", $hDLL) And _IsPressed("43", $hDLL) Sleep(10) WEnd EndIf WEnd EndIf WEnd The problem is that the CTRL key gets stuck down after Send("^{T}"). I found this, but what I understand that happens when I release, and that is not what I want. The "General unstuck method" did nothing.
    • Baboo85
      By Baboo85
      Hi all,
      I need to start a script that include:
      - admin privileges
      - multiple cmd commands
      - no bat, no exe, no tmp files created anywhere (especially in the user temp folder)
      In a bat file it would be simple, but users shouldn't see what commands I'm sending.
      Example of the script:
      echo off cls echo. echo I AM A TOOL echo. echo NOTE: echo - note 1 echo - note 2 echo - etc set USER1=0 set COMPUTER1=0 if /i %username% equ user.user ( set USER1=1 set COMPUTER1=1 ) if /i %username% equ another.user set USER1=1 if /i %computername% equ notebook set COMPUTER1=1 if %USER1% EQU 1 ( if %COMPUTER1% EQU 1 ( reg delete "HKLM\SOFTWARE\blablabla" /f ) else ( echo Computer not authorized. Contact assistance.) ) else ( echo User not authorized. Contact assistance.) echo. pause exit With the send("") is a disaster.
      I'm a noob here, so what can I do?
       
      EDIT: OR ELSE I explain the situation and what I need, so if there is a simple solution I can use that.
       
      SITUATION: our domain users have Users rights on the machine. Some of them need administrator rights.
      We create a local user with administrator rights, so that the users must insert username and password when asked to run something with administrator rights.
      We have an internal domain group policy that blocks EXE, BAT, COM, TMP files from the user local temp directory, for a security reason (malware). That also blocks most software installation.
      But some users are often out of office, away from workplace and in another country, they need a complete control on their computers.
       
      WHAT I NEED: I need to check the username and the computer name. If the username is the one with local administrator rights and the computer name is a computer that is qualified to temporary remove the policy, then I need to execute a REG DELETE command with administrator rights.
       
      I hope I explained myself.
       
      Thank you very much.
    • Simpel
      By Simpel
      Hi. I'm trying to write a xml. Here is my code:
      #include <_XMLDomWrapper.au3> #include <Date.au3> Global $g_sXMLFileName Global $g_sDestPath = @DesktopDir & "\" Global $g_sReturnedBID = "A10829" _makeXML() _AddXML(1, "A10829_Thomas/wav/T001.wav") _AddXML(2, "A10829_Thomas/wav/T002.wav") Exit Func _makeXML() Local $sXMLtime = StringReplace(StringReplace(StringReplace(_NowCalc()," ","_"),":","-"),"/","-") ; in yyyy-mm-dd_hh-mm-ss $g_sXMLFileName = $g_sDestPath & $g_sReturnedBID & "_" & "EB-Ton-Upload" & "_" & $sXMLtime & ".xml" _XMLCreateFile($g_sXMLFileName, "gemagvl", 1,1) _XMLFileOpen($g_sXMLFileName) EndFunc Func _AddXML($iCount, $sDateiname) _XMLCreateRootNodeWAttr("row", "count", $iCount, "") _XMLCreateChildNode("//row", "picklistenname", $g_sReturnedBID & "_EB-Ton-Upload") _XMLCreateChildNode("//row", "picklisteninfo") _XMLCreateChildNode("//row", "bid", $g_sReturnedBID) _XMLCreateChildNode("//row", "audiodateiname", $sDateiname) _XMLCreateChildNode("//row", "titel", StringTrimRight(StringTrimLeft($sDateiname, 7), 4)) _XMLCreateChildNode("//row", "interpret", "EB") _XMLCreateChildNode("//row", "quelle", "Ton") EndFunc It returns:
      <?xml version="1.0" encoding="UTF-8"?><gemagvl> <row count="1"> <picklistenname>A10829_EB-Ton-Upload</picklistenname> <picklisteninfo/> <bid>A10829</bid> <audiodateiname>A10829_Thomas/wav/T001.wav</audiodateiname> <titel>Thomas/wav/T002</titel> <interpret>EB</interpret> <quelle>Ton</quelle> <picklistenname>A10829_EB-Ton-Upload</picklistenname> <picklisteninfo/> <bid>A10829</bid> <audiodateiname>A10829_Thomas/wav/T002.wav</audiodateiname> <titel>Thomas/wav/T003</titel> <interpret>EB</interpret> <quelle>Ton</quelle> </row> <row count="2"> <picklistenname>A10829_EB-Ton-Upload</picklistenname> <picklisteninfo/> <bid>A10829</bid> <audiodateiname>A10829_Thomas/wav/T002.wav</audiodateiname> <titel>Thomas/wav/T003</titel> <interpret>EB</interpret> <quelle>Ton</quelle> </row> </gemagvl> But it should return:
      <?xml version="1.0" encoding="UTF-8"?><gemagvl> <row count="1"> <picklistenname>A10829_EB-Ton-Upload</picklistenname> <picklisteninfo/> <bid>A10829</bid> <audiodateiname>A10829_Thomas/wav/T001.wav</audiodateiname> <titel>Thomas/wav/T002</titel> <interpret>EB</interpret> <quelle>Ton</quelle> </row> <row count="2"> <picklistenname>A10829_EB-Ton-Upload</picklistenname> <picklisteninfo/> <bid>A10829</bid> <audiodateiname>A10829_Thomas/wav/T002.wav</audiodateiname> <titel>Thomas/wav/T003</titel> <interpret>EB</interpret> <quelle>Ton</quelle> </row> </gemagvl> The second inserted nodes are double. How will it be going right?
      Regards, Conrad