Обмен данными с элементом страницы

Тема в разделе ".NET", создана пользователем Infra-Red, 2 авг 2007.

Статус темы:
Закрыта.
  1. Infra-Red

    Infra-Red Гость

    Всем привет!

    Пишу прогу на C#.

    Есть такое задание - имеем некую страницу, а на ней форму с текстом с возможностью редактирования(такая же как и на форуме когда тему создаешь) нужно обратиться к этой форме, считать с нее текст в массив или пох куда, отредактировать его и обратно вписать в форму, и нажать на кнопочку сейв.(на рисунке пример формы к которой обращаться надо) [​IMG] визуально это видеть не надо, просто програмно сделать. Ступор в том, что не знаю как обратиться к форме, считывать и записывать в нее...помогите плиз советом хоть в каком направлении копать или примером каким-нить, заранее спасибо.
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Не совсем понятно, куда ты собираешься сливать содержимое поля и что думаешь с ним делать.
    Первое, что приходит в голову - использование JavaScript. У поля есть его id, по которому всегда можно обратиться к полю с помощью метода document.getElementById, считать текст, перемолоть его, как надо, вставить обратно. Тут вся обработка происходит на клиенте, так что не знаю, подойдет или нет.
    Можно модернизировать данный вариант, задействовав AJAX: тут надо копать в сторону JavaScript-объекта XmlHttpRequest (вроде так).
    Еще вариант: просто засабмитить форму, обработать ее на сервере, занести в нужные поля нужные значения, а потом вернуть пользователя на эту же страницу (насколько помню, он по умолчанию туда вернется, если ты явно не сделал Redirect).
     
  3. Infra-Red

    Infra-Red Гость

    Тут не важно куда считывать. Как считывать я представляю, я просто не знал как обратиться к определенному полю на страничке, ты вроде как подсказал, щас покопаю в этом направлении, а если есть какой-то примерчик этого было бы вообше супер :rolleyes: А вообше програма должна заменять "нот фаунд" на "фаунд" в случае фаунд если заметили )
     
  4. Infra-Red

    Infra-Red Гость

    а document.getElementById это метод какого класса? че-то я ничего такого нарыть не могу, заранее извиняюсь если че не так, в шарпе я новичек и еще слабовато разбираюсь.
     
  5. Infra-Red

    Infra-Red Гость

    попытка номер 2 ))

    В реале все происходит так - я захожу на страничку, заменяю некоторые значения нажимаю на кнопку "сейв" и страничка по новой сохраняется(я так понимаю на сервере). Мне надо чтоб моя программа заходила на ту же страничку и делала тоже самое. Процесс аналогичен тому как вы отвечаете в теме - набираете текст и жмете на "отправить"...а поблема в том, что я не знаю как обратиться к определенной форме. считать хтмпл текст и вынуть оттуда нужное это пол беды, но как потом обратно записать то, что я наредактирую...пока я вижу решение в том, чтоб обратиться в нужную форму, записать данные в нее и програмно нажать "сейв"
     
  6. mms

    mms Гость

    Это на чужой странице ваша программа что-то должна делать программно, я так понял?

    Если да, то:
    1. Находим хэндл эксплорера.
    2. Находим в эксплорере окно по укзанному пути - "Shell DocObject View" -> "Internet Explorer_Server" -> "Shell Embedding"
    3. Получаем IHTMLDocument2 интерфейс:

    Код (Text):
    IHTMLDocument2 ptr;
    IntPtr hWnd = GetShellEmbaddingWindow();   
    uint nMsg = Win32.RegisterWindowMessage("WM_HTML_GETOBJECT");
    UIntPtr lRes;
    if ( Win32.SendMessageTimeout(hWnd, nMsg, UIntPtr.Zero, IntPtr.Zero,
    Win32.SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, out lRes) == IntPtr.Zero )
    return null;

    ptr = Win32.ObjectFromLresult(lRes, typeof(mshtml.IHTMLDocument2).GUID, IntPtr.Zero) as IHTMLDocument2;

    return ptr;
    Win32 это класс со статическими Win32 API функциями.

    4. Читаем литературу как работать с IHTMLDocument2 интерфейсом :D

    Надеюсь поможет.
     
  7. mms

    mms Гость

    Это оптимальный вариант, а то скоро пойдут темы как картинки с циферками криво нарисованными разобрать программно :D
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей