Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

Встала задача ускорить и облегчить заполнение одинаковыми данными страниц на разных сайтах
Первое, что пришло в голову, это выпадающий список, но после попытки реализации я понял, что нужно использовать контекстное меню. Решил написать свой браузер на основе 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, 09:22   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

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

А если только для автоматизации, то Selenium в 100500 раз удобнее.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.12.2017, 05:25   #7
Goldz60
 
Регистрация: 10.06.2010
Сообщений: 9
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В выпадающий список подтянуть список файлов из папки vldmlt Microsoft Office Access 1 21.06.2017 22: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