Как скопировать в буфер содержимое ЛЮБОГО окна?

Тема в разделе "WASM.WIN32", создана пользователем Dmitri, 24 окт 2005.

  1. Dmitri

    Dmitri New Member

    Публикаций:
    0
    Регистрация:
    1 сен 2004
    Сообщения:
    15
    Коллеги, помогите: мне надо скопировать в буфер выделенный фрагмент в окне любого приложения.



    Нашел два способа, но один не работает, второй работает только для выделений в Edit. А мне надо, например, скопировать в буфер выделение части web страницы из окна браузера.



    1)


    Код (Text):
    1.  
    2. IntPtr handle = IntPtr.Zero;
    3. GetWindowThreadProcessId(GetActiveWindow(), handle);
    4. SendMessage((int)GetActiveWindow(), WM_COPY, 0, 0);
    5.  




    2)


    Код (Text):
    1.                     SetForegroundWindow(GetActiveWindow());
    2. SendKeys.Send("^C");
    3.  




    Пожалуйста, помогите - как мне скопировать в буфер выделение фргамента в других приложениях?
     
  2. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    в общем случае задача не решается

    можно попробовать записать сообщения , которые получает окно

    и попытаться их воспроизвести

    winspy winspector
     
  3. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Я конечно не знаю, с какими целями ты пытаешься скопировать, но сразу скажу, что "у любого" не получится,

    например у GUI от ZoneLabs:) Некоторые окна вообще не реагируют на WM_GETTEXT, некоторые проверяют, какой-такой процесс шлет, если не свой, то в топку. В общем придется или обходится самому либо, таки рассказывать, что такое ты злодейское задумал.