Guest:
Register
|
Login
|
Member List
|
Search
|
Statistics
|
FAQ
Language
----------
Simplifed Chinese
Traditional Chinese
English
CnPack Forum
»
技术板块灌水区
» [HELP]有沒有簡單的辦法監控窗口信息?
‹‹ Last Thread
|
Next Thread ››
Poll
Trade
Reward
Activity
Printable Version
|
Email to Friend
|
Subscription
|
Favorites
Subject: [HELP]有沒有簡單的辦法監控窗口信息?
jAmEs_
灌水部部长
UID 886
Digest Posts 0
Credits 1134
Posts 600
点点分 1134
Reading Access 10
Registered 2005-6-5
Location 广东
Status Offline
#1
Post at 2008-11-10 16:06
Profile
|
Blog
|
P.M.
[HELP]有沒有簡單的辦法監控窗口信息?
比如我希望每個窗口關閉前,都執行某些代碼。
排除使用HOOK、繼承窗口、也不能代替事件觸發的方法等方法。因為程序已經開發好了,不想調整。
最好是Windows自己的機制,如在子窗口關閉前,能發送消息到主窗口?之類的。。。
Passion
(LiuXiao)
管理员
UID 359
Digest Posts
19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
#2
Post at 2008-11-10 17:36
Profile
|
Blog
|
P.M.
那就得你写个程序来设置消息钩子以避免修改原有程序?
jAmEs_
灌水部部长
UID 886
Digest Posts 0
Credits 1134
Posts 600
点点分 1134
Reading Access 10
Registered 2005-6-5
Location 广东
Status Offline
#3
Post at 2008-11-10 17:53
Profile
|
Blog
|
P.M.
怎么寫?我還想不到。。。
Passion
(LiuXiao)
管理员
UID 359
Digest Posts
19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
#4
Post at 2008-11-10 18:02
Profile
|
Blog
|
P.M.
SetWindowHook系列API以及使用例子查查?
jAmEs_
灌水部部长
UID 886
Digest Posts 0
Credits 1134
Posts 600
点点分 1134
Reading Access 10
Registered 2005-6-5
Location 广东
Status Offline
#5
Post at 2008-11-10 18:10
Profile
|
Blog
|
P.M.
暈,我剛才說了不用HOOK,以我自己的使用經驗,HOOK不太安全,很特別是全局HOOK,搞不好影響系統的穩定性。
另外,我HOOK過了,竟然不行,似乎跟代碼在BPL下有關係。。。但是具體還不知道。
如果用HOOK,我還不如直接設置WindowProc?因為都只是一個工程裡面。
其實還有RtlVclOptimize.pas這個在DelphiSpeedUp裡面的一個單元來處理,它可以替換函數,包括類的函數,算比較完美的做法,但是我還是擔心它的穩定性。
jAmEs_
灌水部部长
UID 886
Digest Posts 0
Credits 1134
Posts 600
点点分 1134
Reading Access 10
Registered 2005-6-5
Location 广东
Status Offline
#6
Post at 2008-11-11 21:49
Profile
|
Blog
|
P.M.
最终采用Hook实现了,开始我用WH_CBT来处理,存在问题。经过测试发现(自己推测,没有详细跟踪,因为在BCB下面,不方便调试Pas源码):
我在nCode=HCBT_CREATEWND时,通过Screen.Forms[x].Handle来检查创建的TForm,但是由于此时刚刚准备创建的TForm的Handle还没有产生,导致执行HandleNeeded,然后又触发nCode=HCBT_CREATEWND,然后又HandleNeeded。。。
后来改成监控其他nCode来实现。
Poll
Trade
Reward
Activity
CnPack Forum
CnPack English Forum
> CnWizards IDE Wizards
> CVSTracNT
> Announcements & Others
All times are GMT++8, the time now is 2024-11-22 01:07
Powered by
Discuz!
5.0.0
© 2001-2006
Comsenz Inc.
Processed in 0.008669 second(s), 8 queries , Gzip enabled
TOP
Clear Cookies
-
Contact Us
-
CnPack Website
-
Archiver
-
WAP
Member's CP Home
Edit Profile
Credits Transaction
Public User Groups
Buddy List
Main
Page Views
User Agents
Posts History
Top Forums
Top Threads
Post Ranking
Credit Ranking
Online Time
Team
Moderation Stats