你不能通过识别oicq所用的的类来kill吗?

解决方案 »

  1.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    var hWnd_OICQ:HWND;
    begin
      hWnd_OICQ:=FindWindow('#32770',nil);
      if hWnd_OICQ <>0 then
         SendMessage(hWnd_OICQ,WM_CLOSE,0,0)
    end;
    可以了么?这个是用时钟控制的,你可以换成按钮阿,俺给俺公司用的是时钟,时刻监测有没有oicq在运行,还可以写入注册表,每次开机就运行,然后让窗体隐藏.呵呵...有问题,Mail to [email protected]
      

  2.   

    讲点实际的吧
    1》用VC的spy++找出OICQ对应的"应用程序类"
    2》利用API函数FindWindows找到句柄
    3》再用Kill来Kill掉它
    4》祝:顺利
      

  3.   

    刚才给的那个,俺以前能使的,现在好像不太灵了改成这个吧 hWnd_OICQ:=FindWindow('#32770','OICQ用户登录');
      

  4.   

    to bonner:
    谢谢你了,那段代码杀掉的只是未登录的oicq,而我想杀掉已经登录后的oicq,它的窗口
    显示的是当前用户的oicq号码,还是不行呀。麻烦你再想想办法。
      

  5.   

    to alwssoan:
    我没有vc,我想问delphi中有没有相应的工具,可以解决同样的问题呢?
      

  6.   

    哎,我来提一个建议,一般地,OICQ的可执行文件名为OIC.exe?搜索所有的进程,判断其可执行文件名是不是这个,然后Kill不就行了。不过这个方法不太保险,应该用查找类的方法来Kill,用Spy++查一下类名就可以了。然后用Findwindow的方法找到窗口,然后Kill。我这儿没有Spy++,不然帮你找一下。
      

  7.   

    to:bigstrong
    没有spy++的话
    用borland的winsight32.exe
    一样的啊!
      

  8.   

    呵呵,网把会给你装Delphi?除了IE or OICQ什么也没有!
      

  9.   

    还好,我终于弄出来了,嘿嘿,真是谢谢大家了。
    用的GetParent();代码如下:
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var hwnd_oicq:HWND;
    begin
     hwnd_oicq:=findwindow('#32770',nil);
     hwnd_oicq:=getparent(hwnd_oicq);
      if hwnd_oicq <>0 then
     begin
     sendmessage(hwnd_oicq,WM_CLOSE,0,0);
     end;
    end;
      

  10.   

    用 C++Builder 开发的 软件 速度快不快 ???  但说无妨!!!
    用 C++Builder 开发的 GAME 速度快不快 ???  但说无妨!!!  
      

  11.   

    to kaikaikaikai(kai):
      你最好单独写一个帖子来问。
      

  12.   

    用#32770,万一老马改了id,你的软件又得重改了:)
    干脆发挥一下,将id号独立出来,就成了护花使者了,呵呵呵
      

  13.   

    很奇怪,我写了如下代码
    hwnd_oicq:=findwindow('#32770',nil);
      if hwnd_oicq <>0 then
    caption:=inttostr(hwnd_oicq)
    else
    caption:='0'
    在我把oicq退出后,form的caption仍不为'0',这是什么原因???