Тема: Notepade и буфер обмена

Как вставить в открытый програмным путём notepadовский документ данные из буфера обмена?
Ниже приведённый код не всегда действует корректно. Иногда вставляется просто буква "V".
y = Shell("notepad.exe c:\temp\temp.txt", vbNormalFocus)
AppActivate y
SendKeys "^(V)"
Вот такой вопрос.

Re: Notepade и буфер обмена

Когда окно notepad?а не имеет фокуса ввода, то тогда твой код терпит неудачу. Нижеприведенный код в случае неудачи не вставляет в notepad символ ?V?:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Sub Exemple()
Dim y As Long, hwnd As Long
y = Shell("notepad.exe", vbNormalFocus)
hwnd = FindWindow("Notepad", vbNullString)
AppActivate y
If hwnd <> 0 Then
    SendMessage hwnd, 273, 770, 0 'WM_COMMAND = 273, Ctrl+V = 770
End If
End Sub

Re: Notepade и буфер обмена

Спасибо!
Работает как часы.
Кстати, где можно узнать про SendMessage и параметры к ней?

Re: Notepade и буфер обмена

О SendMessage можно узнать в MSDN'е (3 шт. CD). Можешь вместо нее использовать PostMessage, она возвращает управление сразу, не ждет обработки сообщения, в твоем случае - WM_COMMAND.