问题描述
我正在尝试找到一种使用c#读取JNLP / Javaw应用程序文本数据及其所有元素的方法。我得到了用Java编写的代码的一个链接,但对我不起作用,我正在寻找可以与JAVA应用程序进行交互的c#代码。我很容易找到JAVA应用程序的标题/标题,但无法在应用程序内部找到文本
https://www.techtravelhub.com/how-to-automate-jnlp-based-swing-application-in-java/
我使用了以下方法,但对JAVA应用程序却无济于事:
[DllImport(“ user32.dll”,EntryPoint =“ GetwindowTextLength”,SetLastError = true)]
内部静态外部int GetwindowTextLength(IntPtr hwnd);
private static string GetTitle(IntPtr handle)
{
int length = GetwindowTextLength(handle);
StringBuilder sb = new StringBuilder(length + 1);
GetwindowText((int)handle,sb,sb.Capacity);
return sb.ToString();
}
[DllImport("User32.Dll")]
public static extern void GetwindowText(int h,StringBuilder s,int nMaxCount);
[DllImport("user32.dll",EntryPoint = "GetwindowText",CharSet = CharSet.Auto)]
static extern IntPtr GetwindowCaption(IntPtr hwnd,StringBuilder lpString,int maxCount);
[DllImport("user32.dll",EntryPoint = "GetClassNameA")]
public static extern int GetClassName(IntPtr hwnd,StringBuilder lpClassName,EntryPoint = "SendMessage")]
private static extern IntPtr SendMessageGetTextW(IntPtr hWnd,uint msg,UIntPtr wParam,StringBuilder lParam);
[DllImport("User32.dll",EntryPoint = "SendMessage")]
private extern static int SendMessageGetTextLength(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);
public static string GetwindowText(IntPtr hwnd)
{
int len = SendMessageGetTextLength(hwnd,14,IntPtr.Zero,IntPtr.Zero) + 1;
StringBuilder sb = new StringBuilder(len);
SendMessageGetTextW(hwnd,13,new UIntPtr((uint)len),sb);
return sb.ToString();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)