我是在老妖的一個帖子中關于獲取外部程式的StringGrid的內容,現在又一個外部程式是TdzDrawGrid,初步判斷是由TDrawGrid繼承的。也想獲取他資料內容,但是drawgrid沒有cells內容,那么如何獲取他的單元格內容值呢。
附上老妖的部分代碼
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;
uj5u.com熱心網友回復:
跟蹤下,看看cells[x,y],x,y是否正確uj5u.com熱心網友回復:
樓上的可能沒看清楚我的問題。關鍵是drawgrid沒cells屬性,如何獲取單元格內容呢
uj5u.com熱心網友回復:
其實我要拷貝的是一個外部程式,通過GetClassName獲取到它使用的是TdzDrawGrid控制元件。初步判斷可能是他們公司自己寫的一個由TDrawGrid繼承的控制元件。那么這里我還可以獲取到的值嗎?如果不行,可有其他辦法呢?
從抓包工具來看,他們公司使用的是tcp協議。
uj5u.com熱心網友回復:
沒人知道嗎?drawgrid怎么往里面寫單元格內容的?
uj5u.com熱心網友回復:
DrawGrid只提供畫布,所以是無法從DrawGrid控制元件上提取資料的,除非影像識別uj5u.com熱心網友回復:
影像識別我也找了個列子,只不過是根據滑鼠停留的位置然后去獲取文字。那么現在我要是想獲取多列而且跨列的,比如第一列、第三列、第四列的資料就會麻煩的多。
再說當資料量超過1000的時候,更無法獲取我想要的資料啦。
實在想不到辦法了。求求csdn大神 提供下思路呀。
uj5u.com熱心網友回復:
怎么沒人哈????uj5u.com熱心網友回復:
這個問題 解決不了了。。。。。。。。。。。uj5u.com熱心網友回復:
我也想知道,求解釋!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137859.html
標籤:非技術區
上一篇:delphi2009 如何設定 在型別庫中Strings型別可選
下一篇:delphi的全字匹配功能實作
