thedavepower

AutoIt Consulting?

14 posts in this topic

I was referred to AutoIt as a possible solution to a problem I am working on.  Unfortunately I don't have the time to learn AutoIt in order to get this task done and I am willing to hire someone who can building the following for me.  I would be grateful for any references/advice.

Here is what I am looking for:

Overview: In Outlook 365 web mail I want to reply to customer emails by simply clicking a button.  We currently have have 7 generic responses we use based on the customer query.

Operation: 

1.   Webmail client is open

2.   AutoIt dialog box with 7 buttons is open.  The buttons have the short description of the reply as the title.

3.   User selects and reads email to determine appropriate response in webmail

4.   User clicks 1 of 7 buttons in dialog box

5.   AutoIt sets focus on webmail screen.

6.   AutoIt sends the 'r' key (the shortcut key to reply to an email)

7.   AutoIt sends the appropriate text

8.   AutoIt sends the 'alt-s' key (the shortcut key to send)

Thoughts?

Share this post


Link to post
Share on other sites



Payment I'm advance?

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

I was referred to AutoIt as a possible solution to a problem I am working on.  Unfortunately I don't have the time to learn AutoIt in order to get this task done and I am willing to hire someone who can building the following for me.  I would be grateful for any references/advice.

Here is what I am looking for:

Overview: In Outlook 365 web mail I want to reply to customer emails by simply clicking a button.  We currently have have 7 generic responses we use based on the customer query.

Operation: 

1.   Webmail client is open

2.   AutoIt dialog box with 7 buttons is open.  The buttons have the short description of the reply as the title.

3.   User selects and reads email to determine appropriate response in webmail

4.   User clicks 1 of 7 buttons in dialog box

5.   AutoIt sets focus on webmail screen.

6.   AutoIt sends the 'r' key (the shortcut key to reply to an email)

7.   AutoIt sends the appropriate text

8.   AutoIt sends the 'alt-s' key (the shortcut key to send)

Thoughts?

 

This seems simple enough but I would imagine whoever would be coding for you would need access to either your production environment for testing or at the very least a lab environment set up to mimic what your production environment would be like. Is that something you're able to provide?

How urgent is this? How much are you willing to spend? What would be the terms etc?

I would recommend staying away from any users who have low post counts as it could be problematic (i.e. higher chances of getting scammed).

Lastly, I would, in your position, contact AutoIt staff directly to see if they could do it or if they have any developers they could recommend who could do this work professionally for you.

If you don't mind working with a fairly experienced third-party hobby developer (such as me) you can reach me at <redacted to prevent spam>. I have some further questions regarding this project.

Edited by mpower

Share this post


Link to post
Share on other sites

I think that this is quite simple task and many helpful people here on the forum will help you with this for free.

Also I'm not sure if hiring of coders here this way is not against forum rules, main idea of this forum is to give/get help and share ideas/code ...

Share this post


Link to post
Share on other sites

This is Seriously Trivial to write, at least in its very basic form. Like within the hour easy.

Even if you wanted to, for instance, make the number of buttons dynamic, based on the number of template e-mails in the same directory of your script, so that anyone could have his own set of response templates just by having his own textfiles. (Just ideas.)

I'd write an example just to keep you from getting scammed, but I'm late for work. Are you sure you don't want to learn this yourself and/or that you have a novice programmer in your midst that can do this?


Roses are FF0000, violets are 0000FF... All my base are belong to you.

Share this post


Link to post
Share on other sites

Thank you very much for the responses guys in answer to the posts:

Rockerfeller - Depending on the cost estimate and user post count I would have no problem paying up front.

mpower - Email sent

Zedna - How would I confirm the forum rules?

