因为做也个聊天程序。但是如果服务器端开了防火墙的话,就连接不上了。
所以想启动后先把防火墙功能关了,然后再让人连接。不知怎么用程序实现。人家QQ不知是怎么做到的,同样是开了XP自带的防火墙,但还是一样照聊不误,而且如果是公网也不用通过服务器中转。如果大家能做到这样的话那就不用管上面的方法了。(前提是不经过其它服务器中转啊)。

解决方案 »

  1.   

    晕。我现在已经发现了XP什么原因了。启运了防火墙的话其实就等于是运行了。
    C:\WINDOWS\System32\alg.exe
    这个文件。这时我按下ctrl+alt+del键,发现会多了一个进程
    进程的资料如下:
    映像名称:alg.exe
    ....
    ...
    其实只要关闭这个进程就可以了。可是这个程没有窗口标题,本人技术不行,只会用findwindow 或enumwindows这些函数来找窗口句柄,不知哪位帮个忙,给个代码让我把这个进程关了。我现在的思路是运行我的程时关了它。关闭我的程序时就打开它。这样才不会映响人家的正常使用啊。
      

  2.   

    uses tlhelp32;
    var
      hSnapShot: THandle;
      lppe     : TProcessEntry32;
      hProcess : Cardinal;
    begin
      hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      lppe.dwSize := sizeof(lppe);
      if Process32First(hSnapShot,lppe) then
      begin
        while Process32Next(hSnapShot,lppe) do
        begin
          if lppe.szExeFile = 'uedit32.exe' then
          begin
            //showmessage('ultraedit is running!');
            //TerminateProcess(lppe.th32ProcessID,0);
            hProcess := OpenProcess(PROCESS_ALL_ACCESS,True,lppe.th32ProcessID);
            TerminateProcess(hProcess,0)
          end;
        end;
      end;
      CloseHandle(hSnapShot);
    end;上面的程序用到了进程快照,你只需要把'uedit32.exe' 改为你程序名'alg.exe'就可以了
    <2000下调试通过,不过XP不知道支持不支持>
    启动程序相信你可以自己来加了,用shellexecute或者winexec都可以
      

  3.   

    请请 naughtyboy(重归起跑线) 给出了代码,
    但是测试过,这段代码只能关掉一般的用户名的进程。
    但不能删除这个进程。alg.exe 在"windows 任务管理器"中显示用户名为local service
    我想是不是与这个用户名有关系呢?
      

  4.   

    你看看它是不是服务,如果是服务直接用stopservice或者net stop就可以停掉了
    如果不行,只能修改自己进程的权限,程序和实现2000关机的代码相类似