菜鸟提问,关于句柄,急,在线等。(20)

  • 主题发起人 主题发起人 terry_zhou82
  • 开始时间 开始时间
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SPY查看到迅雷5的句柄为132088,但是我用下列的代码,怎么关闭不了程序啊?procedure TForm1.Button1Click(Sender: TObject);var hand:hwnd;beginhand:=findwindow('132088','迅雷5');postmessage(hand,wm_close,0,0);end;end.急,在线等。
 
试试,132088替换成你看到的SPY值procedure TForm1.Button1Click(Sender: TObject);var hand:hwnd;begin postmessage(132088,wm_close,0,0);end;end.
 
h:= FindWindow(nil,'迅雷5'); SendMessage(h,WM_CLOSE,0,0);测试通过了
 
终于成功了,但是还有一个菜鸟的问题,为是么每次迅雷的句柄好像都不一样吗啊?那我要怎么样改呢?不见得,每次都用软件找吧?
 
比如qq,用楼上的方法就不行了。
 
FindWindow的参数,第一个是窗口的类的名称,例如 TForm1,楼主用的是'132088'句柄的十进制文本,正确的例子如下hand:=FindWindow('TForm1', nil);
 
楼上的,那么如果是QQ的话,我该如何表示啊?
 
答案读写了在上面了,倒!
 
请给个实例,谢谢。
 
答案读写了在上面了,倒!
 
那是啊,窗口句柄也不会每次都一样啊,应该是动态分配的,所以最好的方法是找到类名或者窗口名等不变的。如果是QQ的话,那你首先要知道QQ的窗口名或者它的类名,再按hanyuhen1方法就行了。因为QQ的版本问题,以及QQ的窗口名称有可能不一样,所以最好还是通过其他软件得到窗口类名比较好。function FindWindow(lpClassName, lpWindowName: PChar): HWND;findwindow 是用来返回一个句柄的,它的第一个参数是窗口的类名,第二个参数是窗口的窗口名称。得到窗口句柄之后就可以进行你想要的操作了。
 
我们要宽容菜鸟。阿门!
 
接受答案了.
 

Similar threads

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