Jump to content

Hyperlink with arguments


Jewtus
 Share

Recommended Posts

I have a compiled tool that has a few options for command line arguments to kick off specific functions. I've tested them via the cmd line and they work great. What I'd like to do next is make it so my email notification contains a hyperlink to the file with the argument included. This is what I have for my email function that DOES work:

Func SendEmails($addAddressee,$id)
    IsOutLookOpen()
    $olApp = ObjCreate("Outlook.Application")
    $objMail = $olApp.CreateItem(0) ;$olMailItem
    With $objMail
        .Save
        .Subject = ("A form needs review - ID: "&$id)
        .HTMLBody = ('Please open the tool by clicking <a href="'&@ScriptDir&"\"&@ScriptName&'">HERE</a>.')
        $oRecipients=.Recipients
        .Display
    EndWith
    For $z=0 to UBound($addAddressee)-1
        If $addAddressee[$z]<> ''  Then
            $resolver=$oRecipients.Add($addAddressee[$z])
            $resolver.Resolve
        EndIf
    Next
EndFunc

and this works without issue but I want to make it so when they click the link, it also passes the command line arg:

.HTMLBody = ('Please open the tool by clicking <a href="'&@ScriptDir&"\"&@ScriptName&" -CMD "&$id&'">HERE</a>.')

Does anyone know how I can achieve this?

Link to comment
Share on other sites

I think you need to encode the spaces. Try %20 for a space.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Ok so I messed around with it a bit:

.HTMLBody = ('Please open the tool by clicking <a href='&StringReplace(@ScriptDir,' ','%20')&'\'&@ScriptName&'%20-CMD%20'&$id&'">HERE</a>.')

and this generates the link but when I open the link it says the file isn't found... Something like this

Cannot find the file '\\host\path\files\Test.exe -CMD 1'. Please verify the path or internet address is correct

So I tried to put quotes around the path and put the -CMD outside the quotes:

.HTMLBody = ('Please open the tool by clicking <a href="'&StringReplace(@ScriptDir,' ','%20')&'\'&@ScriptName&'"%20-EMC%20'&$id&'">HERE</a>.')

and when I do that, it just opens the EXE and doesn't pass the arg to the exe.

Edited by Jewtus
formatting
Link to comment
Share on other sites

I searched the web and got to the conclusion that it is not possible to call an exe and pass parameters using a link.

I'd suggest to just start the exe without parameters and then use Outlook to grab the ID from the subject line of the current mail item.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

I'm not sure what you mean. I want the tool to operate normally, but I have a notifications section so when X action is performed, it notifies someone that they need to open the tool and go to a specific section. I was hoping to jump right to that section from the email. If I launch the tool normally, how would I go about grabbing the id from the email and passing it through to the application?

Link to comment
Share on other sites

When the tool is started you should

  • Check that Outlook is running
  • A mail item is active
  • the mail item has a subject of format "A form needs review - ID: "

If this is True then grab the ID from the subject and jump to the section needed. Else run the program normally.
This approach only works when the mail is being opened by Outlook.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

hmmm seems it could leave room for a lot of potential errors... I did figure out a simple solution that does seem to work though... Build a bat and link to the bat file:

Func SendEmails($addAddressee,$id)
    IsOutLookOpen()
    $olApp = ObjCreate("Outlook.Application")

    ;Build Launcher
    If FileExists(@ScriptDir&"\CMD\")=0 then DirCreate(@ScriptDir&"\CMD\")
    $cmdFile=@ScriptDir&"\CMD\"&$id&@MON&@MDAY&@YEAR&@HOUR&@MIN&@SEC&".bat"
    FileWrite($cmdFile,'"'&@ScriptDir&"\"&@ScriptName&'" -CMD '&$id)

    $objMail = $olApp.CreateItem(0) ;$olMailItem
    With $objMail
        .Save
        .Subject = ("A new form needs review - Project ID: "&$id)
        .HTMLBody = ('Please open the tool by clicking <a href="'&$cmdFile&'">HERE</a>.')
        $oRecipients=.Recipients
        .Display
    EndWith
    For $z=0 to UBound($addAddressee)-1
        If $addAddressee[$z]<> ''  Then
            $resolver=$oRecipients.Add($addAddressee[$z])
            $resolver.Resolve
        EndIf
    Next
EndFunc

 

Edited by Jewtus
Link to comment
Share on other sites

But this only works when the bat file is created on the recipients machine.
But why would you create a mail then?

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

The tool is actually on a shared network dir so everyone is using the same folder structure. The mail is because no one will actually keep an eye on it because users suck. They want the system to send emails if anything ever changed and I told them they would get 20-30 notifications an hour if they did that so they settled to me just sending a summary email telling them to check.

 

The launching the bat is just a way of accommodating users who are lame and don't want to do their job or read anything.

Link to comment
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
 Share

×
×
  • Create New...