Testing on Scratchpad ahk_class MozillaWindowClass.
The following gave numbers if no characters were selected,
but failed if one or more characters were selected:
MsgBox % A_CaretX " "A_CaretY
Btw I would be interested if someone has been able to
retrieve such information regarding carets/selection,
via the Acc library, or UI Automation.
This kind of thing is easy on Edit controls and COM.
E.g. Edit controls: EM_GETSEL.
E.g. Internet Explorer: carets in textboxes: selectionStart, selectionEnd.
Or if someone knows of a way to grab the text
from Excel 2003/2007 when editing macros.
I had an issue with the Home key, because I wanted to select
the whole line, not from the first non-whitespace character onwards.
==================================================
To literally answer the title of your question.
'how to get the selected text without using send ^{c}?':
ControlGetText, COM (Excel/Word/IE), the Acc library/AccViewer,
messages like WM_GETTEXT, LVM_GETITEMTEXT.
Acc library (MSAA) and AccViewer download links - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=6&t=26201
GUI COMMANDS: COMPLETE RETHINK - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=5&t=25893
JEE_TreeviewItemGetText