PDA

View Full Version : مشكل تابع SendMessage با Copy و Paste



شاپرک
شنبه 29 مرداد 1390, 12:46 عصر
تابع SendMessage براي Copy و Paste عمل نميكنه!!!! كد من :
براي Copy از برنامه Notepad اي كه باز است و متن تايپ شده دارد:


Clipboard.Clear()
Dim WindowHwnd As Long
WindowHwnd = FindWindow(vbNullString, "Untitled - Notepad")
SetForegroundWindow(WindowHwnd)
Dim ControlHwnd = FindWindowEx(WindowHwnd, 0, "Edit", vbNullString)
If Not ControlHwnd = 0 Then
SendMessage(ControlHwnd, WM_COPY, 0, 0)
End If


باز كردن Notepad و سپس Paste نمودن متن txt1


Clipboard.Clear()
Clipboard.SetText(txt1.Text, TextDataFormat.Text)
Dim proc As Process = Process.Start("Notepad.exe")
Clipboard.SetDataObject(Clipboard.GetText)

Dim WindowHwnd As Long
WindowHwnd = FindWindow(vbNullString, "Untitled - Notepad")
SetForegroundWindow(WindowHwnd)
Dim ControlHwnd = FindWindowEx(WindowHwnd, 0, "Edit", vbNullString)
System.Threading.Thread.Sleep(300)
If Not ControlHwnd = 0 Then
SendMessage(ControlHwnd, WM_PASTE, 0, 0)
End If




در صورتيكه Paste بوسيله SendKey كار ميكنه!!!


SendKeys.Send("^V")

كسي تابحال از اين تابع براي Copy و Paste استفاده كرده؟ ميشه لطفا يك نمونه بگذاريد؟

پي نوشت : تمامي تاپيك هاي مربوطه رو زير و رو كردم لطفا نگيد جستجو كن!!!

MohsenPS
یک شنبه 30 مرداد 1390, 03:39 صبح
سلام؛

براي Copy از برنامه Notepad اي كه باز است و متن تايپ شده دارد:



Clipboard.Clear()
Dim WindowHwnd As Long
WindowHwnd = FindWindow(vbNullString, "Untitled - Notepad")
SetForegroundWindow(WindowHwnd)
Dim ControlHwnd = FindWindowEx(WindowHwnd, 0, "Edit", vbNullString)
If Not ControlHwnd = 0 Then
SendMessage(ControlHwnd, &H304, 0, 0)
SendMessage(ControlHwnd, &H304, 0, 0)
SendMessage(ControlHwnd, WM_COPY, 0, 0)
End If




باز كردن Notepad و سپس Paste نمودن متن txt1



Dim proc As Process = Process.Start("Notepad.exe")
System.Threading.Thread.Sleep(300)
Clipboard.Clear()
Clipboard.SetText(txt1.Text)
Dim WindowHwnd As Long
WindowHwnd = FindWindow(vbNullString, "Untitled - Notepad")
SetForegroundWindow(WindowHwnd)
Dim ControlHwnd = FindWindowEx(WindowHwnd, 0, "Edit", vbNullString)
If Not ControlHwnd = 0 Then
SendMessage(ControlHwnd, WM_PASTE, 0, 0)
End If

شاپرک
یک شنبه 30 مرداد 1390, 07:55 صبح
اونوقت شما اينو امتحان كرديد و جواب داد؟!!!!!!!!!!!!!!!!!!!!
اگه اينطوره نمونه رو بذاريد تا من هم امتحان كنم!