Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 17.11.2017, 06:00   #1
Goldz60
 
Регистрация: 10.06.2010
Сообщений: 9
Репутация: 10
По умолчанию Выпадающий список,использование в браузере

Поставлена задача
Создать выпадающий список в программе(к примеру Excelили написанной на С++) с последующим использованием в браузере для заполнения полей в форме
Прошу участников форума поделиться своими соображениями в решении этой задачи

Последний раз редактировалось Goldz60; 17.11.2017 в 06:39. Причина: Дописка
Goldz60 вне форума   Ответить с цитированием
Старый 17.11.2017, 08:11   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,212
Репутация: 1578
По умолчанию

Цитата:
Сообщение от Goldz60 Посмотреть сообщение
(к примеру Excel или написанной на С++) с последующим использованием в браузере
Это как?
waleri вне форума   Ответить с цитированием
Старый 17.11.2017, 08:15   #3
Goldz60
 
Регистрация: 10.06.2010
Сообщений: 9
Репутация: 10
По умолчанию

Хорошо, скажем так
Нужно из программы написанной на С++ заполнить поле в открытой браузером странице
Goldz60 вне форума   Ответить с цитированием
Старый 17.11.2017, 10:01   #4
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,212
Репутация: 1578
По умолчанию

Универсального решения нет.
Проще всего сделать расширение под каждый браузер.
waleri вне форума   Ответить с цитированием
Старый 27.12.2017, 05:53   #5
Goldz60
 
Регистрация: 10.06.2010
Сообщений: 9
Репутация: 10
По умолчанию

Встала задача ускорить и облегчить заполнение одинаковыми данными страниц на разных сайтах
Первое, что пришло в голову, это выпадающий список, но после попытки реализации я понял, что нужно использовать контекстное меню. Решил написать свой браузер на основе Awesomium. Информацию по использованию этого продукта нашел на шикарной странице http://www.cyberforum.ru/blogs/57189....html#commentsДолгих лет жизни автору. Решил написать и написал на C#. Проверил на двух компьютерах дома (дома больше нет) и одном на работе. Все работает прекрасно. Принес заказчику, у него слабенький аппарат под XP, все работает, но страницы не загружаются. И даже фаервол говорит, что программа стучится в интернет, но страниц на экране нет. После я попробовал Geko в обрезанном варианте, оказывается он тоже не все страницы способен открывать. Самое главное, что один движок, что второй не способны обновляться. Тогда мысль повернулась в сторону глобального хука мыши. Процедив интернет я на страницеhttps://www.codeproject.com/Articles...ard-Hooks-in-Cнашел то, что нужно. Дальше все стало просто. Создаем приложение Windows Form, подключаем Gma.UserActivityMonitor.dll, кидаем на форму globalEventProvider с именем globalEventProvider1 и contextMenuStrip с именем contextMenuStrip2. Формируем меню(как это Ваше дело), но не забываем в дизайнере формы каждому toolStripMenuItem добавить
this.toolStripMenuItem2.DropDownIte mClicked += new System.Windows.Forms.ToolStripItemC lickedEventHandler(this.Menu2Item_C lick); с необходимым именем.
Код:

 using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Data;
using System.Collections;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Drawing;
using System.IO;
using System.Text;
using System.Threading;
namespace mGd
{
    public partial class Form1 : Form
    {
int xReal;// X Мыши
int yReal;// Y Мышы
int xCon;// X куда вставляем
int yCon;// Y куда вставляем
[DllImport("user32.dll")]
        private static extern void mouse_event(uint dwFlags, int dx, int dy, uint dwData, int dwExtraInfo);
        const uint MOUSEEVENTF_LEFTDOWN = 0x0002;
        const uint MOUSEEVENTF_LEFTUP = 0x0004;
public Form1()
        {
            InitializeComponent();
        }


private void Menu2Item_Click(object sender, ToolStripItemClickedEventArgs e)
        {

            Clipboard.SetText(e.ClickedItem.Text);//запоминаем пункт меню в буффер обмена
            // кликаем по координатам поля ввода
            mouse_event(MOUSEEVENTF_LEFTDOWN, xCon, yCon, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, xCon, yCon, 0, 0);
            Thread.Sleep(100);//ждем активации фокуса в поле ввода 
            //ввода(без этого в некоторых программах не работает, к примеру в Firefox)
            SendKeys.Send("^{v}");//нажимаем Ctrl+V
        }

private void globalEventProvider1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
                contextMenuStrip2.Show();//активируем меню
                this.contextMenuStrip2.Location = new Point(xReal, yReal + 10);//выводим меню по новым координатам
                //запоминаем координаты поля ввода программы
                xCon = xReal;
                yCon = yReal;
         
        }
private void globalEventProvider1_MouseMove(object sender, MouseEventArgs e)
        {
            //отслеживаем координаты мыши
            xReal = e.X;
            yReal = e.Y;
        }

private void globalEventProvider1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)27) contextMenuStrip2.Hide();// по нажатию Esc скрываем меню при ошибочной активации
        }

}

}

Такое построение позволяет вызвать контекстное меню в любой точке экрана, а применение буфера обмена позволяет передавать данные в контрол любой работающей программы, не зная хэндела окна. Один недостаток - по двойному клику меню появляется всегда и везде, не зависимо, есть поле ввода или нет. Убирается нажатием клавиши Esc. Писал в VS2010 под Framework 3.5 . Под Framework 4 Gma.UserActivityMonitor.dll не работает.
Goldz60 вне форума   Ответить с цитированием
Старый 27.12.2017, 10:22   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,154
Репутация: 2960

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Awesomium давно не развивается, там старая версия Хромиума и куча багов, утечек.

Лучше CEF (CefGlue, ...).

А если только для автоматизации, то Selenium в 100500 раз удобнее.
Alex11223 вне форума   Ответить с цитированием
Старый 28.12.2017, 06:25   #7
Goldz60
 
Регистрация: 10.06.2010
Сообщений: 9
Репутация: 10
По умолчанию

Эх кабы раньше знать!
Всем спасибо и с Новым годом
Goldz60 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В выпадающий список подтянуть список файлов из папки vldmlt Microsoft Office Access 1 21.06.2017 23:14
Выпадающий список Ast JavaScript, Ajax 2 08.01.2012 18:44
Выпадающий список aza-mat Microsoft Office Excel 11 04.05.2011 06:54
Выпадающий список alec_av Microsoft Office Excel 2 22.04.2010 19:59
Список в браузере russian-stalker Общие вопросы Delphi 2 07.09.2008 11:29




09:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru