【有趣的问题: 如何让自己的程序跟随指定的其他软件行走?】(200分)

  • 主题发起人 主题发起人 wlh_1
  • 开始时间 开始时间
W

wlh_1

Unregistered / Unconfirmed
GUEST, unregistred user!
有趣的问题: 如何让自己的程序跟随指定的其他软件行走?
比如,一个小程序,最小化了或者隐藏到托盘了,只要一打开msn或者qq或者其他定义好的外部软件,这个小程序就自动显示出来并且依附在msn或者qq的某个旁边,只要移动msn或qq,这个小程序也跟着移动。
另外,如果实现了上面的功能,可以更进一步,就是如果同时打开了n个msn或qq的聊天窗口(同时和几个人聊天),那么只要鼠标点到哪个窗口,这个小程序就跟着来到哪个窗口,形影不离。

呵呵,这个程序如何实现,挺有意思的。大家踊跃参加啊!!
 
hook api...
 
Findwindow找窗口,然后再查看窗体位置,把自己移动到上面
 
农民点,定时刷新。
高级点, Hook API
 
是不是就像单词里的屏幕取词一样。
 
// 简单点的,用Timer控件,如例子:
procedure TForm1.Timer1Timer(Sender: TObject);
var hWindow:THandle;
rc:TRECT;
begin
hWindow := FindWindow('Notepad','无标题 - 记事本');
if hWindow = GetForegroundWindow then
begin
ShowWindow(Handle,SW_RESTORE);
GetWindowRect(hWindow,rc);
Left := rc.Right;
Top := rc.Top;
end else
begin
ShowWindow(Handle,SW_MINIMIZE);
end;
end;
 
用Hook 判断要跟随的程序是否正在运行,并截获系统的WM_MOVE消息,若消息的Hwnd于要跟随的窗体的Hwnd相同,则移动窗体到要跟随的窗体的位置,这样应该可以实现吧。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部