在自己写的delphi服务程序里,如果关闭外部的exe程序呢?还有,在自己编写的服务程序里如何修改屏幕的分辨率呢?我在自己编写的服务里,获取本机器的屏幕分辨率,我的分辨率是1366 x 768 ,但是我每次得到的都是1024 x 768。我做了个测试,在服务程序的一个form的create方法里,输出当前屏幕的分辨率,这个create过程执行了好几遍,1366 x 768 和1024 x 768都有输出。不知道是什么情况。请大家帮帮忙。

解决方案 »

  1.   

    postmessage(句柄,wm_syscommand,sc_close,0);
      

  2.   


    还是没有将外部的程序关闭。我是用OpenProcess得到进程ID
      

  3.   

    一定要找EXE的句柄,才能操控关闭。
      

  4.   

    请问怎么才能得到这个exe的句柄啊?
      

  5.   

    句柄=findwindow(nil,'窗体标题');
    postmessage(句柄,wm_syscommand,sw_close,0);
      

  6.   

    句柄:=findwindow(nil,'窗体标题');
    postmessage(句柄,wm_syscommand,sc_close,0);
      

  7.   

    句柄:=findwindow(nil,'窗体标题');
    postmessage(句柄,wm_syscommand,sc_close,0);
    这种方法在普通的应用程序好像可以,但是在服务程序里好像还真不行。
      

  8.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0
      

  9.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0没有窗体标题也可以找到handle,但需要知道类名。
      

  10.   

    没有可视化界面的话找不到handle,但应该可以找到进程,然后关闭进程
      

  11.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0没有窗体标题也可以找到handle,但需要知道类名。不是没有窗体标题,我是指我的服务程序没有窗体,外部的exe程序是有窗体的。但是我不知道为啥,就是得不到那个外部exe的句柄,不知道是不是服务程序里需要什么权限否?
      

  12.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0没有窗体标题也可以找到handle,但需要知道类名。关闭进程倒是可以实现,但是如果直接关闭进程,我还需要改屏幕的分辨率。我的外部exe程序就是修改屏幕分辨率的,启动的时候将屏幕分辨率改成800x600,关闭后又将屏幕分辨率改回来。
      

  13.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0没有窗体标题也可以找到handle,但需要知道类名。关闭进程倒是可以实现,但是如果直接关闭进程,我还需要改屏幕的分辨率。我的外部exe程序就是修改屏幕分辨率的,启动的时候将屏幕分辨率改成800x600,关闭后又将屏幕分辨率改回来。1、既然外部EXE也是你的,那还不简单,在EXE里面定义一个唯一的类型名,然后通过服务程序查找;
    2、外部程序启动时向服务程序发送自己的句柄;
      

  14.   


    我使用findwindow在普通的应用程序,通过点击按钮,可以得到我想要的handle,但是,在服务程序里,没有可视化界面,得到的句柄就总是0没有窗体标题也可以找到handle,但需要知道类名。关闭进程倒是可以实现,但是如果直接关闭进程,我还需要改屏幕的分辨率。我的外部exe程序就是修改屏幕分辨率的,启动的时候将屏幕分辨率改成800x600,关闭后又将屏幕分辨率改回来。1、既然外部EXE也是你的,那还不简单,在EXE里面定义一个唯一的类型名,然后通过服务程序查找;
    2、外部程序启动时向服务程序发送自己的句柄;大哥,这能不能再说详细一点啊?第一种方法,定义一个记录类型吗?服务程序如何查找啊?查找什么啊?
    第二种方法,是通过tcp或者udp发送吗?或者还有其他的方法发送啊?
    谢谢了,这个我不是很懂。
      

  15.   

    服务程序跟外面的exe程序是不是不在同一个桌面环境下的啊?为什么我获得的屏幕分辨率不是我自己桌面的分辨率啊?