您好,登錄后才能下訂單哦!
2009年,×××交易契稅實(shí)行新的政策,在系統(tǒng)錄入的時(shí)候,需要實(shí)現(xiàn)交易價(jià)格和基準(zhǔn)交易價(jià)格進(jìn)行比對。但契稅軟件是VB程序開發(fā)的,已經(jīng)很久沒有更新,也沒有源代碼。要實(shí)現(xiàn)該功能,只能通過外掛的方式實(shí)現(xiàn)。
主要思路是用hook原系統(tǒng)的錄入界面,當(dāng)輸入交易價(jià)格的時(shí)候,通過熱鍵呼叫外掛軟件,進(jìn)行基準(zhǔn)價(jià)格比對。比對過程需要讀取原系統(tǒng)界面上的錄入信息,并根據(jù)這些信息,如房屋朝向、樓層、建造年份、區(qū)域等綜合因素查詢事先錄入數(shù)據(jù)庫的基準(zhǔn)價(jià)格,比對計(jì)算。大于等于基準(zhǔn)價(jià)格的保留原價(jià)格,小于基準(zhǔn)價(jià)格的,把外掛查詢的總價(jià)發(fā)送到原系統(tǒng)錄入界面的相應(yīng)控件。
主要程序代碼如下:
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, '契稅納稅申報(bào)');
hts := FindWindow(nil ,'提示');
if (hw <> 0) then
begin
if hts <> 0 then
begin
//取流水號(hào)
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
//發(fā)送到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;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。