Как использовать UIAutomation в .NET5 или .Net6C#

Место общения программистов C#
Ответить
Anonymous
 Как использовать UIAutomation в .NET5 или .Net6

Сообщение Anonymous »

Я создал решение webApi с 7 проектами.
Один из них называется «FinanceApp.UIA». Ниже приведен SDK, который я использую в этом проекте.
Обратите внимание. что «Microsoft.WindowsDesktop.App» было включено,

Код: Выделить всё



net6.0













Почему включено «Microsoft.WindowsDesktop.App»? Ниже описано, что я хочу сделать в этом проекте

Код: Выделить всё

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));
}
}
}
Другой проект под названием «FinanceApp.Service», SDK и ссылка приведены ниже:

Код: Выделить всё



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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»