Как вставить содержимое буфера обмена с помощью Sendmessage и WM_PASTE? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь отправить содержимое буфера обмена в другое приложение с кодом ниже.

Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Public Const WM_PASTE As Integer = &H302

   Dim nomejanela As String = ""
        For Each p As Process In System.Diagnostics.Process.GetProcesses
            If (p.MainWindowTitle <> "") Or (p.MainWindowTitle <> " ") Then
                If Mid(p.MainWindowTitle, 1, 9) = "ProfitPro" Then
                    nomejanela = p.MainWindowTitle
                End If
            End If
        Next

    Dim Profit As Integer = FindWindow(vbNullString, nomejanela)
    Dim Container As Integer = Win32.FindWindowEx(Profit, vbNullString, "MDIClient", vbNullString)
    Dim Editor As Integer = Win32.FindWindowEx(Container, vbNullString, "TLanguageEditorForm", vbNullString)
    Dim Painel As Integer = Win32.FindWindowEx(Editor, Nothing, "TPanel", "")
    Dim ToolBar As Integer = Win32.FindWindowEx(Painel, Nothing, "TTBToolBar", "ToolBar1")
    Dim EditorPainel As Integer = Win32.FindWindowEx(Editor, vbNullString, "TPanel", "EditorPanel")
    Dim EditorIntraPainel As Integer = Win32.FindWindowEx(EditorPainel, vbNullString, "TPanel", "EditorInnerPanel")
    Dim EditorEstrategia As Integer = Win32.FindWindowEx(EditorIntraPainel, vbNullString, "TLanguageEditor", "")
    SendMessage(EditorEstrategia, WM_PASTE, 0, 0)

Однако это не работает, ничего не происходит.

Разработано стороннее приложение в Delphi.

Я тестировал приведенный выше код с помощью Блокнота, и он отлично работал.

Это информация от инспектора:

ClassName:  "TLanguageEditor"
NativeWindowHandle: 0x405F2
ProviderDescription:    "[pid:8008,providerId:0x405F2 Main:Nested [pid:6472,providerId:0x405F2 Annotation(parent link):Microsoft: Annotation Proxy (unmanaged:UIAutomationCore.DLL); Main:Microsoft: MSAA Proxy (unmanaged:UIAutomationCore.DLL)]; Hwnd(parent link):Microsoft: HWND Proxy (unmanaged:uiautomationcore.dll)]"
IsPassword: false
HelpText:   ""
LegacyIAccessible.ChildId:  0
LegacyIAccessible.DefaultAction:    ""
LegacyIAccessible.Description:  ""
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: ""
LegacyIAccessible.Role: cliente (0xA)
LegacyIAccessible.State:    focalizado,focalizável (0x100004)
LegacyIAccessible.Value:    ""
IsAnnotationPatternAvailable:   false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable:   false
IsExpandCollapsePatternAvailable:   false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable:   false
IsItemContainerPatternAvailable:    false
IsLegacyIAccessiblePatternAvailable:    true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable:  false
IsRangeValuePatternAvailable:   false
IsScrollItemPatternAvailable:   false
IsScrollPatternAvailable:   false
IsSelectionItemPatternAvailable:    false
IsSelectionPatternAvailable:    false
IsSpreadsheetItemPatternAvailable:  false
IsSpreadsheetPatternAvailable:  false
IsStylesPatternAvailable:   false
IsSynchronizedInputPatternAvailable:    false
IsTableItemPatternAvailable:    false
IsTablePatternAvailable:    false
IsTextChildPatternAvailable:    false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available:    false
IsTogglePatternAvailable:   false
IsTransformPatternAvailable:    false
IsTransform2PatternAvailable:   false
IsValuePatternAvailable:    false
IsVirtualizedItemPatternAvailable:  false
IsWindowPatternAvailable:   false
IsCustomNavigationPatternAvailable: false

Как я могу отправить содержимое буфера обмена в этом редакторе?

...