我用iCur=SendMessage(NotePadwnd,EM_GETSEL,0,0);应该是当前光标的所在位置
SendMessage(NotePadwnd,EM_SETSEL,iCur,9);却不是想要的结果,为什么,难道消息不对,
3 个解决方案
#1
你是想要在编辑框中选中一些文本信息吗?
#2
其他文本,你看这消息对吗,是获得光标位置吗
#3
你说的那个叫Caret,通过EM_GETSEL等不是正规的做法。
有两个方案,我简述一下:
方案一:
1、找到目标窗口,FindWindow GetForegroundWindow 之类
2、找到目标线程id,GetWindowThreadProcessId(不通过窗口直接获取线程id也行)
3、将当前线程和目标线程AttachThreadInput
4、GetCaretPos,获取输入光标的位置
5、ClientToScreen转化到屏幕位置
方案二:
1、获取目标线程(同上)(如果是处理当前前台线程则不需要)
2、获取线程GUI信息,GetGUIThreadInfo
3、得到GUITHREADINFO结构
4、hwndCaret和rcCaret分别是输入光标所在窗口和位置
有两个方案,我简述一下:
方案一:
1、找到目标窗口,FindWindow GetForegroundWindow 之类
2、找到目标线程id,GetWindowThreadProcessId(不通过窗口直接获取线程id也行)
3、将当前线程和目标线程AttachThreadInput
4、GetCaretPos,获取输入光标的位置
5、ClientToScreen转化到屏幕位置
方案二:
1、获取目标线程(同上)(如果是处理当前前台线程则不需要)
2、获取线程GUI信息,GetGUIThreadInfo
3、得到GUITHREADINFO结构
4、hwndCaret和rcCaret分别是输入光标所在窗口和位置
#1
你是想要在编辑框中选中一些文本信息吗?
#2
其他文本,你看这消息对吗,是获得光标位置吗
#3
你说的那个叫Caret,通过EM_GETSEL等不是正规的做法。
有两个方案,我简述一下:
方案一:
1、找到目标窗口,FindWindow GetForegroundWindow 之类
2、找到目标线程id,GetWindowThreadProcessId(不通过窗口直接获取线程id也行)
3、将当前线程和目标线程AttachThreadInput
4、GetCaretPos,获取输入光标的位置
5、ClientToScreen转化到屏幕位置
方案二:
1、获取目标线程(同上)(如果是处理当前前台线程则不需要)
2、获取线程GUI信息,GetGUIThreadInfo
3、得到GUITHREADINFO结构
4、hwndCaret和rcCaret分别是输入光标所在窗口和位置
有两个方案,我简述一下:
方案一:
1、找到目标窗口,FindWindow GetForegroundWindow 之类
2、找到目标线程id,GetWindowThreadProcessId(不通过窗口直接获取线程id也行)
3、将当前线程和目标线程AttachThreadInput
4、GetCaretPos,获取输入光标的位置
5、ClientToScreen转化到屏幕位置
方案二:
1、获取目标线程(同上)(如果是处理当前前台线程则不需要)
2、获取线程GUI信息,GetGUIThreadInfo
3、得到GUITHREADINFO结构
4、hwndCaret和rcCaret分别是输入光标所在窗口和位置