Как прочитать содержимое экрана из другого приложения [Office Communicator

StackOverflow https://stackoverflow.com/questions/3764208

Вопрос

Зная HWND окна, как я могу прочитать содержимое этого? Прежде чем кто-нибудь спросит меня, я пытаюсь получить текст, который использовался в окне коммуникатора.

Ниже приведен код, который я нашел в Интернете. Код не мой.

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace EventFun
{
class EventHookUp
{
    CommunicatorAPI.Messenger mCommunicator = null;

    static void Main(string[] args)
    {
        EventHookUp hu = new EventHookUp();
        hu.InitializeEventHocks();
        Console.ReadKey();
    }

    public void InitializeEventHocks()
    {
        mCommunicator = new CommunicatorAPI.Messenger();
        mCommunicator.OnIMWindowCreated += new CommunicatorAPI.DMessengerEvents_OnIMWindowCreatedEventHandler(mCommunicator_OnIMWindowCreated);
        mCommunicator.OnIMWindowDestroyed += new CommunicatorAPI.DMessengerEvents_OnIMWindowDestroyedEventHandler(mCommunicator_OnIMWindowDestroyed);
    }

    void mCommunicator_OnIMWindowCreated(object pIMWindow)
    {
        CommunicatorAPI.IMessengerConversationWndAdvanced stpIMWindow = pIMWindow as CommunicatorAPI.IMessengerConversationWndAdvanced;
        //stpIMWindow.History;
        long Hwnd = (long)stpIMWindow.HWND;
        Console.WriteLine("New IM Window Created : {0}", Hwnd);

        CommunicatorAPI.IMessengerContacts contactList = (CommunicatorAPI.IMessengerContacts)stpIMWindow.Contacts;
        StringBuilder sb = new StringBuilder();
        foreach (CommunicatorAPI.IMessengerContact imc in contactList)
        {
            sb.Append(imc.FriendlyName);
            sb.Append(Environment.NewLine);
        }
        Console.WriteLine(sb.ToString());
    }

    void mCommunicator_OnIMWindowDestroyed(object pIMWindow)
    {
        Console.WriteLine("IM Window Destroyed.");
    }
}
}
Это было полезно?

Решение

Похоже, вы пытаетесь получить историю текста разговора из окна разговора? Если так, Джордж Дурзи. имеет отличное Сообщение блога на этом.

Другие советы

Поскольку этот пост блога недоступен, я использовал ниже метод для извлечения истории разговора:

object obj = msgrAdv.StartConversation(
    CONVERSATION_TYPE.CONVERSATION_TYPE_IM, // Type of conversation
    sipUris, // object array of signin names for having multiple conversations or just a string
    null,
    "Test",
    "1",
    null);

 imWindowHandle = long.Parse(obj.ToString());

 if (imWindow == null) //If there is already an open window...
 {
     imWindow = (IMessengerConversationWndAdvanced)msgrAdv.InstantMessage(sipUris);
 }
 //else there was no open window, we have opened the window using "msgrAdv.StartConversation" so there is a imWindow associated which is implemented in communicator_OnIMWindowCreated.
 //and then...
string history = imWindow.History;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top