您好,登錄后才能下訂單哦!
2009年,×××交易契稅實行新的政策,在系統錄入的時候,需要實現交易價格和基準交易價格進行比對。但契稅軟件是VB程序開發的,已經很久沒有更新,也沒有源代碼。要實現該功能,只能通過外掛的方式實現。
主要思路是用hook原系統的錄入界面,當輸入交易價格的時候,通過熱鍵呼叫外掛軟件,進行基準價格比對。比對過程需要讀取原系統界面上的錄入信息,并根據這些信息,如房屋朝向、樓層、建造年份、區域等綜合因素查詢事先錄入數據庫的基準價格,比對計算。大于等于基準價格的保留原價格,小于基準價格的,把外掛查詢的總價發送到原系統錄入界面的相應控件。
主要程序代碼如下:
procedure TFrmMain.tm1Timer(Sender: TObject);
var
hts, hw: LongInt;
lsh: string;
buffer:array[0..255] of char;
begin
//cooling qq:21156410 http://xu-laoshi.cn
//判斷
hw := FindWindow(nil, '契稅納稅申報');
hts := FindWindow(nil ,'提示');
if (hw <> 0) then
begin
if hts <> 0 then
begin
//取流水號
ClearList1;
EnumChildWindows(hts, @EnumChildWndProc1, 0);
SendMessage(LongInt(List1.Items[n_lsh]^), WM_GETTEXT, 255, longint(@buffer));
lsh := buffer;
lsh := Copy(lsh, 9, 15);
savexz(lsh);
end;
end else
begin
tm1.Enabled := false;
if self.Visible then self.Visible := false;
end;
end;
procedure TFrmMain.btQdClick(Sender: TObject);
var
buffer:array[0..255] of char;
pgj, cjj: real;
pgjstr, cjjstr: String;
begin
//發送到vb程序
SendMessage(LongInt(List.Items[c_cjj]^), WM_GETTEXT, 255, longint(@buffer));
try
cjjstr := buffer;
if cjjstr = '' then cjjstr := '0';
cjj := strToFloat(cjjStr);
pgjstr := edZj.Text;
if pgjstr = '' then pgjstr := '0';
pgj := strToFloat(pgjstr);
if cjj > pgj then
begin
pgj := cjj;
end;
except
exit;
end;
pgjstr := Format('%.2f', [pgj]);
SendMessage(LongInt(List.Items[c_pgj]^), WM_SETTEXT, 0, longint(pgjstr));
Self.Visible := false;
tm1.Enabled := true;
end;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。