标题:[求助]怎样实现粘贴功能?
只看楼主
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
得分:0 
以下是引用YSKING在2007-1-19 17:14:35的发言:

那就调用粘贴那方法不是行了吗

就是不会啊。怎么调用粘贴那方法?


2007-01-21 13:08
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 

调用粘贴板?


飘过~~
2007-01-21 21:20
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
得分:0 
以下是引用bygg在2007-1-21 21:20:27的发言:

调用粘贴板?

1、
Clipboard.SetDataObject(errormj, true);//复制内容到剪贴板
2、
//剪贴版粘贴到光标处?
//但是直接调用系统的粘贴功能(直接可以粘贴到windows的其他地方)怎么调用?


2007-01-22 08:51
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
得分:0 
谢谢哈雷彗星!
可问题是这个handle不是固定的(比如:word、excel、写字本、Ie浏览器地址栏.....)需要我光标定位的位置上。

2007-01-22 09:41
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
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 
他用的FROMPOINT是根据MOUSE的POINT来的,和我发的那SPY++一样的,依我看你不是根据MOUSE来的,如果是的,你可以参考我那个程序

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

看来这个方法不能用了。


2007-03-09 14:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-116912-1-1.html




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

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