| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2454 人关注过本帖
标题:[求助]怎样实现粘贴功能?
取消只看楼主 加入收藏
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 

找到了一篇资料可惜不是C#的,不太会弄:

调用SendMessage API就能够向任何带有hWnd属性的表单或者控件发送Windows消息。很多控件内置有对特定消息的响应机制。使用这一机制,你在自己的Visual Basic 6应用程序里很容易就能够实现剪切、复制和粘贴的功能。


要使用这一技巧,你就需要声明用于剪切、复制和粘贴的常数:

Private Const WM_COPY = &H301
Private Const WM_CUT = &H300
Private Const WM_PASTE = &H302

然后,声明对SendMessage API的调用:

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByValhWnd As Long, _
ByValwMsg As Long, ByValwParam As Long, lParam As Any) As Long

HWnd自变量能够接受消息发送的目的控件的句柄,而wMsg自变量会接受一个表明要被发送的是哪个对象的常数。WParam和lParam自变量被用来把其他信息同消息一起传递,但是不对WM_CUT、WM_COPY或者WM_PASTE使用。

下面是从菜单点击事件调用SendMessage API的代码:

Private Sub mnuCopy_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_COPY, 0, 0)
End Sub

Private Sub mnuCut_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_CUT, 0, 0)
End Sub

Private Sub mnuPaste_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_PASTE, 0, 0)
End Sub


2007-01-22 11:17
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 

我照着大概改了一下不成功啊

[DllImport("user32.dll", EntryPoint = "SendMessageA")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);

private const WM_COPY= &H301 ;//c#里缺乏定义
private const WM_CUT = &H300 ;//
private const WM_PASTE = &H302;//

调用:

IntPtr hLogin = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Edit", null); //获取任意窗口Edit句柄
if (hLogin.ToInt32() != 0)//判断获取成功
{
string s = this.khmc.Text.Trim();
SendMessage(hLogin,IntPtr.Zero, IntPtr.Zero, s);//向特定Edit粘贴,但没起到作用:(
}


2007-01-22 11:22
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
问题还没解决,顶上来!

2007-03-09 12:36
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
哈雷彗星,能详细说说如何获得鼠标位置的hwnd?

2007-03-09 13:22
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
我彻底被打败了,那个破程序不知是用什么做的,竟然都放在一个控件里面,抓不到句柄,SPY++也抓不到,总共只能看到一个:
类:pbdw90,标题:none,句柄:000907E6

看来这个方法不能用了。


2007-03-09 14:08
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


2007-03-09 14:45
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
看来要用钩子了...加油

2007-03-09 21:14
快速回复:[求助]怎样实现粘贴功能?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029203 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved