這個就是我的主程式(問題在我今天發的第乙個帖子中) delphi / windows sdk/api
hook.dll**在我今天發的第乙個帖子中
unit unit1;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
tform1 = class(tform)
button1: tbutton;
memo1: tmemo;
memo2: tmemo;
procedure button1click(sender: tobject);
procedure wmcopydata(var msg:tmessage);message wm_copydata;
private
public
end;
var
form1: tform1;
implementation
function startspymessage(ahspywnd, ahrevwnd: thandle): boolean; stdcall;external 'hook.dll';
procedure stopspymessage;stdcall;external 'hook.dll';
procedure tform1.button1click(sender: tobject);
var
mwnd:thandle;
cwnd:thandle;
ewnd:thandle;
begin
memo1.lines.clear;
mwnd:=findwindow(nil,'bmml window: com1 stack'); //獲取視窗控制代碼
cwnd:=findwindowex(mwnd,0,'afxmdiframe40',nil); //獲取一級控制代碼
ewnd:=findwindowex(cwnd,0,'edit',nil); //獲取edit控制項控制代碼
if ewnd=0 then
showmessage('程式沒執行')
else
memo1.lines.add(inttostr(ewnd));
if startspymessage(ewnd,form1.handle) then
showmessage('啟動成功');
end;
procedure tform1.wmcopydata(var msg: tmessage);
var
data:copydatastruct;
s:string;
begin
data:=pcopydatastruct(msg.lparam)^;
with data do
begin
s:='資料類別**'+inttostr(cbdata)+' '+'訊息實際資料'+pchar(lpdata);
end;
memo2.lines.add(s);
end;
end.
該程式的確可以攔截那個程式中edit控制項的訊息,但顯示的卻為空的
裡面主要是用到wm_copydata訊息來傳遞我要的訊息,因為對訊息操作不熟悉,所以不知道在怎麼寫了
hook.dll中攔截到訊息以後,通過wm_copydata訊息傳送到我的主程式
在主程式中我寫了乙個訊息過程,也的確是收到效果,可就是得到的是空的,麻煩高手們幫我看看問題出在那裡了
但願有人看到這個讓我失眠的問題!
問題一 堆記憶體是不是不一定多大啊?下面這個copy來的測試堆記憶體的程式每次執行的結果都不一樣呢?void main catch std bad alloc 問題二 上面的程式是故意不釋放記憶體,也就是故意讓記憶體洩露,這樣才能測試堆記憶體。只要該程式一結束就自動釋放。不用關閉vs。是這個意思嗎?...
我喜歡「碼農」這個稱呼中國程式設計師的詞
我喜歡 碼農 這個稱呼中國程式設計師的詞。中國程式設計師在國內種種軟體開發的不利條件下 浮躁的大環境 缺乏培訓 英文不佳等等 更需要像75歲的新農夫褚時健種橙子那樣,不以眼前的利益而是以長遠的利益作為投入的動機,不掙快錢掙慢錢,去悟證稻盛和夫所倡導的 田間的精進 才能收穫豐碩的成果。有的朋友認為褚時...
開荒篇 我的程式設計師生涯今天開始留下腳印
好久就想在網上給自己找個窩了,但是由於各種原因一直到現在才算正式開始!呵呵,我是學計算機的,想在想想自己畢業那會認為比較牛,可能因為有個不錯的學習成績和優秀的畢業設計,但是現在想來當時真的是不知天高地厚啊!現在工作1年半了,公司的規模不小,但是做軟體的卻不多1 30吧,呵呵 隨著接觸的東西越來越多,...