Jump to content
SalamanderSoup

Capture Screenshot using snipping tool

Recommended Posts

SalamanderSoup

I've created a simple script that opens the Snipping Tool; Selects the "Full Screen Snip" option; then closes the program, prompting a save.  What I can't figure is how to name the file using the system date and time.

Can anyone help?

Run(@WindowsDir & '\system32\SnippingTool.exe')
AutoItSetOption('MouseCoordMode', 0)

Sleep(1)
$hWnd= WinWait("Snipping Tool", "ToolBarWindow32", 1)
WinActive($hWnd)
MouseClick('primary', 84, 48, 1, 0)
MouseClick('primary', 84, 140, 1, 0)
WinClose("[Class:Microsoft-Windows-Tablet-SnipperEditor]")

ControlClick("Snipping Tool", "", "Button1")

 

 

 

 

Share this post


Link to post
Share on other sites
JLogan3o13

@SalamanderSoup moved your topic to General Help and Support, as you seemed to have missed this at the top of the Examples forum:

Do not post general support questions here, instead use the AutoIt Help and Support forums.

 


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
SalamanderSoup

Thanks, I hope someone will be able to help me.

Share this post


Link to post
Share on other sites
l3ill

Probably because windows wont allow you to save a file with back slashes/forward slashes\ in it.

Try using _NowDate() and StringReplace and replace the " / \ " with "." for instance...

 

p.s. unless you are dead set on using SnippetTool, Autoit has a very cool function called:

_ScreenCapture_Capture that does this job very well ;)

Edited by l3ill
p.s.
  • Like 2

Share this post


Link to post
Share on other sites
SalamanderSoup

Thanks l3ill, could you possibly give me an example of how the NowDate and StringReplace scripts might look together?  I've looked at the AutoScript Help File, and still feel a bit confused at how I should code it.  I'm very new at this.

3 hours ago, l3ill said:

Probably because windows wont allow you to save a file with back slashes/forward slashes\ in it.

Try using _NowDate() and StringReplace and replace the " / \ " with "." for instance...

 

p.s. unless you are dead set on using SnippetTool, Autoit has a very cool function called:

_ScreenCapture_Capture that does this job very well ;)

Share this post


Link to post
Share on other sites
Xandy

Here is your script.

#include <Date.au3>
#include <ScreenCapture.au3>

$filename = _NowDate()
;                         String     Find Replace
$filename = StringReplace($filename, "/", ".")

; I'm guessing fixed location wants the cursor off
;                      Filepath      \    Filename    .Type   x1  y1  x2  y2   Capture Mouse Cursor
_ScreenCapture_Capture(@ScriptDir & "\" & $filename & ".png", 84, 48, 84, 140, False)

It's only programmed to read 1 pixel width, but I hope you know that already.

If you want a BMP or something else you can change the type ".png"

Edited by Xandy
  • Like 1

Share this post


Link to post
Share on other sites
SalamanderSoup

Lol, I'd buy that script for a dollar!

Thank you, both for the input, and thank you Xandy for the working script.

I was able to add the system time to the file name, as well.

  • Like 1

Share this post


Link to post
Share on other sites
Xandy
4 hours ago, l3ill said:

Nice follow up Xandy...

I hope this is not going to be too expensive ;)

I try SO hard!

Your advice gave me a concise path to victory.

2 hours ago, SalamanderSoup said:

I was able to add the system time to the file name, as well.

Then you're learning and all is well.  There's nothing wrong with eating a free fish, unless you're the fish.

Share this post


Link to post
Share on other sites
AutoBert
15 hours ago, SalamanderSoup said:

Lol, I'd buy that script for a dollar!

Just put a one dollar note in your cdtray and run

FileCopy('path to cdtray\one dollar.$$$','https://www.autoitscript.com/donate')

