john1990_1 Ответов: 1

Как установить ввод в текстовое поле в другом приложении, которое является браузером chrome (или comodo dragon)?


Я открываю страницу Google Translate и вывожу ее на передний план, но она не всегда фокусируется на исходном текстовом поле, чтобы пользователь мог сразу же ввести текст. Он всегда получает фокус, когда я запускаю его в VS debugging, но не как независимый exe-файл.

Всегда после нажатия кнопки на моей мыши, которая запускает этот exe-файл после долгого времени не нажатия кнопки, текстовое поле "Источник" выбирается, но если я нажимаю не после долгого времени с момента последнего нажатия, текстовое поле "источник" не выбирается.

Что я уже пробовал:

Process[] Processes = Process.GetProcessesByName("dragon");

            foreach (Process p in Processes)
            {
                ShowWindow(p.MainWindowHandle, SW_RESTORE);
            }



            Processes = Processes.Where(p => p.MainWindowHandle != IntPtr.Zero).ToArray();

            if (Processes.Length == 0)
            {
                ProcessStartInfo prs = new ProcessStartInfo("dragon.exe");
                prs.Arguments = "http://translate.google.com" + " --new-window";
                prs.WindowStyle = ProcessWindowStyle.Normal;
                Process p = Process.Start(prs);
                //p.WaitForInputIdle(3000);
            }


            Processes = Process.GetProcessesByName("dragon");

            foreach (Process p in Processes)
            {
                ShowWindow(p.MainWindowHandle, SW_MINIMIZE);
            }

            foreach (Process p in Processes)
            {
                ShowWindow(p.MainWindowHandle, SW_RESTORE);
                SetWindowPos(p.MainWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
                BringWindowToTop(p.MainWindowHandle);
                SetForegroundWindow(p.MainWindowHandle);
            }

            foreach (Process p in Processes)
            {
                SetWindowPos(p.MainWindowHandle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
                SetWindowPos(p.MainWindowHandle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
            }

            foreach (Process p in Processes)
            {
                ShowWindow(p.MainWindowHandle, SW_RESTORE);
                BringWindowToTop(p.MainWindowHandle);
                SetFocus(new HandleRef(null, p.MainWindowHandle));
            }

            foreach (Process p in Processes)
            {
                SetForegroundWindow(p.MainWindowHandle);
            }

Dave Kreskowiak

Помните, что я сказал всего несколько дней назад о том, что вы "делаете это трудным путем"? Вот почему. Вы практически не контролируете пользовательский интерфейс, не можете взаимодействовать с ним без серьезных усилий, и ваш код станет бесполезным мусором, как только Google изменит пользовательский интерфейс на этой странице.

john1990_1

I understand, thanks a lot for caring, but I made once an English teaching program but I didn't finish it because such a program needs to have a corporation do it not only one hobbyist, in it I embedded Google Translate Well and it translates online each English word to 3 languages chosen by the user and displays them in labels, the program you linked me to may be the one that I took code from it, but I want interactive Google Translate's page with history of searched texts (this feature is new), with choosing the languages comfortably, with detecting the language and showing which language to translate from, I have a program already that has a Bing Translate page and that had Google Translate page in the past but Google now prevents the browser control of VS from accessing Google Translate's website, and Bing Translate is horrible and detects text's language horribly wrong.

Пожалуйста, проверьте мою программу, связанную ниже (без встроенной страницы Google Translate, но вы можете открыть ее в браузере по умолчанию с помощью кнопки).

Пользовательский интерфейс программы, которую вы мне прислали, ужасно недружелюбен и неудобен.

Dave Kreskowiak

Я нигде не размещал никаких ссылок на какую-либо программу и не загружаю код из ненадежного источника, от ненадежного человека.

john1990_1

Код прост, и вы можете просмотреть его перед запуском, вы даже можете открыть его в VS и даже не нажимать кнопку debug, он не может причинить вам вреда, я не уверен в этом, не так ли? ну в любом случае это не важно, что вы его просматриваете, не могли бы вы помочь мне о коде в текстовом поле кода этой веб-страницы, и почему он успешно выбирает текстовое поле "источник" на веб-странице Google Translate только после того, как не нажимал его в течение длительного времени, и если я нажимаю его не после долгого времени с последнего нажатия, он не выбирает текстовое поле "Источник"? (Я нажимаю кнопку мыши, настроенную для запуска exe-файла)

1 Ответов

Рейтинг:
2

Gerry Schmitz

Правильно используйте API:

Документация API облачного перевода |  API облачного перевода  |  Облако Google[^]

Интегрируйте его с формой Windows, которая принимает текст.


john1990_1

Нет, спасибо, я бы предпочел использовать свой exe-файл, который открывает или выводит на передний план Comodo Dragon browser со страницей Google Translate в нем (при использовании Dragon browser только для этого сайта), я видел пример API, страница Google translate намного богаче и эффективнее, а также более дружелюбна и удобна. смотрите ссылку на исходный код, о котором я говорю, на моем сайте в нижней части страницы:
https://sites.google.com/site/workofmylife1234/
Я больше не хочу тратить много времени на Программирование...