Sign in to follow this  
Followers 0
emmanuel

hotkey used while splash screen up...

10 posts in this topic

If I hit the !^Printscreen within the first five seconds while the splash screen is up, it doesn't seem to continue on to the splashtextoff... why is that?

;screenshot util

;HotKeySet("{printscreen}", "_printscreen")
;HotKeySet("!{printscreen}", "_altprintscreen")

$filepath1 = "c:\screenshots"
HotKeySet("!^{printscreen}", "_printscreen")
HotKeySet("!^q","_exit")

SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots", 400, 90, -1, 0, 1)
Sleep(5*1000)
SplashOff()


If FileExists($filepath1) = 0 Then DirCreate($filepath1)

While 1
   Sleep(50)
Wend

Func _printscreen()
   Send("{printscreen}")
   _save()
EndFunc  ;==>_printscreen

;Func _altprintscreen()
;   Send("!{printscreen}")
;   _save()
;EndFunc  ;==>_altprintscreen

Func _save()
   Run("mspaint.exe", "", @SW_HIDE)
   WinWait("untitled - Paint")
   AdlibEnable("adlib")
   ControlSend("untitled - Paint", "", "Afx:1000000:81", "^v")
   WinWait("untitled - Paint")
   ControlSend("untitled - Paint", "", "Afx:1000000:81", "^s")
   WinWait("Save As", "")
   $filename = @UserName & " on " & @ComputerName & " at " & @HOUR & "." & @MIN & "." & @SEC & " on " & @MON & "-" & @MDAY & "-" & @YEAR & ".jpg"
   ControlSetText("Save As", "", "Edit1", '"' & $filepath1 & "\" & $filename & '"')
   ControlClick("Save As", "", "Button2")
   WinWait($filename & " - Paint")
   WinClose($filename & " - Paint")
   AdlibDisable()
EndFunc  ;==>_save 


Func adlib();for the 2k ver of paint's "would you like to increase the image size" message
   If WinExists("Paint", "The image in the clipboard is larger than the bitmap") = 1 Then
      ControlClick("Paint", "The image in the clipboard is larger than the bitmap", "Button1")
      Sleep(250)
   EndIf
EndFunc  ;==>adlib

func _exit()
   Exit
EndFunc

"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Add this to the top of your script:

opt("TrayIconDebug",1)

you will see it hangs on:

WinWait($filename & " - Paint")

edit: maybe because this is not executed yet ?

If FileExists($filepath1) = 0 Then DirCreate($filepath1)

Edited by JdeB

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Add this to the top of your script:

opt("TrayIconDebug",1)

you will see it hangs on:

  WinWait($filename & " - Paint")

edit: maybe because this is not executed yet ?

If FileExists($filepath1) = 0 Then DirCreate($filepath1)

good point, I already have c:\screenshots created on my machine, noticed the error in the logic there and fixed that... that's not it... I just came to the same conclusion, without doing the tray debug... I'm thinking it's... damn... what? maybe I'll do a wait exists on the filename, then close after that.

"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites

cool, once more, you save the day.

Thank you Jdeb.

here's the 'final' code...

;screenshot util

;HotKeySet("{printscreen}", "_printscreen")
;HotKeySet("!{printscreen}", "_altprintscreen")
break(0)
opt("TrayIconDebug",1)
$filepath1 = "c:\screenshots"
If FileExists($filepath1) = 0 Then DirCreate($filepath1)

HotKeySet("!^{printscreen}", "_printscreen")
HotKeySet("!^q","_exit")

SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots", 400, 90, -1, 0, 1)
Sleep(5*1000)
SplashOff()

While 1
   Sleep(50)
Wend

Func _printscreen()
   Send("{printscreen}")
   _save()
EndFunc  ;==>_printscreen

;Func _altprintscreen()
;   Send("!{printscreen}")
;   _save()
;EndFunc  ;==>_altprintscreen

Func _save()
   SplashOff()
   SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots" & @LF & "Saving screenshot", 400, 100, -1, 0, 1)
   Run("mspaint.exe", "", @SW_HIDE)
   WinWait("untitled - Paint")
   AdlibEnable("adlib")
   ControlSend("untitled - Paint", "", "Afx:1000000:81", "^v")
   WinWait("untitled - Paint")
   ControlSend("untitled - Paint", "", "Afx:1000000:81", "^s")
   WinWait("Save As", "")
   $filename = @UserName & " on " & @ComputerName & " at " & @HOUR & "." & @MIN & "." & @SEC & " on " & @MON & "-" & @MDAY & "-" & @YEAR & ".jpg"
   ControlSetText("Save As", "", "Edit1", '"' & $filepath1 & "\" & $filename & '"')
   ControlClick("Save As", "", "Button2")
   while FileExists($filepath1 & "\" & $filename) = 0
      Sleep(10)
   Wend
   WinClose($filename & " - Paint")
   AdlibDisable()
   SplashOff()
   SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots" & @LF & "Screenshot Saved", 400, 100, -1, 0, 1)
   sleep(1000)
   SplashOff()
EndFunc  ;==>_save 


Func adlib();for the 2k ver of paint's "would you like to increase the image size" message
   If WinExists("Paint", "The image in the clipboard is larger than the bitmap") = 1 Then
      ControlClick("Paint", "The image in the clipboard is larger than the bitmap", "Button1")
      Sleep(250)
   EndIf
EndFunc  ;==>adlib

func _exit()
   Exit
EndFunc

"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

doh! I spoke a little too soon... the mspaint proccess is hanging around... my guess is that winclose is making it's attempt while the file is still saving, so mspaint is just ignoring it....

WinWait($filename & " - Paint")
   WinKill($filename & " - Paint")

This works when I don't run it with the @SW_HIDE, but when I do run it hidden, it hangs at the winwait... any ideas for a workaround?

Edited by emmanuel

"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites

ok, I'm getting more complex, with nothing getting fixed...

While WinExists($filename & " - Paint") = 1
      Sleep(100)
      Do
         WinKill($filename & " - Paint")
      Until WinExists($filename & " - Paint") = 0
   Wend

still leaves the mspaint.exe proc there.


"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites

Added a sleep after the run.. and changed WinTitleMatch before close which seems to work... so it must be something with the title....

Func _save()
  SplashOff()
  SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots" & @LF & "Saving screenshot", 400, 100, -1, 0, 1)
  Run("mspaint.exe")
  WinWait("untitled - Paint","",@SW_HIDE)
  AdlibEnable("adlib")
  sleep(500)
  ControlSend("untitled - Paint", "", "Afx:1000000:81", "^v")
  WinWait("untitled - Paint")
  ControlSend("untitled - Paint", "", "Afx:1000000:81", "^s")
  WinWait("Save As", "")
  $filename = @UserName & " on " & @ComputerName & " at " & @HOUR & "." & @MIN & "." & @SEC & " on " & @MON & "-" & @MDAY & "-" & @YEAR & ".jpg"
  ControlSetText("Save As", "", "Edit1", '"' & $filepath1 & "\" & $filename & '"')
  ControlClick("Save As", "", "Button2")
  while FileExists($filepath1 & "\" & $filename) = 0
     Sleep(10)
  Wend
  opt("WinTitleMatchMode", 2)
  WinClose(" - Paint")
  AdlibDisable()
  SplashOff()
  SplashTextOn("","ScreenShot by Emmanuel" & @LF & "Alt-Ctrl-PrintScreen to take a screenshot" & @LF & "  Alt-Ctrl-Q to quit" & @LF & "Screenshots stored in C:\Screenshots" & @LF & "Screenshot Saved", 400, 100, -1, 0, 1)
  sleep(1000)
  SplashOff()
EndFunc ;==>_save

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

interesting... well, I'd been hoping to avoid closing any old notepad window, but I suppose that the "last active" clause should fix that. Edit that works, tested with another paint window open, it leaves that one alone.

Edited by emmanuel

"I'm not even supposed to be here today!" -Dante (Hicks)

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Hi,

I like to make two more points:

1. On my system, although the file is saved with a .jpg extension it is actually .bmp (the default). (Look at the file size...)

To save in true .jpg format, you'll need to add:

ControlSetText("Save As", "", "Edit1", '"' & $filepath1 & "\" & $filename & '"')
  Controlsend("Save As", "", "ComboBox3", "j");<----------------------------This line
  ControlClick("Save As", "", "Button2")

This selects the jpg filetype in the 'save as type' combobox

2. The Paint process doesn't alter the Window title when it's hidden, only when it's shown :ph34r: , so as long as you open Paint in hidden mode, you can close it by:

winwait("untitled - Paint")
  WinClose("untitled - Paint")

even after the save!

or you could use JdeB's method.. :(

Regards,

Doflow

Edited by Doflow

Share this post


Link to post
Share on other sites

Hi,

I like to make two more points:

Regards,

Doflow

cool, thanks for the input, I added
Controlsend("Save As", "", "ComboBox3", "j")
and am using
WinWait(" - Paint")
   WinClose(" - Paint")

"I'm not even supposed to be here today!" -Dante (Hicks)

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
Sign in to follow this  
Followers 0