AstronomerDaz

Odd error saving a file in Windows 10

4 posts in this topic

Having migrated my PC across to W10, I am getting an odd behaviour when executing a script that works perfectly under W7... Wondered if anyone else had come across this:

So, my script runs an external program called Deep Sky Planner. It opens two reports to calculate positions in the night sky for each of the 8 planets, plus the Moon and Sun. It then saves each of these reports as a HTML file, and a PDF file. I upload these to my astronomical societies web-site. One report is a set of basic data, then a more detailed one is run.

Each report is named with the month-year-object, so 1015Venus.html or 1015Sun_det.pdf

Under W7 (64bit), no problem. On my W10 machine, the change of the filename to be saved is not recognised by the 'Save As' dialogue box, even though the new file name is clearly there in the text edit box! So, I get an error saying that the file already exists!

I've attached a picture of the dialog box error so you can see what I mean.

I've also attached my code (feel free to rip this apart :) )

Has anyone else seen this? Any suggestions??

 

Thanks
Daz

dj_script_error.jpg

DSP_This_Month.au3

Share this post


Link to post
Share on other sites



AstronomerDaz,

I would check that you are actually deleting the files in the "; Clear out any files that may have been run already for this month" section as it appears from your image that there is indeed an exisitng file of that name still present.

M23

 


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Hi,

Yes, the files are being deleted - most definitely.

What the image is showing is:

1 The file 1115Sun.htm is NOT the name of the file being saved - The file being saved is 1115Mercury.htm. 1115Sun was saved on the first iteration of the loop

2. The background shows the console of the editor - where I print out the names of each report to be saved as a debug, so I can see the file name is being generated correctly

 

The filename 115Mercury.htm is being entered into the File Name box in the dialog, but the dialog box is not seeing it - it still thinks it is 1115Sun.html

 

 

Share this post


Link to post
Share on other sites

AstronomerDaz,

My apologies - I can only blame the small screen I was using earlier - and my old eyes!

Looking at this function (which appears to be the source of the problem)

Func ExportHTML (ByRef $object , $type)

   local $in=$savePath & $object, $out=""
   local $varSave

   $varSaveLabel=$varSaveHTMLLabel



   if $type = "B" then
   $in = $in & ".htm"
   Else
      $in = $in & "_det.htm"
   Endif

   send("!feh")
   WinWaitActive($varSave)
   Do
      ControlSetText($varSaveLabel, "" , "[ID:1001]", $in)
      Sleep(500)
      ControlSetText($varSaveLabel, "" , "[ID:1001]", "")
      Sleep(500)
      ControlSetText($varSaveLabel, "" , "[ID:1001]", $in)
      Sleep(500)
      $out=ControlGetText($varSaveLabel, "", "[ID:1001]")
      If $in<>$out Then
         ConsoleWrite("HTML path does not match - rewriting" & @CRLF)
         Exit
      EndIf

   Until $in=$out
   ControlClick($varSaveLabel, "", "[ID:1]")

EndFunc

I am struck by 2 things:

  1. You do not declare a value for $varSave and yet you use it in the WinWaitActive command.
  2. Are you sure the Control IDs you are using are the same in the Win10 dialog as they obviously were in Win 7?

