永发信息网

求救!用VB怎么实现和按Ctrl+C(复制)一样的效果(不用sendkey或keybd_event)?

答案:1  悬赏:60  手机版
解决时间 2021-02-14 19:29
如题
想制作一个文本采集助手程序。该程序的功能是自动复制文本编辑器或网页上(凡是可以高亮选取的)的文本到剪贴板。实现方法是每隔一段时间就执行系统的复制命令。如果是手动的话,我们知道安Ctrl+C可以实现。在任何的windows程序里,这都是通用的。我知道可以用sendkey "^c" 或 模拟键盘事件 keybd_event。但这只不过不是人工按键罢了,实际上还是要执行背后的真正命令。我想知道,能不能用vb实现直接发出复制命令,而不是模拟按键。不用sendkey或keybd_event,也不是Clipboard.SetText(这个好像只能操作程序本身的某个控件里的信息)。

求求高手帮忙!困扰很久了,寝食难安啊!

回答好的会加分,至少加50!拜托了,只为了撞分的就别回答了,以提高知道的质量

是否可以用 SendMessage ( hwnd,WM_COPY,0,0)? 我试过,没反应,不知该怎么用

________________
#1:额……sendmessage的用法应该没问题,hwnd是怎么抓的?
A:这是个问题。我原来用GetForegroundWindow,有位高手说那样不行。要取得当前获得焦点的“子窗体”的句柄要GetCursorPos+WindowFromPoint。是不是要直接发送复制命令的话,就唯有从sendmessage下手了?
最佳答案
额……sendmessage的用法应该没问题,hwnd是怎么抓的?

A:这是个问题。我原来用GetForegroundWindow,有位高手说那样不行。要取得当前获得焦点的“子窗体”的句柄要GetCursorPos+WindowFromPoint。是不是要直接发送复制命令的话,就唯有从sendmessage下手了?

RE:嗯,getforegroundwindow配合FindWindowEx使用吧,复制不是Sendmsg就是postmsg,sendmsg是没错的

google到了一段代码,大意是使用当前激活窗体的句柄发一个GetFocus,同样得到当前激活控件的句柄,并把功能封在GetFocusEx里,c++的代码,不改vb了,应该看得懂,所用API:
GetWindowLong,SetWindowLong,GetFocus,SendMessage
,RegisterWindowMessage,CallWindowProc,GetForegroundWindow
所以说是个很闹心的东西

static WNDPROC g_pOldWndProc = NULL;
static UINT g_uGetFocusMessage = RegisterWindowMessage(_T("SpecialGetFocusMessage"));
static LRESULT WINAPI GetFocusWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ if(uMsg == g_uGetFocusMessage) { return (LRESULT)GetFocus(); } else { return CallWindowProc(g_pOldWndProc, hWnd, uMsg, wParam, lParam); }}

HWND GetFocusEx()
{ HWND hWnd = GetForegroundWindow();
if(!IsWindow(hWnd)) return NULL;
g_pOldWndProc = (WNDPROC)GetWindowLong(hWnd, GWL_WNDPROC); SetWindowLong(hWnd, GWL_WNDPROC, (LONG)GetFocusWindowProc);
HWND hResult = (HWND)SendMessage(hWnd, g_uGetFocusMessage, 0, 0); SetWindowLong(hWnd, GWL_WNDPROC, (LONG)g_pOldWndProc);
g_pOldWndProc = NULL;
return hResult;}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
sim卡松了 拔出来再插进去竟然显示没有。好几
吴大山地址有知道的么?有点事想过去
街跑摩托车是国际档还是循环档
求这个名字的中文翻译→坂本さえ
没有网络的情况下如何让xshell连接上虚拟机的
大宅院客栈地址有知道的么?有点事想过去
DNF装备锻造阶段加独立攻击那在哪?
修二和彰唱的青春アミーゴ的歌词谁有?
下列说法中正确的有()。A.狭义的心理咨询主要
康诚医药地址有知道的么?有点事想过去
一般墙体大模板在常温条件下,混凝土强度最少
广西平南2016年招聘中小代课教师吗
请问挖机找代班师傅,代班费是挖机老板出,还
手机cpu型号:helix20是否可以?
联览招待所地址在哪,我要去那里办事
推荐资讯
右边腮帮子疼怎么回事
国信魏圩希望小学地址有知道的么?有点事想过
【江苏自学考试网】江苏自学考试有年限限制吗
我有一套4.1音箱,该如何连接?
雅阁茶艺地址在哪,我要去那里办事
我家仓鼠尾巴周围湿湿的,可是又没有拉稀,怎
问道现在版本的电精强10在进化雷怪之后还有强
男朋友 他说什么都不要只要我一个就够了是什
镇江市丹徒区地址在哪,我要去那里办事
(1)滑动变阻器滑片与电阻丝之间是否绝缘 (
多星电器NO.JN003地址在哪,我要去那里办事
【有刺的植物】下列植物中的刺属于叶变态的有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?