我想选择外部进程的 SysListView32 项。到目前为止,这是我的代码,它正在工作(我可以获取项目的文本和索引),但是如何选择当前项目?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Automation;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Place your cursor over listview and hit enter...");
Console.ReadLine();
POINT pt;
GetCursorPos(out pt);
IntPtr hwnd = WindowFromPoint(pt);
AutomationElement el = AutomationElement.FromHandle(hwnd);
TreeWalker walker = TreeWalker.ContentViewWalker;
int i = 0;
for (AutomationElement child = walker.GetFirstChild(el);
child != null;
child = walker.GetNextSibling(child))
{
MessageBox.Show("Item:" + child.Current.Name);
//! Select The Item Here ...
}
}
[StructLayout(LayoutKind.Sequential)]
private struct POINT
{
public int x;
public int y;
};
[DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(POINT pt);
[DllImport("user32.dll")]
private static extern int GetCursorPos(out POINT pt);
}
}