Qt退出程序的问题

lgy812079275 2012-09-05 01:05:06
先运行程序1,在手动启动程序2,请问在程序2中如何使程序1退出。(注:windows下Qt编程,程序1和2没有其它关系,相互独立)
...全文
203 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lgy812079275 2012-09-06
[Quote=引用 7 楼 的回复:]

了一使用windows API

HWND hwnd = ::FindWindow(NULL, QString("窗口名称").toStdWString().c_str());
if(hwnd != NULL)
{
::SendMessageW(hwnd, WM_CLOSE, 0, 0);
}
[/Quote]
使用会出错,无法解析!!!
回复
colormiao 2012-09-06
顶!!!

[Quote=引用 7 楼 的回复:]

了一使用windows API

HWND hwnd = ::FindWindow(NULL, QString("窗口名称").toStdWString().c_str());
if(hwnd != NULL)
{
::SendMessageW(hwnd, WM_CLOSE, 0, 0);
}
[/Quote]
回复
再搬一次砖 2012-09-06
遍历当前所有进程,找到程序1的pid,然后杀掉。http://zhidao.baidu.com/question/353101511.html&__bd_tkn__=68f2486e7432d962115ea63ea8a466bccb1b9fa08078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157b59fe339d66acf95f0f03de0125277edc31b17a4e779a750b5fc98fa73a327900593220ce64094141bda4a9940f88accbdc8d0dc33c2af14fae这个说明了怎么获取pid
回复
nc_czy 2012-09-06
看看,最近开始学Qt了
回复
了一使用windows API

HWND hwnd = ::FindWindow(NULL, QString("窗口名称").toStdWString().c_str());
if(hwnd != NULL)
{
::SendMessageW(hwnd, WM_CLOSE, 0, 0);
}
回复
lgy812079275 2012-09-05
[Quote=引用 4 楼 的回复:]

这个简单,方法很多。最简单的,加一个文件当作锁。程序1启动后打开文件。程序二启动后发现这个文件被别的程序占用,查询哪一个进程占用它,然后向那个进程发送退出信号。程序1收到退出信号,自己乖乖退出。
[/Quote]
有没有一个类用来关闭某个进程,就像像Qprocess启动一个进程一样。
或者你贴个代码
回复
lgy812079275 2012-09-05
[Quote=引用 3 楼 的回复:]

容易啊,程序2可以发socket消息,然后1收到处理关闭即可。
[/Quote]

就是退出还要写socket啊!那不是很浪费资源吗?有没有一个类用来关闭某个进程,就像像Qprocess启动一个进程一样。
回复
sitiaohuzi 2012-09-05
这个简单,方法很多。最简单的,加一个文件当作锁。程序1启动后打开文件。程序二启动后发现这个文件被别的程序占用,查询哪一个进程占用它,然后向那个进程发送退出信号。程序1收到退出信号,自己乖乖退出。
回复
dinjay 2012-09-05
容易啊,程序2可以发socket消息,然后1收到处理关闭即可。
回复
挣扎中前行 2012-09-05
[Quote=引用 1 楼 的回复:]

kill 程序1
[/Quote]

如何获得一得进程号呢?要调用用windows的系统函数?
回复
wshn13 2012-09-05
kill 程序1
回复
发动态
发帖子
Qt
创建于2009-11-04

1.2w+

社区成员

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
申请成为版主
社区公告
暂无公告