SadBunny - I can wait for you to get back from work; I would be eternally grateful! (:  I would like to learn it, just don't have the time.  I will, however, be using AutoIt now that I know what it is!

 

Thanks guys,

Dave

Share this post


Link to post
Share on other sites

Zedna - How would I confirm the forum rules?

 

http://www.autoitscript.com/forum/forum-2/announcement-15-forum-rules-23-mar-2015/

'?do=embed' frameborder='0' data-embedContent>>

It seems that this is not explicitly mentioned in forum rules but it was discused here ...

Just hint for you:

Make your GUI with 7 buttons with "always on top" style.

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

This project would be a doddle if you were using IE, not so much if other browser.

save yourself / company the money and spend a few hours looking at and trying the IE examples in the help file.

Show a little bit of effort, post your attempt, and that script will be done within a few hours most likely.

For free.

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

#9 ·  Posted (edited)

I agree with what other users have said here, if this is going to go into a corporate production environment with multiple disparate systems I would not rely on things like key presses etc, but would rather use UDFs to interact directly with IE or whatever browser you're using for OWA. 

Depending on the urgency of the project I would look into spending some time learning AutoIt (it's not overy complex if you have any coding experience - even if you don't, its relatively easy to pick up). 

I'd be hesitant to use quickly put together solutions within a corporate environment though, just simply due to the nature of business processes/compliance etc. 

Also as others mentioned, we can provide some examples to guide you, but that could be problematic if we can't simulate your OWA environment (For example I dont have access to Office 365 OWA so I would not be able to contribute aside from maybe GUI and other features). 

Edited by mpower

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

Are you going to be able to determine the option based upon something in the email. Meaning agent looks at email, then clicks the button?

If that is the case, might be easier for you to just create a hotkey for each button - like CTRL SHIFT F1-F7, you have to check which one works with your apps, as some apps also have hot keys.

Then create 7 variables and add your blurb for the agent to pick from

Then use send(), but not the normal send, but the extended one, to send the variable based upon the hotkey pressed

maybe something like this:

#include <Misc.au3>

Global $aVariable[8]

$aVariable[1] = 'blurb 1' ; change this to the text you want for your button nubmer 1
$aVariable[2] = 'blurb 2' ; change this to the text you want for your button nubmer 2
$aVariable[3] = 'blurb 3' ; change this to the text you want for your button nubmer 3
$aVariable[4] = 'blurb 4' ; change this to the text you want for your button nubmer 4
$aVariable[5] = 'blurb 5' ; change this to the text you want for your button nubmer 5
$aVariable[6] = 'blurb 6' ; change this to the text you want for your button nubmer 6
$aVariable[7] = 'blurb 7' ; change this to the text you want for your button nubmer 7

HotKeySet('^+' & '{F1}', 'Blurb')
HotKeySet('^+' & '{F2}', 'Blurb')
HotKeySet('^+' & '{F3}', 'Blurb')
HotKeySet('^+' & '{F4}', 'Blurb')
HotKeySet('^+' & '{F5}', 'Blurb')
HotKeySet('^+' & '{F6}', 'Blurb')
HotKeySet('^+' & '{F7}', 'Blurb')


While 1
    Sleep(20)
WEnd


Func Blurb()
    Local $Index = StringRight(@HotKeyPressed, 1)
    For $x = 1 To 7
        If StringInStr(@HotKeyPressed, 'f' & $x) Then
            MsgBox('', 'hotkey ' & @HotKeyPressed, '') ; you can remove this after testing
            Run('notepad.exe')  ; you can remove this after testing
            Sleep(300)
            _SendEx($aVariable[$x])
                        Sleep(400)
                        ; you can then add the send command
                        _SendEx('!s') ; to send the email - but the agent would have to have the email opened before this happens
        EndIf
    Next

EndFunc   ;==>Blurb

Func _SendEx($ss, $warn = "")
    Local $iT = TimerInit()
    While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12")

        If $warn <> "" And TimerDiff($iT) > 1000 Then
            MsgBox(262144, "Warning", $warn)
        EndIf
        Sleep(50)
    WEnd
    Send($ss)
EndFunc   ;==>_SendEx

.

Edited by nitekram

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites

#11 ·  Posted (edited)

thedavepower,  here's something to get you started.

This script has the following features:

  • Updatecheck function - checks for a new version of the script via an ini file that can be located on a remote server (at this stage it needs to be a network drive, but I'm sure someone can re-purpose it to contact a web server if necessary, I code for a corporate environment so I usually just point my apps to a network drive that all users have access to)
  • Autoupdate - automatically downloads the new version of the script and updates the app
  • Dynamic button creation based on ini file content

What I can't assist with is OWA interaction because I dont have access to an Office365 OWA interface.

#Region ### includes ###
#include-once
#NoTrayIcon
#AutoIt3Wrapper_Res_File_Add=resources.zip, rt_rcdata, resourceszip
#AutoIt3Wrapper_Icon=OWA_Responder.ico
#AutoIt3Wrapper_Outfile=OWA_Responder.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>
#include <File.au3>
#include <Zip.au3>
Opt('GUIResizeMode', 802)
#EndRegion ### includes ###

#Region ### global vars ###
Global $appname = 'OWA Responder', $appver = '1.0', $maingui_W = 705, $maingui_H = 135, $alreadyrunningui_W = 420, $alreadyrunningui_H = 160, _
       $appresourcesdir = @AppDataDir & '\OWA Responder\', $updateresources, $inifile = $appresourcesdir & 'settings.ini', $msgdataver, _
       $msgdatafile = $appresourcesdir & 'msgdata.ini', $criticalupdate
Dim $buttons[1][2]
#EndRegion ### global vars ###

IniCheck()
ResourcesCheck()

#Region ### $alreadyrunningui ###
$alreadyrunningui = GUICreate($appname & ' ' & $appver, $alreadyrunningui_W, $alreadyrunningui_H, -1, -1)
GUICtrlCreateLabel('Sorry, ' & $appname & ' appears to be running already.' & @CRLF & _
                              @CRLF & 'Please close the existing instance before trying again, thanks.', 10, 45, $alreadyrunningui_W - 20, 63, $SS_CENTER)
GUICtrlSetFont(-1, 11, 400, -1)
$alreadyrunning_okay = GUICtrlCreateButton('Ok', (($alreadyrunningui_W/2) - (100/2)), 120, 100)
#EndRegion ### $alreadyrunningui ###

#Region ### $maingui ###
$maingui = GUICreate($appname & ' ' & $appver, $maingui_W, $maingui_H, -1, -1,  BitOR($WS_SYSMENU, $WS_MINIMIZEBOX), $WS_EX_TOPMOST)
#EndRegion ### $maingui ###

#Region ### $updategui ###
$updategui = GUICreate($appname & ' ' & $appver & ' - Update Available', 420, 260, -1, -1)
GUISetBkColor(0xFFFFFF)
$updategui_lbl1 = GUICtrlCreateLabel('A new Update is available:', 24, 24, 130, 17)
$updategui_lblver = GUICtrlCreateLabel('', 154, 22, 55, 20)
GUICtrlSetFont(-1, 10, 800, 0, 'MS Sans Serif')
GUICtrlSetColor(-1, 0x000000)
$updategui_lbl2 = GUICtrlCreateLabel('Size:', 208, 24, 27, 17)
$updategui_lblsize = GUICtrlCreateLabel('', 233, 24, 83, 17)
$updategui_pic1 = GUICtrlCreatePic($appresourcesdir & 'app_update.bmp', 330, 5, 64, 64)
$updategui_lbl3 = GUICtrlCreateLabel('Change log:', 24, 56, 61, 17)
$updategui_edit = GUICtrlCreateEdit('', 24, 72, 377, 121, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL, $ES_READONLY))
GUICtrlSetBkColor(-1, 0xFFFFFF)
$updategui_lblcrit = GUICtrlCreateLabel('THIS IS A MANDATORY UPDATE AND CANNOT BE SKIPPED!', 32, 202, 363, 17)
GUICtrlSetFont(-1, 9, 800, 0, 'MS Sans Serif')
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetState(-1, $GUI_HIDE)
$updategui_bnupdate = GUICtrlCreateButton('Update now', 80, 224, 123, 25)
$updategui_bnskip = GUICtrlCreateButton('Skip', 222, 224, 123, 25)
#EndRegion ### $updategui ###

#Region ### Single Instance Check and Main function (AppUpdateCheck()) start ###
;check if app already running or not and throw a message if it is, otherwise continue and check for app update
If _Singleton("owaresponder", 1) = 0 Then
    GUISetState(@SW_SHOW, $alreadyrunningui)
Else
    AppUpdateCheck()
EndIf
#EndRegion ### Single Instance Check and Main function (AppUpdateCheck()) start ###

;listen for gui messages and act accordingly
While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
        Case $alreadyrunningui
            Switch $msg[0]
                Case $GUI_EVENT_CLOSE, $alreadyrunning_okay
                    Exit
            EndSwitch
        Case $maingui
            Switch $msg[0]
                Case $GUI_EVENT_CLOSE
                    Exit
                Case $buttons[1][0] to $buttons[Ubound($buttons)-1][0]
                    For $i = 0 To Ubound($buttons) - 1
                        If $buttons[$i][0] = $msg[0] Then SendOWAMessage($buttons[$i][1])
                    Next
            EndSwitch
        Case $updategui
            Switch $msg[0]
                Case $GUI_EVENT_CLOSE
                    If $criticalupdate = 'False' Then
                        $msgbox = MsgBox(48+3,$appname & ' ' & $appver, 'Closing this window will cancel the update process.' & @CRLF & @CRLF & 'Do you want to skip the update?')
                        If $msgbox = 6 Then
                            GUISetState(@SW_HIDE, $updategui)
                            UpdateMessageData()
                        EndIf
                    ElseIf $criticalupdate = 'True' Then
                        $msgbox = MsgBox(48+3,$appname & ' ' & $appver, 'Closing this window will cancel the update process.' & @CRLF & @CRLF & _
                                     'Because this is a mandatory update, cancelling the update process will exit the application.' & @CRLF & @CRLF & _
                                     'Do you want to cancel the update and exit the application?')
                        If $msgbox = 6 Then Exit
                    EndIf
                Case $updategui_bnupdate
                    ShellExecute($appresourcesdir & 'autoupdate.exe')
                    Exit
                Case $updategui_bnskip
                    $msgbox = MsgBox(48+3,$appname & ' ' & $appver, 'Updates are recommended as they contain bug fixes and new features.' & @CRLF & @CRLF & _
                                    'Are you sure you want to skip the update?')
                    If $msgbox = 6 Then
                        GUISetState(@SW_HIDE, $updategui)
                        UpdateMessageData()
                    EndIf
            EndSwitch
    EndSwitch
WEnd

Func IniCheck()
    If FileExists($appresourcesdir) <> 1 Then DirCreate($appresourcesdir)                                                   ;Check if Resources Directory exists, if it doesnt, create it
    If FileExists($inifile) <> 1 Then                                                                                       ;Check if Ini File exists, if it doesnt, create it and populate with default data
        $iFile = FileOpen($inifile, 2)                                                                                      ;open file to write it
        FileWrite($iFile, '[Options]' & @CRLF & 'UpdateResources=True' & _                                                  ;write base ini file
                 @CRLF & 'AppDir=' & @ScriptDir & @CRLF & 'AppExe=' & @ScriptName & @CRLF & 'AppVer=' & $appver)
        FileClose($iFile)                                                                                                   ;close it to finish creating the file
        $iFile = FileOpen($msgdatafile, 2)
        ConsoleWrite($iFile)
        FileWrite($iFile, '[Options]' & @CRLF & 'Version=1.0' & @CRLF & '[Messages]' & @CRLF & 'Total=7' & @CRLF & '[Message1]' & @CRLF & 'Name=Short name for Message 1' & @CRLF & _
                 'Content=Dear customer,/nn/nnThis is Message 1 content that will go in the body of the email.'& @CRLF & '[Message2]' & @CRLF & _
                 'Name=Short name for Message 2' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 2 content that will go in the body of the email.' & _
                 @CRLF & '[Message3]' & @CRLF & 'Name=Short name for Message 3' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 3 content that will go in the body of the email.' & _
                 @CRLF & '[Message4]' & @CRLF & 'Name=Short name for Message 4' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 4 content that will go in the body of the email.' & _
                 @CRLF & '[Message5]' & @CRLF & 'Name=Short name for Message 5' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 5 content that will go in the body of the email.' & _
                 @CRLF & '[Message6]' & @CRLF & 'Name=Short name for Message 6' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 6 content that will go in the body of the email.' & _
                 @CRLF & '[Message7]' & @CRLF & 'Name=Short name for Message 7' & @CRLF & 'Content=Dear customer,/nn/nnThis is Message 7 content that will go in the body of the email.')
        FileClose($iFile)
    Else
        IniWrite($inifile, 'Options', 'AppDir', @ScriptDir)                                                                 ;update the ini with current app directory
        IniWrite($inifile, 'Options', 'AppVer', $appver)
    EndIf
    $updateresources = IniRead($inifile, 'Options', 'UpdateResources', 'True')
    $msgdataver = IniRead($msgdatafile, 'Options', 'Version', '1.0')
EndFunc ;==> IniCheck()

Func ResourcesCheck()
    ;cehck if app resources are installed in AppData/Appname directory, if not, install it (this function will also update resources - but will always keep settings and msgdata ini files)
    If $updateresources = 'True' Then
        $sFilesToDelete = _FileListToArray($appresourcesdir)
        If IsArray($sFilesToDelete) Then
            For $i = 1 To UBound($sFilesToDelete) - 1
                If BitAND(Not StringInStr($sFilesToDelete[$i], "settings."), Not StringInStr($sFilesToDelete[$i], "msgdata."))  Then
                    If StringInStr(FileGetAttrib($appresourcesdir & $sFilesToDelete[$i]), 'R') Then FileSetAttrib($appresourcesdir & $sFilesToDelete[$i], '-R')
                    FileDelete($appresourcesdir & $sFilesToDelete[$i])
                EndIf
            Next
        EndIf
        FileInstall('resources.zip', $appresourcesdir & 'resources.zip')
        _Zip_UnzipAll($appresourcesdir & 'resources.zip', $appresourcesdir)
        IniWrite($inifile, 'Options', 'UpdateResources', 'False')
        FileDelete($appresourcesdir & 'resources.zip')
    EndIf
EndFunc ;==> ResourcesCheck()

Func AppUpdateCheck()
    ;check if a new app is available from server
    Local $updateini, $changelog, $fileLinkApp, $currentver, $criticalupdate, $downloadFileSizeApp, $newFeatures

    $updateini = '<PATH TO UPDATE INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'
    $changelog = '<PATH TO CHANGELOG TXT FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'
    $fileLinkApp = '<PATH TO UPDATE ZIP FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'

    If $updateini <> '<PATH TO UPDATE INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>' Then
        $currentver = IniRead($updateini, 'Update', 'AppVersion', $appver)
        $criticalupdate = IniRead($updateini, 'Update', 'Critical', 'False')
        $downloadFileSizeApp = FileGetSize($fileLinkApp)
        $iFile = FileOpen($changelog)
        $newFeatures = FileRead($iFile)
        FileClose($changelog)

        If $currentver > $appver Then
            GUICtrlSetData($updategui_lblver, $currentver)
            GUICtrlSetData($updategui_edit, $newFeatures)
            GUICtrlSetData($updategui_lblsize, Round($downloadFileSizeApp/1024/1024, 1) & " MB")
            If $criticalupdate = "True" Then
                GUICtrlSetState($updategui_lblcrit, $GUI_SHOW)
                GUICtrlSetState($updategui_bnskip, $GUI_DISABLE)
            ElseIf $criticalupdate = "False" Then
                GUICtrlSetState($updategui_lblcrit, $GUI_HIDE)
                GUICtrlSetState($updategui_bnskip, $GUI_ENABLE)
            EndIf
            GUISetState(@SW_SHOW, $updategui)
        Else
            UpdateMessageData()
        EndIf
    Else
        MsgBox(0, 'Message', 'Path to App update ini is not set yet, remember to set this!')
        UpdateMessageData()
    EndIf
EndFunc ;==> AppUpdateCheck()

Func UpdateMessageData()
    ;cehck if a new messagedata file is available from server
    Local $updateini, $currentver, $fileLinkMsgData

    $updateini = '<PATH TO MESSAGE DATA INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'

    If $updateini <> '<PATH TO MESSAGE DATA INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>' Then
        $currentver = IniRead($updateini, 'Options', 'Version', $currentver)
        If $currentver > $msgdataver Then
            FileCopy($updateini, $appresourcesdir, 1)
            $msgdataver = IniRead($msgdatafile, 'Options', 'Version', '1.0')
            Msgbox(48, 'Messages Update', 'Messages have been updated to version ' * $msgdataver)
        EndIf
    Else
        MsgBox(0, 'Message', 'Path to MsgData update ini is not set yet, remember to set this!')
    EndIf

    StartMain()
EndFunc ;==> UpdateMessageData()

Func StartMain()
    ;generate buttons on GUI based on data from ini file (in rows of 7 buttons)
    Local $totalmessages, $xoffset, $yoffset
    $totalmessages = IniRead($msgdatafile, 'Messages', 'Total', 0)
    If $totalmessages <> 0 Then
        ReDim $buttons[$totalmessages+1][2]
        $buttons[0][0] = $totalmessages
        For $i = 1 to $buttons[0][0]
            GUISwitch($maingui)
            $buttons[$i][0] = GUICtrlCreateButton(IniRead($msgdatafile, "Message" & $i, "Name", "Error"), $xoffset + 10, $yoffset + 10, 88.5, 88.5, $BS_MULTILINE)
            $buttons[$i][1] = IniRead($msgdatafile, "Message" & $i, "Content", "Error")
            $xoffset += 98.5
            If BitAnd(IsInt(Number($i/7)), $i <> $buttons[0][0]) Then
                $yoffset += 98.5
                $xoffset = 0
                $wPos = WinGetPos($maingui)
                WinMove($maingui, "", Default, Default, Default, $wPos[3] + 98.5)
            EndIf
        Next
    EndIf
    GUISetState(@SW_SHOW, $maingui)
EndFunc ;==> StartMain()

Func SendOWAMessage($message)
    ;this is where you will interact with IE/other browser to inser $message into the relevant field and then submit the message for sending - this I can't help with as I don't have access to Office365 OWA.
    MsgBox(0, 'Message', 'Will send below message:' & @CRLF & @CRLF & StringReplace($message, '/nn', @CRLF), Default, $maingui)
EndFunc

I've attached the full package file to the post. It includes the source .au3 file as well as the resource zip file which contains BMP images and the compiled autoupdate.au3 exe script - this is only called when a new version is available).

Here are the usage instructions:

1. Extract all files to a folder on your pc - place the files located in "SERVER NETWORK DRIVE FILE TEMPLATES" folder somewhere on your PC or a network drive

2. Open autoupdate.au3 and update the paths below to the same paths on your pc or a network drive (to simulate an update server) - the ini files from "SERVER NETWORK DRIVE FILE TEMPLATES" will be in this path:

$updateini = '<PATH TO UPDATE INI FILE - LOCATED ON A REMOTE SERVER>'
$updatefile = '<PATH TO UPDATE ZIP FILE - LOCATED ON A REMOTE SERVER>' - recommended 'update.zip'

3. Compile the autoupdate file -> output will be autoupdate.exe

4. Place the autoupdate.exe file in the resources.zip file (overwrite the existing autoupdate.exe file in the resources.zip file)

5. Open OWA_Responder.au3 and update the following paths to some paths on your pc of network drive (to simulate an update server):

in AppUpdateCheck() function:

        $updateini = '<PATH TO UPDATE INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'
    $changelog = '<PATH TO CHANGELOG TXT FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'
    $fileLinkApp = '<PATH TO UPDATE ZIP FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>' - recommended 'update.zip'

In UpdateMessageData() function:

    $updateini = '<PATH TO MESSAGE DATA INI FILE - LOCATED ON A REMOTE SERVER NETWORK DRIVE>'

6. Compile the OWA_Reponder file.

7. Run the OWA_Responder.exe file.

To simulate an App update:

1. Open OWA_Responder.au3, change version number to 1.1 (for example) and recompile.

2. Add the new version 1.1 exe of OWA_Responder.exe to 'update.zip'

3. Place update.zip which now contains the new v1.1 exe in the update directory ($updatefile variable in autoupdate.au3 and $fileLinkApp variable in OWA_Responder.au3 should be the full path to this file)

4. Open the previously extracted update.ini file and update the file to:

[Update]
Version=1.1
Critical=False           ;you can change this to True to simulate a 'Critical Update' - which doesnt allow skipping the update
UpdateIni=False

5. Run the original v1.0 OWA_Responder to see if the update check and autoupdate functions work.

You can do the same thing with the MsgData update by incrementing the version number in the ini file and relaunching the app to see if the message file is updated.

Have a look and hopefully this will help you with your project.

OWAResponder.zip

Edited by mpower

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

@mpower

I think you missed one file. zip.au3

Edited by nitekram

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites

@mpower

I think you missed one file. zip.au3

 

You're right, here is the Zip.au3 UDF file

Zip.au3

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.