Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage

Reply
 
Thread Tools Search this Thread Display Modes
Old 27th December 2015, 03:20   #1  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
VD_EdKey v1.02 - 23rd July 2019

VD_EdKey. Utility for Avisynth, v1.02

Code:
VD_EdKey v1.02 for VirtualDub2 [recently about build 43602].

VD_EdKey, is a compiled AutoIt script utility, intended to assist in creating Avisynth frames command files.
Create command file in VirtualDub2 with VD_EdKey, and use command file in Avisynth script functions.

VD_EdKey is used together with VirtualDub2 and NotePad. You must run the app, with BOTH VirtualDub2 and the
NotePad Editor VISIBLE, you can scroll through a video clip, and press eg CTRL/INSERT to insert the current frame number 
into the NotePad Editor. You press the keys with VDub2 as the active window (not NotePad).
VD_EdKey requires VirtualDub2, neither VirtualDub Std nor VirtualDubMod will be recognised.
After creating Command file in NotePad, Save as eg Command.txt and provide it as eg SelectRanges(Cmd="Command.txt") or
RejectRanges((Cmd="Command.txt") {Select/RejectRanges supplied with both Framesel and Prune Avisynth plugins).


*** Current frame is shown in VirtualDub2 in the middle of the status bar. ***
*** Ranges are marked in VirtualDub2 via HOME and END keys, shown at Left of status bar (when marked). ***

It is important to NOT do any VirtualDub2 clip editing, if you eg delete a frame in VirtualDub2, then all frames after that frame will
be off by 1, and so all VD_EdKey edited ranges/frames inserted later into NotePad file will be also off by 1.
The VDub2 loaded clip can be either an AVI or AVS clip, it makes no difference.

All VD_EdKey Keyboard commands:-
    # Inserted into NotePad Text file
    CTRL/INSERT         Insert current frame eg '42'.
    CTRL/SHIFT/INSERT   Insert current range eg '42,52'. (single frame range is converted to single frame)
      # Special use (where script frames file processor gives special meaning to -ve frame or range):
      CTRL/DELETE         Insert -ve current frame '-42'.
      CTRL/SHIFT/DELETE   Insert -ve current range '-42,52'. (single frame range is converted to single frame)    
    # Terminate:
    CTRL+SHIFT+ALT+PAUSE is TERMINATE Program (or close via System Tray icon). PAUSE is also known as BREAK, usually next to Scroll Lock.

NOTE: A range shown in VDub2 status bar as eg "Selecting Frames 100-102(2 frames)" represents frames 100 and 101, frame 102 is exclusive and
does not count. By default, VD_EdKey uses Inclusive END frame ranges (same as Avisynth where end frame DOES count).
You can change the default behaviour to behave the same as VDub2 by Running VD_EdKey.Exe at least once and changing the auto created
VD_EdKey.ini file contents from "RangeEndIsExclusive=0" to "RangeEndIsExclusive=1". When using VDub2 "RangeEndIsExclusive=1" mode,
we subtract 1 from the End Frame to convert to Avisynth End Frame Inclusive specification when writing range to NotePad command.
When sending a command using VDub exclusive mode with a status bar range of "100-100(frames=0)", it will beep and show a "No Frames"
type error message for a few seconds, in Avisynth Inclusive mode it will send a 1 frame range command to the NotePad window.   

It is easy to see what is happening as the NotePad window will be visible and after each insertion into NotePad, an ENTER key
will also be sent to move the cursor down one line, each command is on its own line. If you make a mistake, it is easy to
just switch to NotePad window and delete the erroneous line.

Will only work with Windows System NotePad, and not a hard wired replacement text editor.

That is it, thats all it does. Is easier than switching windows, insert/delete frame number, and then back to original window again.
The -ve frame numbers and ranges may be of use if some script or other can use this info to eg remove a scene change when -ve,
or insert one when +ve, how the +ve, -ve numbers are used is in your court.


AutoiIt compiled executable with source provided, just click Menu Tools/build to create executable (In Scite4AutoIt3 editor).
Requires AutoIt3 and  Scite4AutoIt3 editor to re-build executable. 

ssS
AutoIt Source
Code:
#cs  ----------------------------------------------------------------------------
    This program is free software; you can redistribute it and/or modify
    it under an terms terms you like.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    Use at you own risk.

#ce ----------------------------------------------------------------------------
; VD_EdKey v1.01 by StainlessS ... compiled with AutiIt v3.3.14.5

#include <MsgBoxConstants.au3>
#include <Misc.au3>
Opt("MustDeclareVars", 1)

;;;

Global Const $APP_NAME      = "VD_EdKey.Exe"
Global Const $APP_INI       = "VD_EdKey.ini"
Global Const $APPTitle      = "VirtualDub2"                              ; VirtualDub2 matches as "VirtualDub2" with traiiling "Build number" on title bar.
Global Const $Watching      = "    VD_EdKey is WATCHING    "
Global Const $VdFrameNo     = "[CLASS:Static; INSTANCE:1]"               ; Frame Indicator box (bottom middle of window, just above status line)
Global Const $VDRange       = "[CLASS:msctls_statusbar32; INSTANCE:1]"   ; Frame Range (bottom Left of window, 'Selecting Frames...' when range selected)
;
; CAN CHANGE below "Notepad" and "Edit" to change editor, use AutoIt Au3Info program to get names (try 1st with NotePad.exe to see how to use it).
Global Const $EdTitle     = "[CLASS:Notepad]"                        ; NotePad Window name.
Global Const $EditControl = "[CLASS:Edit; INSTANCE:1]"               ; NotePad text editor window control.
; eg for NotePad2, Comment out above two lines and uncomment below two lines (Semi Colon is comment character).
; After changes, in AutoIt SciTE source editor, hit F7 to rebuild executable. (probably the same key in the basic AutoIt included editor).
;Global Const $EdTitle     = "[CLASS:Notepad2]"                      ; NotePad2 Window name.
;Global Const $EditControl = "[CLASS:SysListView32; INSTANCE:1]"     ; NotePad2 text editor window control.
;

Global $Doze               = 250
Global Const $ShowCntLimit = 2000 / $Doze
Global $InAPP              = False
Global $ShowCnt            = 0
Global $RangeEndIsExclusive= 0                                        ; 0=Avisynth, 1=VDub : Will Get from VD_EdKey.ini if exists

If _Singleton($APP_NAME, 1) = 0 Then
    MsgBox($MB_SYSTEMMODAL, "Warning", "An occurrence of " & $APP_NAME & " is already running")
    Exit
EndIf

; Get defaults from ini file (if exists).
$RangeEndIsExclusive = IniRead(@ScriptDir & "\" & $APP_INI, "Default", "RangeEndIsExclusive", 0)
; Update ini file.
IniWrite(@ScriptDir & "\" & $APP_INI, "Default", "RangeEndIsExclusive", $RangeEndIsExclusive)
;

OnAutoItExitRegister("Fn_AtExit") ; Whatever cleanup to do on termination
HotKeySet("^+!{PAUSE}", "Fn_Terminate")                               ; CTRL+SHIFT+ALT+PAUSE {PAUSE aka BREAK} is TERMINATE Program (or close via System Tray icon)

; Main Program Loop
Do
    If Not $InAPP Then
        If WinActive($APPTitle) And WinExists($EdTitle) Then
            Bind()                                                    ; Make HotKeys active
            $InAPP = True
        EndIf
    Else
        If Not WinActive($APPTitle) Or Not WinExists($EdTitle) Then
            UnBind()                                                  ; Deactivate Hotkeys
            $InAPP = False
        EndIf
    EndIf
    Sleep($Doze)
    If $ShowCnt > 0 Then
        $ShowCnt = $ShowCnt - 1
        If $ShowCnt = 0 Then
            ToolTip("")                                               ; Display time expired, Switch off "VD_EdKey is WATCHING"
        EndIf
    EndIf
Until (1+1 <> 2)                                                      ; 4E4, ... for a long time.

;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;

Func Bind()
    HotKeySet("^{INSERT}", "InsertFrame")   ; CTRL/INSERT       : Insert Frame
    HotKeySet("^+{INSERT}", "InsertRange")  ; CTRL/SHIFT/INSERT : Insert Range
    HotKeySet("^{DELETE}", "DeleteFrame")   ; CTRL/DELETE       : Delete Frame
    HotKeySet("^+{DELETE}", "DeleteRange")  ; CTRL/SHIFT/DELETE : Delete Range
    $ShowCnt = $ShowCntLimit
    if $RangeEndIsExclusive <> 0 Then
        ToolTip($Watching & " --- Range End Is Exclusive")
    Else
        ToolTip($Watching)
    EndIf
EndFunc

Func UnBind()
    ToolTip("")                         ; switch off tooltips.
    $ShowCnt = 0
    ; Disable HotKeys
    HotKeySet("^{INSERT}")              ; CTRL/INSERT
    HotKeySet("^+{INSERT}")             ; CTRL/SHIFT/INSERT
    HotKeySet("^{DELETE}")              ; CTRL/DELETE
    HotKeySet("^+{DELETE}")             ; CTRL/SHIFT/DELETE
EndFunc

Func Fn_AtExit()
    HotKeySet("+^!{PAUSE}")          ; Disable Program Terminate Hotkey
    UnBind()
EndFunc

Func Fn_Terminate()
    Exit 0; Goodbye cruel world.    ; Will call Fn_AtExit to clean up (assuming OnAutoItExitRegister registered to Fn_AtExit)
EndFunc


Func GetFrameNo()                   ; Return VirtualDub Frame Number as string, else "" on Error
    Local $Frm = ""
    Local $E = ControlGetText($APPTitle,"", $VdFrameNo)
;     MsgBox($MB_SYSTEMMODAL, "", "The text in Edit1 is: " & $E)
    if StringLeft($E,6) = "Frame " Then             ; Case Insignificant
        $E= StringMid($E,7)                         ; Strip 'Frame '
        While $E <> "" and StringIsDigit(StringMid($E,1,1))
            $Frm = $Frm & StringMid($E,1,1)
            $E=StringMid($E,2)
        Wend
    EndIf
    if $Frm=="" then
        Beep(500,50)
    EndIf
    Return $Frm
EndFunc


Func GetRange()                     ; Return Selected Range as string, else "" on Error (comma separated range or single frame if only 1 frame ramge)
    Local $Rng = ""
    Local $S = ControlGetText($APPTitle,"", $VdRange)
    if StringMid($S,1,17) = "Selecting frames " Then   ; Case Insignificant
        $S = StringMid($S,18)                          ; Strip 'Selecting Range '
        While $S <> "" and StringIsDigit(StringMid($S,1,1))
            $Rng = $Rng & StringMid($S,1,1)
            $S=StringMid($S,2)
        Wend
        if StringMid($S,1,1) = "-" then
            Local $E=StringMid($S,2)                              ; Strip '-'
            Local $RngE=""
            if StringIsDigit(StringMid($E,1,1)) then
                While $E<> "" and StringIsDigit(StringMid($E,1,1))
                    $RngE = $RngE & StringMid($E,1,1)
                    $E=StringMid($E,2)
                Wend
                Local $IS=Number($Rng)
                Local $IE=Number($RngE)
                if $RangeEndIsExclusive <> 0 then
                    $IE = $IE - 1                                 ; VDub, End of Range is Exclusive
                EndIf
                if $IE < $IS Then
                    $Rng=""
                    ToolTip("Range Is Exclusive (No Frames)")
                    $ShowCnt = $ShowCntLimit * 2
                Elseif $IE > $IS Then
                    $Rng = StringFormat("%d,%d",$IS,$IE)
                EndIf
            EndIf
        Endif
    Else
        ToolTip("No Range")
        $ShowCnt = $ShowCntLimit * 2
    EndIf
    if $Rng=="" then
        Beep(500,50)
    EndIf
    Return $Rng
EndFunc


Func InsertFrame()
    Local $Frm=GetFrameNo()
    if $Frm <> "" Then

        ControlSend($EdTitle, "", $EditControl, $Frm, 1)      ; Send Frame Number
        ControlSend($EdTitle, "", $EditControl, "{ENTER}", 0) ; Send ENTER key, 1 line down.
    endif
EndFunc

Func InsertRange()
    Local $Rng=GetRange()
    if $Rng <> "" Then
        ControlSend($EdTitle, "", $EditControl, $Rng, 1)      ; Send Range
        ControlSend($EdTitle, "", $EditControl, "{ENTER}", 0) ; Send ENTER key, 1 line down.
    endif
EndFunc

Func DeleteFrame()
    Local $Frm=GetFrameNo()
    if $Frm <> "" Then
        ControlSend($EdTitle, "", $EditControl, "-" & $Frm, 1) ; Send -ve Frame Number
        ControlSend($EdTitle, "", $EditControl, "{ENTER}", 0)  ; Send ENTER key, 1 line down.
    endif
EndFunc

Func DeleteRange()
    Local $Rng=GetRange()
    if $Rng <> "" Then
        ControlSend($EdTitle, "", $EditControl, "-" & $Rng, 1) ; Send -ve Range
        ControlSend($EdTitle, "", $EditControl, "{ENTER}", 0)  ; Send ENTER key, 1 line down.
    endif
EndFunc
See UTILITY directory @ MediaFire in my sig below.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 23rd July 2019 at 21:01. Reason: Update
StainlessS is offline   Reply With Quote
Old 5th February 2016, 02:54   #2  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Thread renamed from VDM_Edkey to VD_Edkey,
Updated to VD_EdKey v1.00 (added Insert/Delete range).
VDM_EdKey now Deprecated but source (no exe) supplied in zip.

Code:
VDM_EdKey is deprecated, use VD_EdKey instead.
Reason, have added CTRL/SHIFT/INSERT Insert Range and CTRL/SHIFT/DELETE Delete Range, to code, however can only send VDMod script Editor
"CTRL/R" command to editor, and have no control over what happens. Script Editor CTRL/R only works for avs files and not AVI, also if zero
length range then will send nothing and for delete range sends just '-'. VDMod does not expose the range start and end selection range and
so we are basically left to what the script editor will allow, for this reason, we now consider VDM_EdKey as deprecated, although we still
include the source (but not executable) in the zip to allow for experimentation.
Post #1 updated.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 5th February 2016 at 03:14.
StainlessS is offline   Reply With Quote
Old 10th February 2016, 08:00   #3  |  Link
konstantin1
Registered User
 
Join Date: Mar 2014
Posts: 38
It was relatively simple to modify an existing python macro for avspmod, named as test.py

Code:
frame_number = str(avsp.GetFrameNumber())
with open("test.txt", "a") as myfile:
    myfile.write(frame_number+"\n")
And then assigning a hotkey (for example Ctrl+Y) for it in the "Options / Keyboard shortcuts" menu, as all macros are enlisted at the very bottom of the hotkey list in avspmod.
konstantin1 is offline   Reply With Quote
Old 10th February 2016, 08:40   #4  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Whatever floats your boat.
Is probably easier for users of AVSPMod, but I (and no doubt others) do not use AVSPmod.

EDIT: konstantin1, you might want to also add equivalent to insert range too for AVSPMod users (I dont speak parseltongue).
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 10th February 2016 at 09:10.
StainlessS is offline   Reply With Quote
Old 10th February 2016, 15:16   #5  |  Link
videoFred
Registered User
 
videoFred's Avatar
 
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
Quote:
Originally Posted by StainlessS View Post
but I (and no doubt others) do not use AVSPmod.
Why not? It makes changing filter parameter values so easy...

Fred.
__________________
About 8mm film:
http://www.super-8.be
Film Transfer Tutorial and example clips:
https://www.youtube.com/watch?v=W4QBsWXKuV8
More Example clips:
http://www.vimeo.com/user678523/videos/sort:newest
videoFred is offline   Reply With Quote
Old 10th February 2016, 18:30   #6  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
Originally Posted by videoFred View Post
Why not? It makes changing filter parameter values so easy...
Well I guess I'm just awkward.
I dont like the way it changes my scripts, and eg inserts filenames in scripts that I use with eg FSelOpen, ie breaks my scripts.
Code:
RT_FSelOpen(string "title"="Open",string "dir"="",string  "filt",string "fn="",bool "multi"=false,bool "debug"=false)

 Function to select EXISTING filename using GUI FileSelector.

 Title = Title bar text.
 Dir   = Directory, "" = Current
 Filt  = Lots, eg "All Files (*.*)|*.*"
         [Displayed text | wildcard] [| more pairs of Displayed text and wildcard, in pairs ONLY].
         first one is default.
 fn    = Initially presented filename (if any).
 multi = Multiply Select filenames. Allows selection of more than one filename at once.
 debug = Send error info to DebugView window.

 Returns
   int, 0, user CANCELLED.
   int, non zero is error (error sent to DebugView window).
   String, Filename selected, Chr(10) separated multiline string if MULTI==true (and multiple files selected).

   Example, to prompt for an AVI file and play it.
    avi=RT_FSelOpen("I MUST have an AVI",filt="Avi files|*.avi")
    Assert(avi.IsString,"RT_FSelOpen: Error="+String(avi))
    AviSource(avi)
I do have it installed, but rarely use it (not in last 12 months probably). Having said that, I used AVSEdit up until about 18 months ago and I hated it, as said, I'm a bit awkward.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 10th February 2016, 18:40   #7  |  Link
videoFred
Registered User
 
videoFred's Avatar
 
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
Quote:
Originally Posted by StainlessS View Post
Well I guess I'm just awkward
No, you are not
Quote:
I dont like the way it changes my scripts, and eg inserts filenames in scripts that I use with eg FSelOpen, ie breaks my scripts.
Ah yes, this can be a problem in certain scripts, I understand now.

Fred, who has just used ClipClop again with great results to combine ChangeFPS() with InterFrame()
__________________
About 8mm film:
http://www.super-8.be
Film Transfer Tutorial and example clips:
https://www.youtube.com/watch?v=W4QBsWXKuV8
More Example clips:
http://www.vimeo.com/user678523/videos/sort:newest
videoFred is offline   Reply With Quote
Old 10th February 2016, 18:50   #8  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Yo Fred, why dont you give SawBones/FrameSurgeon a try, (or write AVSPmod Macro/Hotkey to synthesize SawBones output commands for FrameSurgeon),
FrameSurgeon is really quite handy for fixing clips with bad frames, I would think that its just up your alley.

EDIT: FrameSurgeon uses ClipClop and Prune to replace/delete/interpolate frames/ranges.

http://forum.doom9.org/showthread.php?t=173158
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 10th February 2016 at 18:53.
StainlessS is offline   Reply With Quote
Old 10th February 2016, 19:47   #9  |  Link
videoFred
Registered User
 
videoFred's Avatar
 
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
Thank you for the hint, StainlessS. I will have a look at FrameSurgeon.

Fred.
__________________
About 8mm film:
http://www.super-8.be
Film Transfer Tutorial and example clips:
https://www.youtube.com/watch?v=W4QBsWXKuV8
More Example clips:
http://www.vimeo.com/user678523/videos/sort:newest
videoFred is offline   Reply With Quote
Old 11th February 2016, 01:46   #10  |  Link
konstantin1
Registered User
 
Join Date: Mar 2014
Posts: 38
Modified version of python script macro, collects frame numbers as I need, more structured and visible way,
100-200
350-500
etc...

maybe useful for others too:

Code:
frame_number = str(avsp.GetFrameNumber())

with open("test.txt", "r") as myfile:
    content=myfile.read()

if ((content=="") or (content[-1]=="\n")):
    to_write=frame_number+"-"
else:
    to_write=frame_number+"\n"

if not(content == ""):
	if content[-1]=="\n":
	    last_fn=content.split("\n",10000000)[-2].split("-",2)[-1]
	else:
	    last_fn=content.split("\n",10000000)[-1].split("-",2)[-2]
else:
    last_fn=""
    
if not(last_fn==frame_number):
    with open("test.txt", "a") as myfile:
        myfile.write(to_write)

Last edited by konstantin1; 11th February 2016 at 01:59.
konstantin1 is offline   Reply With Quote
Old 11th February 2016, 01:57   #11  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Nice one, I'm sure that will help many.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 11th February 2016, 06:30   #12  |  Link
konstantin1
Registered User
 
Join Date: Mar 2014
Posts: 38
Such range lists can be easily converted into avisynth scripts by custom programs, which can contain for example dissolve effects between the ranges, and apply extra filters for any of them (eg: slow motion). So it could be ideal for fan made movie trailer makers.
konstantin1 is offline   Reply With Quote
Old 11th February 2016, 15:07   #13  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
Originally Posted by konstantin1 View Post
100-200
350-500
etc...
Might be more convenient to use some other separator than hyphen '-', eg SPACE or comma ',', you prevent yourself from being able to use sign as in Trim second arg to represent eg frame count rather than last frame in range.

EDIT: ClipClop, Prune, FrameSel, SelectRanges, Reject Ranges all use either comma or SPACE separated ranges, or single number for 1
frame range. (Although ClipClop and Prune also require a clip index as they support up to 256 clips.
eg "2 100,-120", clip 2, 120 frames starting at frame 100).

EDIT: And DBSC, uses +ve frame number to insert a Scene Change, and -ve frame number to delete an erroneous SC detection,
in an Override command file.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 11th February 2016 at 15:18.
StainlessS is offline   Reply With Quote
Old 23rd July 2019, 18:10   #14  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
VD_EdKey v1.01 Update. See 1st post.

No longer works with VirtualDub standard, only VirtualDub2, also requires Windows NotePad.

EDIT: VirtualDubMod version AutoIt source removed from zip.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 23rd July 2019 at 18:37.
StainlessS is offline   Reply With Quote
Old 23rd July 2019, 21:00   #15  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
VD_EdKey v1.02 Update. See 1st post.

I made small change from update an hour or so ago, now also sends CTRL/S to NotePad window to save current Notepad file after sending frame or range.
Might save some work if you have a power brown out or something. SawBones already does this, will also prompt for filename in NotePad if not already given a name
or txt file not loaded from existing file.

To make changes in source yourself, Add below in Blue, same for other 3 Insert / Delete functions next it.

Code:
Func InsertFrame()
    Local $Frm=GetFrameNo()
    if $Frm <> "" Then
        ControlSend($EdTitle, "", $EditControl, $Frm, 1)      ; Send Frame Number
        ControlSend($EdTitle, "", $EditControl, "{ENTER}", 0) ; Send ENTER key, 1 line down.

        ToolTip("Sending NotePad Save")
        $ShowCnt = $ShowCntLimit * 2
        ControlSend($EdTitle, "", $EditControl, "^{s}" , 0)   ; Send CTRL/S to NotePad, ie Save (FileSelector pop-up if not named)       COOKED

    endif
EndFunc
zip re-upped to Mediafire and SendSpace.

EDIT: Earlier post today also changed the below, to that in blue, No longer using virtualdub standard, VDub2 only. [Had to make change also for SawBones,
as VDubs2 recently changed a control name and Sawbones no longer worked because of it.

Change this
Code:
Global Const $APP_NAME      = "VD_EdKey.Exe"
Global Const $APP_INI       = "VD_EdKey.ini"
Global Const $APPTitle      = "VirtualDub2"                     		 ; VirtualDub2 matches as "VirtualDub2" with traiiling "Build number" on title bar.
Global Const $Watching      = "    VD_EdKey is WATCHING    "
Global Const $VdFrameNo     = "[CLASS:Edit; INSTANCE:1]"               ; Frame Indicator box (bottom middle of window, just above status line)
Global Const $VDRange       = "[CLASS:msctls_statusbar32; INSTANCE:1]"   ; Frame Range (bottom Left of window, 'Selecting Frames...' when range selected)
to this
Code:
Global Const $APP_NAME      = "VD_EdKey.Exe"
Global Const $APP_INI       = "VD_EdKey.ini"
Global Const $APPTitle      = "VirtualDub2"                     		 ; VirtualDub2 matches as "VirtualDub2" with traiiling "Build number" on title bar.
Global Const $Watching      = "    VD_EdKey is WATCHING    "
Global Const $VdFrameNo     = "[CLASS:Static; INSTANCE:1]"               ; Frame Indicator box (bottom middle of window, just above status line)
Global Const $VDRange       = "[CLASS:msctls_statusbar32; INSTANCE:1]"   ; Frame Range (bottom Left of window, 'Selecting Frames...' when range selected)
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 23rd July 2019 at 21:48.
StainlessS is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 15:55.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.