delphi能否直热门获取其他外部程序中TDBGridEh控件中的数据?

我有想用Delphi做个程序,随时提示另一个程序中TDBGrid中的数据,求高手给个方法?效果类似如下图:... 我有想用Delphi做个程序,随时提示另一个程序中TDBGrid中的数据,求高手给个方法?
效果类似如下图:
展开
 我来答
一剑飘雪红
2011-07-26
知道答主
回答量:12
采纳率:0%
帮助的人:5.8万
展开全部
使用钩子原理+dll注入。首先使用FindwindowEx能获取到表格的句柄,再转化为表格,将表格的内容赋值给你的新表格。
function MsgWndProc(hwnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
var
// SG: TStringGrid;
SG:TDrawgrid;
X, Y: Integer;
begin
case Msg of
CM_QUERYROW:
begin
Result := -1;
if P^.DestWnd <> 0 then
begin
SG := Pointer(FindControl(P^.DestWnd));
if SG <> nil then Result := SG.RowCount;
end;
Exit;
end;
CM_QUERYCOL:
begin
Result := -1;
if P^.DestWnd <> 0 then
begin
SG := Pointer(FindControl(P^.DestWnd));
if SG <> nil then Result := SG.ColCount;
end;
Exit;
end;
CM_HOOKCELL:
begin
Result := -1;
P^.Text[0] := #0;
if P^.DestWnd <> 0 then
begin
SG := Pointer(FindControl(P^.DestWnd));
if SG <> nil then
begin
X := WParam;
Y := LParam;
if (X >= 0) and (X < SG.ColCount) and (Y >= 0) and (Y < SG.RowCount) then
begin
Result := Length(SG.Cells[X, Y]);//就是这里 获取不到它的单元格值?
if Result > 0 then
begin
StrPLCopy(P^.Text, SG.Cells[X, Y], 1024);
end;
end;
end;
end;
Exit;
end;
end;
Result := DefWindowProc(hwnd, Msg, WParam, LParam);
end;
这个我已经测试通过。
追问
你的答案应该没问题,只是我是新手,能否详细给个例子啊,我想知道具体怎样用?
多谢你了!!!发邮件给我:120289389@qq.com
谁_人_知
2011-07-18 · TA获得超过220个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:154万
展开全部
用FindWindowEx
更多追问追答
追问
FindwindowEx能获取到数据??
追答
FindwindowEx能获取到表格的句柄,再转化为表格,将表格的内容赋值给你的新表格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ca8a0ea
2011-07-20 · TA获得超过136个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:143万
展开全部
你可以参考这篇文章。相信对你有帮助
http://edu.codepub.com/2010/0120/19938.php
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式