The dollar will transfered asap.  :lol:

  • Like 1

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

    • Siryx
      By Siryx
      So what i need is a function that I pass a starting date into and it counts up to the current date. Example:
      2009-05-30
      2009-05-31
      2009-06-01
      ...
      2018-06-18
      How would I do that? I found the Date.au3 in the includes but I can't find anything close to a time object like I'm used to working with in Java. I just need some $date = setDate(2009-05-30) and from there I could just add a day every time. I need this to be in the very format I stated earlier and from what I can see everytime related to date and time is automatically changed to my german locale.
      €: I already tried setDate but instead it changed my PCs clock. Not quite what i was looking for  
    • nacerbaaziz
      By nacerbaaziz

      Hello
      I have a question please
      How to show Islamic date in Autoit
      I mean
      for example
      Ramadan month
      And moharam month ... etc
      I hope my question is clear for you
      Thanks in advance
    • ammaul
      By ammaul
      Hi folks, I'm having problems with a screenshot capture script.
      Let me explain.
      Everyday I (and my colleagues at work) need to take some screenshots from a web-page. These screenshots are used to compile a report. Normally, I (and others) used to log in into the website and took screenshots of desired graphics and tables. This is tediuos and time consuming. To easy this task I made a script using autoit that basically logs into the website (user and password) and using some clicks, stroke send, coordinates, it is able to generate the graphics and save them to some folders into our network (this script saves arouund 50 pics. It works like a sharm.
      In order to make things easier, I tried to schedule this script (compiled to a Screnpics.exe file) using task scheduler from windows. We already use this (task scheduler) to run some vbs scripts, some vba excel scripts and so on. The computer used for this tasks is a windows 7 desktop computer. Due to security policies, the computer locks after some time. All this tasks run in the locked computer.
      My script screenpics.exe runs also from this locked computer. When the computer is unlocked, it does everything as expected. But, when it is locked, all the "pics" are BLACK. As I understand, it runs ok, but, as the "windows" are innactive, it prints what it "sees": a black rectangular.
      Some details: The web-page with hold the information I need, it only works in Firefox and, because of this it couldn`t be managed by vba or some "getobject" like commands. In fact, it has some flash things that make it impossible to control programatically. So my script is based on mouse move to coordinates, mouse click, screen capture and so one.
       
      So, I read many posts trying to figure out a way to overcome this, but... nothing came to mind. My first idea was try to unlock windows. Theses lead me to some posts with no solution. This is worse because I'm not a computer admin, so procedures that need to replace/change the register are not an option.
       
      If someone has any idea, I'll be gratefull.
    • Jury
      By Jury
      So I get:
      $aMatch[0] Date(1499295600000)   this is supposed to be 06 Jul 2017
      $aMatch[0] Date(1483574400000)  this is supposed to be 05 Jan 2017
      does anybody know the formula to calculate the date from the large number?  It doesn't seem to be anything to do with DateToDayValue.
      thanks in advance.
    • litlmike
      By litlmike
      I am taking a Date & Time and splitting them using _DateTimeSplit, so that I can create a filename in the format: YYYYMMDD_HHMMSS.jpg.  The only issue is that if the month, or day, is a two-digit number that begins with a zero (so less than 10), then the month, or day, is formatted as a single-digit number.  Suggestions on how to accomplish this?
      Example:
      20180101 becomes 2018, 1, 1
      20180303 becomes 2018, 3, 3
      20180505 becomes 2018, 5, 5
      20180606 becomes 2018, 6, 6
      20180909 becomes 2018, 9, 9
      What I want:
      20180101 becomes 2018, 01, 01
      20180303 becomes 2018, 03, 03
      20180505 becomes 2018, 05, 05
      20180606 becomes 2018, 06, 06
      20180909 becomes 2018, 09, 09
      Func _CreateFileNameFromDateTimeFormat($sDateThatWasChangedIntoDateTimeFormat = "2018/01/02 10:29:39") Local $aMyDate, $aMyTime, $sNewImageFileName _DateTimeSplit($sDateThatWasChangedIntoDateTimeFormat, $aMyDate, $aMyTime) _ArrayDisplay($aMyDate) _ArrayDisplay($aMyTime) ;This will become file name $sNewImageFileName = $aMyDate[1] & $aMyDate[2] & $aMyDate[3] & "_" & $aMyTime[1] & $aMyTime[2] & $aMyTime[3] & ".jpg" ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sNewImageFileName = ' & $sNewImageFileName & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console EndFunc ;==>_CreateFileNameFromDateTimeFormat  
       
×