Jump to content
mmoalem

looking for a way to automate trigger from android phone to turn a windows application on/off

Recommended Posts

mmoalem

Hi all - was wondering if the following is possible:

I have a motion detecting ccrv software on PC (icam or similar) - there is a bottom that turn surveillance (motion detection) on and off. I can get autoit to automate the clicking on the button. 

 

I want my android phone to send a trigger every time it disconnect from the home network (i.e when I leave home) to tell autoit to turn on surveillance and when reconnecting to home network to trigger it to click off

 

does any one have a suggestion how to go about achieving this?

Share this post


Link to post
Share on other sites
jdelaney
Posted (edited)

So my computer is connected to my wifi, and my phone is connected to my wifi...so I can ping my phone continually.

When I leave, and my phone disconnects, the ping will return a failure, and I can have the same locally running script on my computer click the button.  Then I'll start looping the ping until it succeeds in pinging the cell phone, and click the other button.

I'm not sure if the IP is generated real time or not though, so it might change with each reconnect.  You can get the IP by going to your wifi page, clicking on your home's wifi settings.  It will display all the info including the IP.

$myCellPhoneIP = "127.0.0.1"

While True
    While Ping($myCellPhoneIP)
        Sleep(5000)
    WEnd
    ConsoleWrite("Failed to ping $myCellPhoneIP=[" & $myCellPhoneIP & "]" & @CRLF)
    ControlClick('yourwindow',"","your button")
    While Not Ping($myCellPhoneIP)
        Sleep(5000)
    WEnd
    ConsoleWrite("Able to ping $myCellPhoneIP=[" & $myCellPhoneIP & "]" & @CRLF)
    ControlClick('yourwindow',"","your button")
WEnd

If the IP does change (you can test by turning on and off your phones wifi), then you will have to google how to dynamically get the ips connected to your network, such as looping through an IP range that your local wifi uses.

 

Edit: I know this isn't exactly what you asked for, you'll have to wait for someone else for your specific question, but this is a very simple way to do the same kind of functionality.

 

Another route: 

I suppose you can then create a file on your phone whenever, which you can check for on your computer, inside that mapped drive.  Then when you get home, you can delete the file, which your script can check for, and turn off your application.

I'd stick with the pings, because then I wouldn't have to do manually add in a file, or manually delete a file, it would just work.

Edited by jdelaney
  • Like 2

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
mmoalem

thank you very much for the suggestion - very clever work around - didnt even think about this way... the only thing I wonder is the overhead of pinging continuously - I know pinging is only a tiny load on the network but is continuously doing so adds up to a lot of unnecessary  traffic/cpu load ?

Share this post


Link to post
Share on other sites
careca

No problem at all, its not like you're going to crash the network by means of denial of service.

Ping is very light on the network and you can time it for some seconds of interval.


Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
jdelaney

You can also increase the sleep time to a minute, or five minutes, or whatever.


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
alienclone

i would suggest you install Tasker and the AutoRemote plugin on your Android phone, then install EventGhost on PC along with its AutoRemote plugin. then spend lots of hours searching the respective forums for those apps to learn how to make Tasker use AutoRemote to send commands to EventGhost to run AutoIt scripts and vice versa. Then after you have your project working to your satisfaction start experimenting with lots of other ways to automate your phone/pc and start making pointless scripts that eat up more of your time than the initial action you wanted to automate would actually take you to perform manually.


if @error Then
	MsgBox(262192,"",@ComputerName&" slaps "&@UserName&" around a bit with a large trout!")
	EndIf

>Exit code: 0

REAL search results

"Yeah yeah patience, how long will that take?"  -Ed Gruberman

Share this post


Link to post
Share on other sites
careca

