How to call Windows Restart API using autoIT

1

I have an autoit script that I run several times through the day to back up my user's documents to a secure server. Recently, I have found that many of my users have not had important documents backed-up as they have left the file open in word/pdf etc...

I have researched and Windows Restart Manager seemed to be a way around this problem but shutting down the process without restarting the computer or interrupting the user's workflow.

https://docs.microsoft.com/en-us/windows/win32/rstmgr/restart-manager-portal

I have searched for code examples in how to implement this but can only find this one

https://docs.microsoft.com/en-us/windows/win32/rstmgr/using-restart-manager-with-a-secondary-installer

The code I use so far to tell if the file is in use

Function:

 Global Const $GENERIC_WRITE = 0x40000000
 Global Const $GENERIC_READ = 0x80000000
 Global Const $FILE_ATTRIBUTE_NORMAL = 0x00000080
 Global Const $OPEN_EXISTING = 3


 Func _fileinuse($file)
 $hFile = DllCall("kernel32.dll", "hwnd",   "CreateFile", "str", $file, "int",    BitOR($GENERIC_READ, $GENERIC_WRITE), "int", 0, "ptr", 0, "int", $OPEN_EXISTING, "int", $FILE_ATTRIBUTE_NORMAL, "int", 0)

 If $hFile[0] = -1 Then
   Return("yes")
 Else
   DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $hFile[0])
Return("no")
EndIf
EndFunc

This is how I call it in the main script:

  If _fileinuse($file) = "no" Then

    _BackUp($file)

If anyone has any idea where I can find documentation on autoit implementation or code examples I would be grateful

windows
api
autoit
asked on Stack Overflow Jun 2, 2020 by AlwaysLeaning

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0