Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Получение UI текста из внешнего приложения в C#
Можно ли получить UI текст из внешнего приложения в C#.
В частности, есть ли способ прочитать текст Unicode из метки (я предполагаю, что это обычный элемент управления Windows label) из внешнего приложения Win32, написанного третьей стороной? Текст виден, но не выбирается мышью в UI.
Я предполагаю, что существует некоторая доступность API (например, предназначенная для чтения с экрана), которая позволяет это сделать.
Edit: в настоящее время изучаю возможность использования чего-то вроде управляемого шпионского приложения , но все равно буду признателен за любые другие зацепки.
Вы можете сделать это, если этот текст Юникода на самом деле является окном с заголовком, отправив сообщение WM_GETTEXT .
[DllImport("user32.dll")]
public static extern int SendMessage (IntPtr hWnd, int msg, int Param, System.Text.StringBuilder text);
System.Text.StringBuilder text = new System.Text.StringBuilder(255) ; // or length from call with GETTEXTLENGTH
int RetVal = Win32.SendMessage( hWnd , WM_GETTEXT, text.Capacity, text);
Если он просто нарисован на холсте, вам может повезти, если вы знаете, какие рамки использует приложение. Если он использует WinForms или VCL Борланда, вы можете использовать это знание, чтобы добраться до текста.
Если вы просто заботитесь о стандартной метке Win32, то WM_GETTEXT будет работать нормально, как описано в других ответах. --
Есть специальные возможности API - UIAutomation -для стандартных меток, он тоже использует WM_GETTEXT за кулисами. Однако одно из его преимуществ заключается в том, что он может получать текст из нескольких других типов элементов управления, включая большинство системных элементов управления, и часто UI использует несистемные элементы управления, включая WPF, текст в IE и Firefox и другие.
// compile as:
// csc file.cs /r:UIAutomationClient.dll /r:UIAutomationTypes.dll /r:WindowsBase.dll
using System.Windows.Automation;
using System.Windows.Forms;
using System;
class Test
{
public static void Main()
{
// Get element under pointer. You can also get an AutomationElement from a
// HWND handle, or by navigating the UI tree.
System.Drawing.Point pt = Cursor.Position;
AutomationElement el = AutomationElement.FromPoint(new System.Windows.Point(pt.X, pt.Y));
// Prints its name - often the context, but would be corresponding label text for editable controls. Can also get the type of control, location, and other properties.
Console.WriteLine( el.Current.Name );
}
}