我想知道Powerpoint中鼠标光标下的单词,以便它可以用于屏幕阅读器.可访问性解决方案是可以接受的,如果它可以区分不同的单词(相对于块).
如果您不知道自己在做什么,这实际上非常困难。有一个简单的方法和一个困难的方法来做到这一点。简单的方法是使用 Microsoft UI 自动化框架(包括 Powerpoint 自动化)。也可以使用替代框架。
困难的方法是直接使用 win api。
例如:获取当前鼠标所在的窗口标题。
public static class dllRef
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetCursorPos(out Point lpPoint);
[DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point point);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int RegisterWindowMessage(string lpString);
[DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto)]
public static extern bool SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SendMessage(int hWnd, int Msg, int wparam, int lparam);
public const int WM_USER = 0x400;
public const int WM_COPYDATA = 0x4A;
public const int WM_GETTEXT = 0x000D;
public const int WM_GETTEXTLENGTH = 0x000E;
public static void RegisterControlforMessages()
{
RegisterWindowMessage("WM_GETTEXT");
}
public static string GetText()
{
StringBuilder title = new StringBuilder();
Point p = dllRef.getMousePosition();
var lhwnd = dllRef.WindowFromPoint(p);
var lTextlen = dllRef.SendMessage((int)lhwnd, dllRef.WM_GETTEXTLENGTH, 0, 0).ToInt32();
if (lTextlen > 0)
{
title = new StringBuilder(lTextlen + 1);
SendMessage(lhwnd, WM_GETTEXT, title.Capacity, title);
}
return title.ToString();
}
public static Point getMousePosition()
{
Point p = new Point();
GetCursorPos(out p);
return p;
}
}
Run Code Online (Sandbox Code Playgroud)
和
private void Form1_Load(object sender, EventArgs e)
{
Timer t = new Timer();
t.Interval = 25;
t.Tick += new EventHandler(Timer_Tick);
t.Start();
}
public void Timer_Tick(object sender, EventArgs eArgs)
{
this.label1.Text = dllRef.GetText();
}
Run Code Online (Sandbox Code Playgroud)
此外,您还可以使用 Microsoft Spy++
查找您正在寻找的信息是否已公开。除此之外,我真的可以建议您使用在此基础上构建的自动化框架。谷歌有足够多的例子(以及如何构建复杂的键盘记录器)。
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |