说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

将我的程序的文本直接送到WORD中(不用粘贴)-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
将我的程序的文本直接送到WORD中(不用粘贴)-VB资料


程序只有一个form,其上有一个text。我想实现
的功能如下
首先调用miscrosoft word或其他文字处理软件,
新建一个文档,然后运行程序,在文本框中输入文本。
如果我这时候点击word的话(激活),怎么将文本框
中输入的文字粘贴到word中。直接粘贴,不用ctrl-v.


在"唯一"的form窗体中再添加一个timer控件(interval=200,如果运行不正常,可适当加大此值), (当然还
有一个text),接着代码如下∶
Private Declare Function GetForegroundWindow& Lib "user32" ()
Private Declare Function GetWindowText& Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte,
_
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function MapVirtualKey& Lib "user32" Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long)

Private Const VK_CONTROL& = &H11 'ctrl键的虚拟键值
Private Const KEYEVENTF_KEYUP% = &H2
Private Const VK_V& = &H56 'V键的ascii码值(虚拟键值)

Private Sub Text1_Change()
Timer1.Enabled = True
Clipboard.Clear
Clipboard.SetText Form1.Text1.Text
End Sub

Private Sub Timer1_Timer()
Dim dl1&, dl2&
Dim Canp As String * 255
dl1& = GetForegroundWindow&() '获取当前活动窗口的句柄
dl2& = GetWindowText&(dl1&, Canp$, 255) '获取窗口的标题
If Left(Canp$, 14) = "Microsoft Word" Then
MyCapture 1
Timer1.Enabled = False
End If
End Sub
Public Sub MyCapture(ByVal mode%) '生成一次模拟击键∶Ctrl+V
Dim altscan%
Dim dl&
Dim snapparam%
altscan% = MapVirtualKey(VK_CONTROL, 0)
keybd_event VK_CONTROL, altscan, 0, 0
keybd_event VK_V, 0, 0, 0
keybd_event VK_CONTROL, altscan, KEYEVENTF_KEYUP, 0
End Sub
注∶本例程只适用于microsoft word.要适用于其他文字处理程序,请
修改程序中的 If Left(Canp$, 14) = "Microsoft Word" Then 条件检测。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