Ha! that sounds like me sometimes. @alienclone


Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

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

    • gillesg
      By gillesg
      Hello all,
      First, I wish you a happy new year.
      I am building with autoit a substitution tool to sync my iTunes playlist with my android phone.
      I have managed reading the itunes lib, but now I am stuck at reading / writing on my android device.
      From all the searches I made, it is using MTP protocol. 
      The Windows Explorer can read and write on the device.
      The device appears as a "portable device".
       
      Does anyone of you can direct me in some direction to keep investigate.
       
      Thanks in advance
       
      Gilles
    • oHenry
      By oHenry
      Hi,
      I would like to share this simple project which aims to be a first approach in order to use AutoIt as scripting language for mobile automation (Android).
      This project is an ImperiusGeorge client for mobile test automation that support native Android apps. 
      You can find more information at https://ohtejera.github.io/ImperiusAutoIt and here's the link to the project on Github: https://github.com/ohtejera/ImperiusAutoIt
      Best regards.
      Henry
    • queensoft
      By queensoft
      Connect Android phone > enable USB file transfer > go to My Computer, there's an icon, but no drive letter - this is normal.
      Open phone icon > go to Internal Storage > go to DCIM > copy all files and folders to computer.
      Now, I want a quick AutoIt script / windows batch to do this automatically.
      Get USB path with this - it works OK:
      #include <WinAPICom.au3> Global Const $sCLSID_PortableDeviceManager = "{0af10cec-2ecd-4b92-9581-34f6ae0637f3}" Global Const $sIID_IPortableDeviceManager = "{a1567595-4c2f-4574-a6fa-ecef917b9a40}" Global Const $sTagIPortableDeviceManager = "GetDevices hresult(ptr;dword*); RefreshDeviceList hresult(); " & _ "GetDeviceFriendlyName hresult(wstr;wstr;dword*); GetDeviceDescription hresult(wstr;wstr;dword*); " & _ "GetDeviceManufacturer hresult(wstr;wstr;dword*); GetDeviceManufacturer hresult(wstr;wstr;ptr;dword*dword*); " & _ "GetPrivateDevices hresult(ptr;dword*)" Global Enum $eDevID, $eDevName, $eDevManufacturer, $eDevDescription Local $aPnPDevices = GetPortableDevices() If IsArray($aPnPDevices) Then _ArrayDisplay($aPnPDevices) ;~ Success: Return 0 ;~ Failure: Return 2DArray [n][4] |;[n][0]$eDevID, [n][1]$eDevName, [n][2]$eDevManufacturer,[n][3] $eDevDescription Func GetPortableDevices() Local $aDevicesInfo[0][0] ;[n][0]$eDevID, [n][1]$eDevName, [n][2]$eDevManufacturer,[n][3] $eDevDescription Local $oPortableDeviceManager = 0 Local $SizeofArray = 0 Local $hr = 0x80004005 ;E_Fail Just to Initialized <0 Local $taPnPDeviceIDs = 0 Local $tName = 0 $oPortableDeviceManager = ObjCreateInterface($sCLSID_PortableDeviceManager, $sIID_IPortableDeviceManager, $sTagIPortableDeviceManager) If Not IsObj($oPortableDeviceManager) Then Return 0 If FAILED($oPortableDeviceManager.GetDevices(Null, $SizeofArray)) Then Return 0 If $SizeofArray < 1 Then Return 0 $taPnPDeviceIDs = DllStructCreate("ptr[" & $SizeofArray & "]") If FAILED($oPortableDeviceManager.GetDevices(DllStructGetPtr($taPnPDeviceIDs), $SizeofArray)) Then Return 0 ReDim $aDevicesInfo[$SizeofArray][4] For $i = 0 To $SizeofArray - 1 $tName = DllStructCreate("wchar[512]", DllStructGetData($taPnPDeviceIDs, 1, $i + 1)) $aDevicesInfo[$i][$eDevID] = DllStructGetData($tName, 1) $aDevicesInfo[$i][$eDevName] = _GetFriendlyName($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $aDevicesInfo[$i][$eDevManufacturer] = _GetDeviceManufacturer($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $aDevicesInfo[$i][$eDevDescription] = _GetDeviceDescription($oPortableDeviceManager, $aDevicesInfo[$i][$eDevID]) $tName = 0 _WinAPI_CoTaskMemFree(DllStructGetData($taPnPDeviceIDs, 1, $i + 1)) Next Return $aDevicesInfo EndFunc ;==>GetPortableDevices Func _GetDeviceManufacturer($oInterface, $PnPDeviceID) Local $sString = "" $oInterface.GetDeviceManufacturer($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetDeviceManufacturer Func _GetDeviceDescription($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceDescription($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetDeviceDescription Func _GetFriendlyName($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceFriendlyName($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetFriendlyName Func _GetProperty($oInterface, $PnPDeviceID) Local $sString = "" Local Const $Size = 128 $oInterface.GetDeviceFriendlyName($PnPDeviceID, $sString, 128) Return $sString EndFunc ;==>_GetProperty Func FAILED($hr) Return ($hr < 0) EndFunc ;==>FAILED Path looks like this:
      \\?\usb#vid_0e8d&pid_201d&mi_00#7&37c4bb9&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33} I can open this in a Windows Explorer windows and it works ok.
      Now, search for files using AutoIt - does not work:
      #include <GUIConstantsEx.au3> #include <Array.au3> #include <File.au3> Local $f $f = _RecFileListToArray("\\?\usb#vid_0e8d&pid_201d&mi_00#7&37c4bb9&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}", "*.*", 0, 1, 1) _ArrayDisplay($f) ; Name...........: _RecFileListToArray ; Description ...: Lists files and\or folders in a specified path (Similar to using Dir with the /B Switch) ; Syntax.........: _RecFileListToArray($sPath[, $sFilter = "*"[, $iFlag = 0[, $iRecur = 0[, $iFullPath = 0]]]]) ; Parameters ....: $sPath - Path to generate filelist for. ; $sFilter - Optional the filter to use, default is *. Search the Autoit3 helpfile for the word "WildCards" For details. ; $iFlag - Optional: specifies whether to return files folders or both ; |$iFlag=0 (Default) Return both files and folders ; |$iFlag=1 Return files only ; |$iFlag=2 Return Folders only ; $iRecur - Optional: specifies whether to search in subfolders ; |$iRecur=0 (Default) Do not search in subfolders ; |$iRecur=1 Search in subfolders ; $iFullPath - Optional: specifies whether to include initial path in result string ; |$iFullPath=0 (Default) Do not include initial path ; |$iFullPath=1 Include initial path ; Return values .: @Error - 1 = Path not found or invalid ; |2 = Invalid $sFilter ; |3 = Invalid $iFlag ; |4 = Invalid $iRecur ; |5 = Invalid $iFullPath ; |6 = No File/Folder Found ; Author ........: SolidSnake <MetalGX91 at GMail dot com> ; Modified.......: 22 Jan 09 by Melba23 - added recursive search and full path options ; Remarks .......: The array returned is one-dimensional and is made up as follows: ; $array[0] = Number of Files\Folders returned ; $array[1] = 1st File\Folder ; $array[2] = 2nd File\Folder ; $array[3] = 3rd File\Folder ; $array[n] = nth File\Folder ; Related .......: ; Link ..........; ; Example .......; Yes ; ==================================================================================================== ;Special Thanks to Helge and Layer for help with the $iFlag update ; speed optimization by code65536 ;=============================================================================== Func _RecFileListToArray($sPath, $sFilter = "*", $iFlag = 0, $iRecur = 0, $iFullPath = 0) Local $asFileList[1], $sFullPath If Not FileExists($sPath) Then Return SetError(1, 1, "") If StringRight($sPath, 1) <> "\" Then $sPath = $sPath & "\" If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, 8) = "") Then Return SetError(2, 2, "") If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "") If Not ($iRecur = 0 Or $iRecur = 1) Then Return SetError(4, 4, "") If $iFullPath = 0 Then $sFullPath = $sPath ElseIf $iFullPath = 1 Then $sFullPath = "" Else Return SetError(5, 5, "") EndIf _FLTA_Search($sPath, $sFilter, $iFlag, $iRecur, $sFullPath, $asFileList) If $asFileList[0] = 0 Then Return SetError(6, 6, "") Return $asFileList EndFunc ;==>_FileListToArray ; #INTERNAL_USE_ONLY#================================================================================= ; Name...........: _FLTA_Search ; Description ...: Searches folder for files and then recursively searches in subfolders ; Syntax.........: _FLTA_Search($sStartFolder, $sFilter, $iFlag, $iRecur, $sFullPath, ByRef $asFileList) ; Parameters ....: $sStartFolder - Value passed on from UBound($avArray) ; $sFilter - As set in _FileListToArray ; $iFlag - As set in _FileListToArray ; $iRecur - As set in _FileListToArray ; $sFullPath - $sPath as set in _FileListToArray ; $asFileList - Array containing found files/folders ; Return values .: None ; Author ........: Melba23 based on code from _FileListToArray by SolidSnake <MetalGX91 at GMail dot com> ; Modified.......: ; Remarks .......: This function is used internally by _FileListToArray. ; Related .......: ; Link ..........; ; Example .......; ; ==================================================================================================== Func _FLTA_Search($sStartFolder, $sFilter, $iFlag, $iRecur, $sFullPath, ByRef $asFileList) Local $hSearch, $sFile If StringRight($sStartFolder, 1) <> "\" Then $sStartFolder = $sStartFolder & "\" ; First look for filtered files/folders in folder $hSearch = FileFindFirstFile($sStartFolder & $sFilter) If $hSearch > 0 Then While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop Switch $iFlag Case 0; Both files and folders If $iRecur And StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") <> 0 Then ContinueLoop Case 1; Files Only If StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") <> 0 Then ContinueLoop Case 2; Folders only If StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") = 0 Then ContinueLoop EndSwitch If $iFlag = 1 And StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") <> 0 Then ContinueLoop If $iFlag = 2 And StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") = 0 Then ContinueLoop _FLTA_Add($asFileList, $sFullPath, $sStartFolder, $sFile) WEnd FileClose($hSearch) ReDim $asFileList[$asFileList[0] + 1] EndIf If $iRecur = 1 Then ; Now look for subfolders $hSearch = FileFindFirstFile($sStartFolder & "*.*") If $hSearch > 0 Then While 1 $sFile = FileFindNextFile($hSearch) If @error Then ExitLoop If StringInStr(FileGetAttrib($sStartFolder & $sFile), "D") And ($sFile <> "." Or $sFile <> "..") Then ; If folders needed, add subfolder to array If $iFlag <> 1 Then _FLTA_Add($asFileList, $sFullPath, $sStartFolder, $sFile) ; Recursive search of this subfolder _FLTA_Search($sStartFolder & $sFile, $sFilter, $iFlag, $iRecur, $sFullPath, $asFileList) EndIf WEnd FileClose($hSearch) EndIf EndIf EndFunc ; #INTERNAL_USE_ONLY#================================================================================= ; Name...........: _FLTA_Add ; Description ...: Searches folder for files and then recursively searches in subfolders ; Syntax.........: _FLTA_Add(ByRef $asFileList, $sFullPath, $sStartFolder, $sFile) ; Parameters ....: $asFileList - Array containing found files/folders ; $sFullPath - $sPath as set in _FileListToArray ; $sStartFolder - Value passed on from UBound($avArray) ; $sFile - Full path of file/folder to add to $asFileList ; Return values .: Function only changes $asFileList ByRef ; Author ........: Melba23 based on code from _FileListToArray by SolidSnake <MetalGX91 at GMail dot com> ; Modified.......: ; Remarks .......: This function is used internally by _FileListToArray. ; Related .......: ; Link ..........; ; Example .......; ; ==================================================================================================== Func _FLTA_Add(ByRef $asFileList, $sFullPath, $sStartFolder, $sFile) Local $sAddFolder $asFileList[0] += 1 If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2] If $sFullPath = "" Then $sAddFolder = $sStartFolder Else $sAddFolder = StringReplace($sStartFolder, $sFullPath, "") EndIf $asFileList[$asFileList[0]] = $sAddFolder & $sFile EndFunc File copy using Autoit - does not work:
      FileCopy("\\?\usb#vid_0e8d&pid_201d&mi_00#7&37c4bb9&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\Internal storage\DCIM\Camera MX\PHOTO_20161007_123935.jpg", 'd:\Diverse 2\654\0\') Copy using Windows batch - does not work:
      xcopy /Y /E "\\?\usb#vid_0e8d&pid_201d&mi_00#7&37c4bb9&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\Internal storage\DCIM\*.*" "d:\Diverse 2\654\0\"  
    • tuheeden
      By tuheeden
      I REALLY liked Windows Phone 8.1 and Windows Phone 10. But when the final list of hardware came out from Microsoft, alas my 6 month old phone was not included. Then only weeks later, Microsoft sold their Nokia handset division only day ago, it was time to stop suffering and get back to Android (NO - I do not own or use Apple Products).
      It was only after hours of searching that I found that there was NO EASY WAY to move SMS Messages off of Windows Phone 8.1 or 10 TO Android...UNBELIEVABLE!!
      So I wrote a quick and dirty way to get this done. Here are the steps
      **** - Your existing SMS Messages will be DELETED!! YOU HAVE BEEN WARNED! Back them up if you do not want to lose them
      1 - FROM your Windows Phone 8.1 or Windows Phone 10 - Download 'contacts + messages' app from store. EXPORT ONLY SMS (no MMS). Copy the output file (usually named .msg) to your PC
      **** - This version requires you to find/replace any colons ":" in your messages -like smiley faces - I replaced them with semi-colon ";"
      2 - Run the attached script - choose your file - it will take a minute and then you should see an out.xml file
      3 - Get the out.xml file to your android phone or someplace your android phone can get to is (like dropbox or the like)
      4 - FROM the Android store, download titanium backup. You do NOT NEED root access - choose from the menu RESTORE from XML, Find and select out.xml. If it prompts you to "Change default message app to Titanium" - click YES (you can change it back after the import)
      5 - It will take a while, but when completed, your sms messages will be restored!
      Post here and I will try and assist. Enjoy
      importSMS.au3
    • alien4u
      By alien4u
      This is an small script to Control Android Devices by USB using adb, you can use it with phones with a Cracked Screen or not working Touch Screen.
      What it Does:
      - Show your Android Screen on your Desktop.
      - Allow you to Swipe or Tap on the screen.
      - Allow you to send BACK button event.
      - Allow you to send WakeUp event.
      - Allow you to move in List Menu using Swipe gestures or Mouse Wheel Forward or Backward.
      - Refresh Screen with Wheel Click(Wheel Down)(To update your device screen on your desktop view).
      - Allow you to unlock your Device with Pattern only 3 points pattern for now.

      What it does not:
      - Complex Unlock Pattern not supported yet I'm working on that.
      - Complex Swipe gesture not supported yet, only straight lines.
      - PC Keyboard to write SMS or Email not Supported yet, I'm working on that.
      - Volume UP or Down not supported yet I will add it soon.
      - No configuration interface or file yet, keys and actions are pre set on script code. I will change that.
      What it Requires:
      - In order to Compile the Script you need 3 files:
      adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll
      - In order to use the script without these files or without compile it you need to copy that files to user Temp Dir, or windows Temp dir I mean @TempDir.
       
      Keys Used and Notes:
      - Left Click will tap on the screen.
      - Keep Left Click down, move the mouse and release it with perform a Swipe operation.(Mouse Drag = Swipe).
      - Right Click will go back.
      - Enter on the keyboard will send WakeUp event(Power Button)
      - Wheel Down will Refresh the screen on your desktop, also F5.(Take last pictures of your android device screen)
       
      IMPORTANT: There is an $scale variable on the script that scale down your Phone screenshot image to a good resolution to show on your Desktop, I use 1.5 of scale factor because my phone resolution is 480x800 and my Desktop Screen is 1366x768 and that scale factor is good enough for me.(I will calculate that in the future to make it automatic).
      IMPORTANT 2: If you feel is very slow feel free to decrease Sleep() values from 400 to 200, that will be faster but you will need to Refresh with Wheel Click after you perform certain actions.

      Thanks and Credits:
      UDFs\MouseControl.au3 Base on Low Level Mouse Hook by @_Kurt all credits to him.
      UDFs\GUICtrlPicPNG.au3 Based on PNG work around by @UEZ from the help file, All credits to him.

      Kind Regards
      Alien.
       
      AndroidControl.zip
×