Jump to content

Create Service


danrche
 Share

Recommended Posts

Hello All,

I'm trying to create a service for an app I'm creating.

I've set up an ammyy script that watches for specific windows and emails remote code to me, and auto accepts approve for connection, but I'd like to set that as a service.

Currently I'm running it in the start up folder for when the user log's in, it runs the script.

This is for my Home use (not for commerical use of AMMYY check their license on-line).

I'm trying to use this as an alternative to opening ports on my firewall and vpn. I'm open to any suggestions as well as to a better solution for remote instead of AMMYY.

I mostly use it to fix my wife's computer while at work. I like Ammyy though b/c I can push files across to the desktop.

I think eventually as I get better with using Autoit I'll give a try at creating the same sort of remote mechanisms for tightvnc (unless someone has already done this).

Here's what I'm running now for my code:

#Include<file.au3>

$SmtpServer = "smtp.gmail.com" ; address for the smtp-server to use - REQUIRED

$FromName = "" ; name from who the email was sent

$FromAddress = "" ; address from where the mail should come

$ToAddress = "" ; destination address of the email - REQUIRED

;$sSubject = ; subject from the email - can be anything you want it to be

$Body = "Please help me with my computer." ; the messagebody from the mail - can be left blank but then you get a blank mail

$AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed

$CcAddress = "" ; address for cc - leave blank if not needed

$BccAddress = "" ; address for bcc - leave blank if not needed

$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"

$Username = "" ; username for the account used from where the mail gets sent - REQUIRED

$Password = "" ; password for the account used from where the mail gets sent - REQUIRED

;$IPPort = 25 ; port used for sending the mail

;$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS

$IPPort=465 ; GMAIL port used for sending the mail

$ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

$amy = "Ammyy Admin v2.13"

Global $sSubject

Global $oMyRet[2]

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

If ProcessExists("Ammyy_Admin.exe") Then

_Launch()

ElseIf FileExists("C:\support\maniron\Ammyy_Admin.exe") Then

run("c:\support\maniron\Ammyy_Admin.exe", "c:\support\maniron")

_Launch()

Else

inetget("http://www.ammyy.com/AMMYY_Admin.exe", "c:\support\maniron\Ammyy_Admin.exe", 0, 0)

run("c:\support\maniron\Ammyy_Admin.exe", "c:\support\maniron")

_Launch()

EndIf

Func _Launch()

WinActivate($amy,"")

WinWaitActive($amy,"")

ControlClick($amy, "" , 1505, "left", 1)

WinMinimizeAll()

MsgBox(0,"QuickConnect", "Please wait while your connection is made.")

$sSubject = @computerName & " RemID " & ControlGetText($amy, "", 1511)

$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $sSubject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

WinWaitActive("Ammyy Admin", "&Accept")

ControlClick("Ammyy Admin", "", 1030, "left", 1)

EndFunc

#comments-start

This part is for Mail relay only :) thanks to AutoIT forums for the function

#comments-end

If @error Then

MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)

EndIf

;

; The UDF

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)

Local $objEmail = ObjCreate("CDO.Message")

$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'

$objEmail.To = $s_ToAddress

Local $i_Error = 0

Local $i_Error_desciption = ""

If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress

If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress

$objEmail.Subject = $s_Subject

If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then

$objEmail.HTMLBody = $as_Body

Else

$objEmail.Textbody = $as_Body & @CRLF

EndIf

If $s_AttachFiles <> "" Then

Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")

For $x = 1 To $S_Files2Attach[0]

$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])

;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console

If FileExists($S_Files2Attach[$x]) Then

ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)

$objEmail.AddAttachment($S_Files2Attach[$x])

Else

ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)

SetError(1)

Return 0

EndIf

Next

EndIf

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

If Number($IPPort) = 0 then $IPPort = 25

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

;Authenticated SMTP

If $s_Username <> "" Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password

EndIf

If $ssl Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

EndIf

;Update settings

$objEmail.Configuration.Fields.Update

; Set Email Importance

Switch $s_Importance

Case "High"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"

Case "Normal"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"

Case "Low"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"

EndSwitch

$objEmail.Fields.Update

; Sent the Message

$objEmail.Send

If @error Then

SetError(2)

Return $oMyRet[1]

EndIf

$objEmail=""

EndFunc ;==>_INetSmtpMailCom

;

;

; Com Error Handler

Func MyErrFunc()

$HexNumber = Hex($oMyError.number, 8)

$oMyRet[0] = $HexNumber

$oMyRet[1] = StringStripWS($oMyError.description, 3)

ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)

SetError(1); something to check for when this function returns

Return

EndFunc ;==>MyErrFunc

Link to comment
Share on other sites

Did you try Teamviewer?

Have a look at http://www.autoitscript.com/wiki/FAQ#How_can_I_run_my_script_as_a_service.3F

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

  • 5 months later...

