Jump to content

Recommended Posts

Posted

Hi,

The idea is this: once the mouse selects some text, the script gets a notification and then sends a Ctrl-C to copy it.

Usually a mouse can select some text in 2 ways: 1. hold down left button and drag. 2. double-click or triple-click some text. So the questions are:

1. How do I know if some texts are selected? The only way I can figure out is to write a callback function of a message like MOUSE_SECONDARY_UP, and then tests whether a text is selected in the foreground window.

2. How can I get the selected if I know some texts are selected? I tried the following two ways:

a. Use ControlCommand ( "title", "text", controlID, "GetSelected"). But this seems to only work on an Edit. I.e. If I select some text in a Firefox window, the function does not work.

b. Use _GUICtrlEdit_GetSel(). This works only on Edit too. BTW, the function returns only the starting/end position of selected text, how can I know the content of the selected text?

Thank you in advance!

Posted

As you mentioned, you can check if mouse was released, and then just check selected text like this:

MsgBox(64, "Results", "There is text selected? " & _IsSelectedText())

Func _IsSelectedText()
    Local $iRet = False
    Local $sOld_Clipboard_Data = ClipGet()
    
    ClipPut("")
    Send("^{Insert}")
    
    If ClipGet() <> "" Then $iRet = True
    ClipPut($sOld_Clipboard_Data)
    
    Return $iRet
EndFunc

Or check it in a loop every 'N' seconds.

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted

As you mentioned, you can check if mouse was released, and then just check selected text like this:

MsgBox(64, "Results", "There is text selected? " & _IsSelectedText())

Func _IsSelectedText()
    Local $iRet = False
    Local $sOld_Clipboard_Data = ClipGet()
    
    ClipPut("")
    Send("^{Insert}")
    
    If ClipGet() <> "" Then $iRet = True
    ClipPut($sOld_Clipboard_Data)
    
    Return $iRet
EndFuncoÝ÷ ØêÜç$اjZ(¥ëÞ¯-ý7lyÊ'vÏêº^"׬µçmç(uçî®Ø^­©Ý~§vØZ¶+wöÆÞ¶×«¶u«%yê[zÜzp­®PÐ¥µ«­¢+Ø
±¥ÁAÕÐ ÅÕ½ÐìÅÕ½Ðì¤(M¹ ÅÕ½Ðíyí%¹ÍÉÑôÅÕ½Ðì¤((M±À ÄÀ¤((%
±¥ÁÐ ¤±ÐìÐìÅÕ½ÐìÅÕ½ÐìQ¡¸ÀÌØí¥IÐôQÉÕ

Otherwise ClipGet() may get an empty string.

On my Pentium M 1.5G Hz CPU, a Sleep(1) will do. I don't know whether we should increase the sleep time on a lower CPU.

Posted

I think the better solution for slow CPU is waiting the data in clipboard and set a timer...

MsgBox(64, "Results", "There is text selected? " & @CRLF & @CRLF & _IsSelectedText())

Func _IsSelectedText($iSleep=10)
    Local $iRet = False
    Local $sOld_Clipboard_Data = ClipGet()
    
    ClipPut("")
    Send("^{Insert}")
    
    Local $sSelected_Data = ClipGet()
    Local $iTimer = TimerInit()
    
    While $sSelected_Data = "" And TimerDiff($iTimer) < $iSleep
        $sSelected_Data = ClipGet()
        Sleep(1)
    WEnd
    
    If $sSelected_Data <> "" Then $iRet = True
    ClipPut($sOld_Clipboard_Data)
    
    Return $iRet
EndFunc

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...