如何从其他应用程序的gridview中提取项目?该控件的类名是TStringGrid
。
我可以使用TStringGrid
使用这些声明来获取FindWindowEx
窗口的句柄:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function
代码:
Dim TheMainForm As Integer = FindWindow("form", "fname")
Dim GV As Integer = FindWindowEx(TheMainForm, 0, "TStringGrid", "")
如何从GV(TStringGrid句柄)中提取项目?
(明天我必须完成这个项目。)
答案 0 :(得分:4)
Delphi字符串网格不是Windows控件。这是一个定制的Delphi控件。因此,它不响应要求其内容的Windows消息。如果没有应用程序源,您需要对应用程序进行反向工程以确定存储内容的位置。
实际上,最有效的方法是将一个线程注入目标应用程序。然后该线程可以完成读取信息的工作,然后可以使用一些IPC将数据恢复到VB进程。
为了做到这一点,理想情况下,你需要:
TStringGrid
。我不知道你如何能够将阅读线程与Delphi应用程序同步。
无论如何,虽然你要求的是理论上可行的,但实际上它是完全不切实际的。明智的解决方案是要求Delphi程序的作者提供自动化界面。