悬奖 1139 分!想请前辈帮忙想想。如果这个问题解决了,以后扩展某些无源码的程序就方便多了。 (对这问题感兴趣的请UP一下) (100分)

  • 主题发起人 主题发起人 Pc 狂迷
  • 开始时间 开始时间
我现在想到了一个解决方法,使用全局原子表,因为全局原子表结构可以存储字符串,而且
可以被不同应用程序共享,将B的Edit里的内容先放入全局原子表中,在A中放一定时器,不断去
发现B的Form,一旦发现,就去读原子表,来获得字符串。
这种构思是否符合你的要求,具体编程,还待实践。
 
是否不让B做任何事!如果那样,上面的方法就不行了!
 
较难,我好好关注吧
 
象很多QQ盗密码都是用这个方法的,你可以定时findwindow
然后sendmessage()
 
不好意思我帮不了忙,只能灌一下水。
我的一个朋友曾经也遇到跟你一样的情况,他是这样做的,先通过汇编在原文件中
某个位置增加一些指令,令它能调用他自己写的程序。
 
szf和胜利的结合起来就对了,另外最好用enumchildwindow来找edit类型的控件
 
非常感谢盛利,你的方法完全通行!
如果能够做到 程式A 能自动感知 程式B 的FORM 的打开与关闭就更好了!
给你 300 分 (余分的等待有大侠帮我完成余下的问题。)
 
在A中放一定时器,初始为True,在Timer1Timer事件里,使用FindWindows函数查找B的
Form,一旦找到,可以发送一消息,给其他线程处理,然后将Timer1.Enable设为False;
呵呵!如可以,剩下得分给我吧.
 
procedure TForm1.Timer1Timer(Sender: TObject);
Var
Exehandle: Thandle;
begin
ExeHandle := FindWindow(Nil, '程序b的窗口名');
if ExeHandle <> 0 then Showmessage('找到该软件,句柄为'+InttoStr(Exehandle))
else
showmessage('该软件已关闭');
end;
 
定时FindWindow(Nil, 'form2的标题‘)<>0
就取edit的内容
=0什么也不做
 
可以通過兩程序間共享內存實現你可在到Borland網站上找找!有這樣的例子
 
這問題能不能用HOOK API?
一般程序都是用GetWindowText來得到Edit的內容的.我們可以Hook這個API,
然後根據這個來Handle看看它的ParentWindow是不是QQ的,如果是就保存密碼.
HOOK API也不難,應該比FindWindow的有效吧.

新版的QQ好像可以用FindWindow('xxxxxx','');來得到Handle吧?
 
UP
重奖:953分
 
不知老兄你‘记录 DemoB 中的收费窗口弹出次数,并能同时得到“应收现金金额”中的数值‘
是指该form的某生存期内呢还是指该form的全部历史运行情况?
不过小弟认为:用dephi6的ini文件可以轻松的解决该问题。其它程序需要该信息,访问该
ini文件就可以了。
具体思路很简单:DemoB hide或者free事件中(因为我不知道你的DemoB是否是模式窗体),
更新该ini文件即可。
 
补充:如果要保密,则加密之;
如果要更容易维护:则专门建张表TbDemoBcnt,写个存储过程sp_DemoBcnt;在DemoB的show或者hide(模式显示则是
free)事件中调用sp_DemoBcnt更新TbDemoBcnt即可。
不知是否满意?(你的demo.zip下载太慢了,我没看之。如果离题,望见谅!我到不是为了你的分哟。)
 
后退
顶部