View Single Post
Old 07-05-2016, 12:00 PM
Rhudi's Avatar
Rhudi Rhudi is offline
Registered User
Join Date: Jul 2013
Location: Greenville, SC
Posts: 84
Window Focus and Clipboard

I have a script that runs just fine (so, why am I bothering anyone?)

Here is the issue...

In the following code snippit:
    crt.Session.SetStatusText("Receiving Data...")
    crt.Screen.Send "cat " & strDevice & vbCr
    intResult = crt.Screen.WaitForStrings("configs $ ", "cat: ", 250)

    Select Case intResult
        Case 0,2 ' Timeout or error from cat command
            Exit Sub
    End Select
    crt.Screen.SendSpecial "MENU_SELECT_ALL"
    crt.Screen.SendSpecial "MENU_COPY"
    arrData = Split(crt.Clipboard.Text, vbCrLf)
    crt.Screen.Send "cd" & vbCr & _
                    "clear" & vbCr
If SecureCRT looses keyboard focus, the "Select All" and "Copy" commands break.

Also, if I have multiple tabs open in SecureCRT, the "Select / Copy" isn't getting data from the correct tab.

Here is a completely different way that doesn't exhibit that symptom:
    crt.Session.SetStatusText("Receiving Data...")
    arrData = Split(CaptureOutputOfCommand("cat " & strDevice, sProwlName & ":"), vbCrLf)
And, the Function:
Function CaptureOutputOfCommand(szCommand, szPrompt)
    crt.Screen.Send szCommand & vbCr            ' Send command to the router.
    crt.Screen.WaitForString szCommand & vbCrLf ' Wait for the Command to be echoed by router.
    CaptureOutputOfCommand = crt.Screen.ReadString(szPrompt)            
End Function
This second method seems to slow down if there is a lot of data coming in (almost as if memory is filling up).


So, my question is: Which method is best? And, in the first method, how could I avoid the "focus" issue (should I specify the tab or something)?

A coworker helped me. "crt.Window.Activate", right before the "Select/Copy".


Since this is faster, I'll go with the first way is better.

Last edited by Rhudi; 07-05-2016 at 02:44 PM. Reason: Corrected "Focus" issue
Reply With Quote