Hello All,

I'm trying to create a service for an app I'm creating.

I've set up an ammyy script that watches for specific windows and emails remote code to me, and auto accepts approve for connection, but I'd like to set that as a service.

Currently I'm running it in the start up folder for when the user log's in, it runs the script.

This is for my Home use (not for commerical use of AMMYY check their license on-line).

I'm trying to use this as an alternative to opening ports on my firewall and vpn. I'm open to any suggestions as well as to a better solution for remote instead of AMMYY.

I mostly use it to fix my wife's computer while at work. I like Ammyy though b/c I can push files across to the desktop.

I think eventually as I get better with using Autoit I'll give a try at creating the same sort of remote mechanisms for tightvnc (unless someone has already done this).

Here's what I'm running now for my code:

#Include<file.au3>

$SmtpServer = "smtp.gmail.com" ; address for the smtp-server to use - REQUIRED

$FromName = "" ; name from who the email was sent

$FromAddress = "" ; address from where the mail should come

$ToAddress = "" ; destination address of the email - REQUIRED

;$sSubject = ; subject from the email - can be anything you want it to be

$Body = "Please help me with my computer." ; the messagebody from the mail - can be left blank but then you get a blank mail

$AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed

$CcAddress = "" ; address for cc - leave blank if not needed

$BccAddress = "" ; address for bcc - leave blank if not needed

$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"

$Username = "" ; username for the account used from where the mail gets sent - REQUIRED

$Password = "" ; password for the account used from where the mail gets sent - REQUIRED

;$IPPort = 25 ; port used for sending the mail

;$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS

$IPPort=465 ; GMAIL port used for sending the mail

$ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

$amy = "Ammyy Admin v2.13"

Global $sSubject

Global $oMyRet[2]

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

If ProcessExists("Ammyy_Admin.exe") Then

_Launch()

ElseIf FileExists("C:\support\maniron\Ammyy_Admin.exe") Then

run("c:\support\maniron\Ammyy_Admin.exe", "c:\support\maniron")

_Launch()

Else

inetget("http://www.ammyy.com/AMMYY_Admin.exe", "c:\support\maniron\Ammyy_Admin.exe", 0, 0)

run("c:\support\maniron\Ammyy_Admin.exe", "c:\support\maniron")

_Launch()

EndIf

Func _Launch()

WinActivate($amy,"")

WinWaitActive($amy,"")

ControlClick($amy, "" , 1505, "left", 1)

WinMinimizeAll()

MsgBox(0,"QuickConnect", "Please wait while your connection is made.")

$sSubject = @computerName & " RemID " & ControlGetText($amy, "", 1511)

$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $sSubject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

WinWaitActive("Ammyy Admin", "&Accept")

ControlClick("Ammyy Admin", "", 1030, "left", 1)

EndFunc

#comments-start

This part is for Mail relay only :mellow: thanks to AutoIT forums for the function

#comments-end

If @error Then

MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)

EndIf

;

; The UDF

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)

Local $objEmail = ObjCreate("CDO.Message")

$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'

$objEmail.To = $s_ToAddress

Local $i_Error = 0

Local $i_Error_desciption = ""

If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress

If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress

$objEmail.Subject = $s_Subject

If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then

$objEmail.HTMLBody = $as_Body

Else

$objEmail.Textbody = $as_Body & @CRLF

EndIf

If $s_AttachFiles <> "" Then

Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")

For $x = 1 To $S_Files2Attach[0]

$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])

;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console

If FileExists($S_Files2Attach[$x]) Then

ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)

$objEmail.AddAttachment($S_Files2Attach[$x])

Else

ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)

SetError(1)

Return 0

EndIf

Next

EndIf

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

If Number($IPPort) = 0 then $IPPort = 25

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

;Authenticated SMTP

If $s_Username <> "" Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password

EndIf

If $ssl Then

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

EndIf

;Update settings

$objEmail.Configuration.Fields.Update

; Set Email Importance

Switch $s_Importance

Case "High"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"

Case "Normal"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"

Case "Low"

$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"

EndSwitch

$objEmail.Fields.Update

; Sent the Message

$objEmail.Send

If @error Then

SetError(2)

Return $oMyRet[1]

EndIf

$objEmail=""

EndFunc ;==>_INetSmtpMailCom

;

;

; Com Error Handler

Func MyErrFunc()

$HexNumber = Hex($oMyError.number, 8)

$oMyRet[0] = $HexNumber

$oMyRet[1] = StringStripWS($oMyError.description, 3)

ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)

SetError(1); something to check for when this function returns

Return

EndFunc ;==>MyErrFunc

hi

AMMYY_Admin.exe -install ( install service with command line)

after you can use net start ammyadmin (the service of ammyy admin)

thanks !!

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...