Either of those might be causing a problem.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

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

    • corgano
      By corgano
      Edit: A solution was found! Thanks Jos and others who helped me find this:
      You can have AutoIt run a different "Main" autoit script when you hit F5 instead of the current one, per folder, by doing the following:
      Run SciTE (might need administrator, depending on how autoit was installed) Options -> global properties (alt o g) Uncomment properties.directory.enable=1 (line 270 in my case) create a file SciTEDirectory.properties in the project's main folder Alternatively, if you don't have admin or don't want to edit the global.properties for whatever reason, you can just skip step 1,2,3 and name it SciTE.properties Put in the file you created command.go.$(au3)="$(SciteDefaultHome)\..\AutoIt3.exe" "$(SciteDefaultHome)\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "NAME OF SCRIPT HERE.au3" /UserParams $(1) $(2) $(3) $(4) Save the file. Now anything you run in that folder or subfolder will run the main script when you hit F5 Using SciTEDirectory.properties effects that folder and subfolders, where as SciTE.properties only effects that folder. Apart from that they work the same

      Original question:
      I have a main script, and a bunch of includes / udf's. Almost every single time I edit my includes I hit F5 to run the script, but it runs the include instead. I'm tired of switching back to the main script's tab in SciTE to run it, just to switch back to the include. Is there some kind of #flag or option to set a "main au3 file" so when I hit F5, it will see that and run the main file instead?
    • AndyS19
      By AndyS19
      I have a au3.properties file that adds a search command to the right click context menu.  This command does a FINDSTR on all .au3 files in the "Program Files" directory.  However, on 32 bit Windows 7 and 8.1 OS's, 32 bit executables are now run from a "Program Files (x86)" directory.
      I have a construct that builds a path variable that holds the locations to search.  In this variable, I have both "Program Files" and "Program Files (x86)", as well as a directory that holds my library file.
      The constructor looks like this:
      findcmd="C:\Windows\System32\Findstr.exe" myLib="C:\Andy\AutoIT-src\myLib" where1="C:\Program Files\autoit3\include\*.au3" "C:\Program Files (x86)\autoit3\include\*.au3" $(myLib)\*.au3 Then in the command definition, I use it like this:
      # "Find Definitions" # Look in the C:\Program Files (x86)\AutoIt3\Include directory for any .au3 file # that has a definition for the currently selected word (or the word the # cursor is on) # command.name.42.$(au3)= command.42.$(au3)=$(findcmd) /N /R /I /C:"^global [0-9a-f].* $(CurrentWord) =" $(where1) command.subsystem.42.$(au3)=0 command.save.before.42.$(au3)=2 The problem is that on 32 bit systems without the "Program Files (x86)" directory, I get this error:
          FINDSTR: Cannot open C:\Program Files (x86)\autoit3\include\*.au3
      I think that what I need is an 'if then else' something like this:
       
      if exists "C:\Program Files (x86)" then where1=""C:\Program Files (x86)" $(myLib)\*.au3 else where1=""C:\Program Files" $(myLib)\*.au3 endif How can I conditionally define the search path?
    • rg20
      By rg20
      Greetings all,
       
      I have an app that runs fine in windows 7 but not windows 10.
      issue : when entering the filename to save, it enters it into the saveAs dialog box, but Office still tries to save as "Diagram1" or "Presentation1"
       
      $FileError = "" MonitorProcess2("VISIO") _DebugOut("Visio Done") MonitorProcess2("POWERPNT") _debugOut("Powerpoint Done") CloseSave($FileSavePathName, $SaveAsWindow) _DebugOut("Saved and closed Powerpoint") _VSO_DocumentSave($objVisioFile) while not _VSO_DocumentSaved($objVisioFile) WEnd _VSO_VisioClose($objVisioFile) _DebugOut("Saved and closed Visio") else _DebugOut("Filename Does not exist = "& $FilePathName) EndIf the monitor process2 just makes sure the processes are complete before trying to save the files.
       
      The closeSave function is below, but since I am opening the file with the proper name, this is not an issue
      func CloseSave($SaveFile, $SaveAsWindow) _DebugOut("Save File ") _DebugOut($SaveFile) send("!{F4}") send ("!S") $title = WinGetTitle("[ACTIVE]") _DebugOut("WINDOW - current window is Powerpoint to enter filename " & $title) while not ($title = $SaveAsWindow) $title = WinGetTitle("[ACTIVE]") wend ControlSetText ($SaveAsWindow,"","[CLASS:Edit; INSTANCE:1]",$SaveFile) send ("!S") $title = WinGetTitle("[ACTIVE]") while not StringInStr($title,"Visio") $title = WinGetTitle("[ACTIVE]") wend EndFunc  
    • Skysnake
      By Skysnake
      Scite comes op occasional, almost incidentally, in some support topics.  I have not found a "Scite" topic in the forums, so this is where I will start.  I have recently been using Scite intensively, specifically with a large project and I have certain issues.  I know that Scite is not an AutoIt product, but it is so closely integrated to the core release that it makes sense to raise issues and request support here.  If this is not the right please refer me to the right forum.
      Thx
       
      Skysnake
    • brodillo
      By brodillo
      Hello, I've experience using automation anywhere. Now I want to learn Auto It for my automatization projects.
      I've tried to implement an example using calculator program in Windows 10.
      When I used au3Info program to identify  an escefific zone in the calc window , au3info always return the same advanced class  [CLASS:ApplicationFrameInputSinkWindow; INSTANCE:1] 
      Is there a restriction for windows 10?
      See my little script
       
      Run("Calc.exe")
      WinWaitActive("Calculadora")
      WinActive("Calculadora")
      $old="0"
      $new="1020"
      $controlNumber="[CLASS:ApplicationFrameInputSinkWindow; INSTANCE:1]"
      ControlSetText("Calculadora","",$controlNumber,$new)
      ControlSend("Calculadora","",$controlNumber,$new)
       
      I've tried using controlSetText and ControlSend.
       
      Thank you for your help