Один из них называется «FinanceApp.UIA». Ниже приведен SDK, который я использую в этом проекте.
Обратите внимание. что «Microsoft.WindowsDesktop.App» было включено,
Код: Выделить всё
net6.0
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Automation;
using System.Threading;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using FinanceApp.Common;
namespace FinanceApp.UIA
{
public class BaseUia:IBaseUia
{
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")]
static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn,
IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr GetHwndByClassName(string lpClassName, string lpWindowName);
///
/// Get handles by process ID
///
///
///
public IEnumerable GetHwndFromPid(int processId)
{
var handles = new List();
foreach (ProcessThread thread in Process.GetProcessById(processId).Threads)
{
EnumThreadWindows(thread.Id,
(hWnd, lParam) =>
{
handles.Add(hWnd);
return true;
},
IntPtr.Zero);
}
return handles;
}
///
/// Get AutomationElement by process id
///
///
///
public IEnumerable GetElementsByPid(int processId)
{
var handles = GetHwndFromPid(processId);
return handles.Select(hnd => AutomationElement.FromHandle(hnd));
}
}
}
Код: Выделить всё
net6.0
Latest
В качестве целевой платформы должна быть установлена Windows (обычно путем включения
'-windows' в свойстве TargetFramework) при использовании Windows Forms
или WPF или при ссылке на проекты или пакеты,
которые делают это. FinanceApp.Service C:\Program
Files\dotnet\sdk\6.0.100-preview.1.21103.13\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 362
Подробнее здесь: https://stackoverflow.com/questions/663 ... t5-or-net6
Мобильная версия