如何以正常方式结束另外一个程序?
ExitProcess 和PostQuitMessage都是结束自身的,那怎么去正常结束另外一个程序? 不用TerminateProcess强行结束的话? 问题点数:0、回复次数:7Top
1 楼StdAfx(任杰)回复于 2003-08-01 03:22:12 得分 0
LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
hWnd是你打算关闭的程序的主窗口句柄
采用 WM_CLOSE 消息就是正常结束。Top
2 楼NoZ(冤扣17分)回复于 2003-08-01 07:23:51 得分 0
但是如果是没有窗口的程序怎么办? 比如控制台程序, 不能用FindWindowEx找到吧?
或者是一个服务程序。 主要是这个Top
3 楼yh824()回复于 2003-08-01 08:28:08 得分 0
用*toolhelp*扫描进程列表,取道进程id然后terminateprocess...Top
4 楼Anikan(皮皮鱼)回复于 2003-08-01 09:30:50 得分 0
另外一个应用程序也是你自己写的吗?如果不是,那么谈不上正常结束。
反之,如果是窗口程序那么就用SENDMESSAGE就好了。不是的话,创建一段
共享内存,在其中设置一退出标志就可以了。Top
5 楼NoZ(冤扣17分)回复于 2003-08-01 17:44:56 得分 0
那就是理论上不能实现了? 那windows注销的时候怎么让各个程序结束的呢?
我想编个服务程序加载一个正常程序,类似ApptoService, 但是ApptoService服务停地时候加载的程序仍然在运行。 为了保证完整性,最好是先让正常结束,如果结束不了的话再kill。Top
6 楼NoZ(冤扣17分)回复于 2003-08-02 22:12:47 得分 0
up,是不是无法完成?Top
7 楼Anikan(皮皮鱼)回复于 2003-08-04 08:56:48 得分 0
windows在注销的时候采取这样的策略:枚举所有窗口,发送退出消息。但是对于工作
线程来说,WINDOWS无法保证其数据的完整性,测试代码你可以自己写一下。Top




