递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1194|回复: 9
打印 上一主题 下一主题

[视窗] 求助@X大佬,终止命令,在win7上无效,帮忙解决,谢谢。

[复制链接]

82

主题

754

帖子

6034

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6034
跳转到指定楼层
楼主
发表于 2024-6-27 17:31:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zqiz 于 2024-6-27 17:34 编辑

求助@X大佬,终止命令,在win7上无效,帮忙解决,谢谢。在win11上没问题,没有win10机,未测试。

<火山程序 类型 = "通常" 版本 = 1 />

方法 终止命令 <公开 静态 注释 = "在命令行提示符中发出CTRL+C信号,终止正在执行的命令.">
参数 进程ID <类型 = 整数>
{
    @ ::AttachConsole((DWORD)@<进程ID>);
    @ ::GenerateConsoleCtrlEvent(CTRL_C_EVENT, (DWORD)@<进程ID>);
    @ ::FreeConsole();
}

我主要用途是  A:  运行 (取运行目录 () + "bin/ffmpeg -y -i  rtmp://....."
   B:终止命令 (进程_名取ID ("ffmpeg.exe", ))


回复

使用道具 举报

50

主题

549

帖子

2334

积分

金牌会员

Rank: 6Rank: 6

积分
2334
沙发
发表于 2024-6-27 18:05:30 | 只看该作者


[backcolor=rgba(245, 246, 249, 0.4)]














[backcolor=rgba(245, 246, 249, 0.4)]#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <iostream>
#include <cerrno>

int main() {
    pid_t pid = getpid(); // 获取当前进程ID
    std::cout << "当前进程ID: " << pid << std::endl;

    // 假设我们要终止的是当前进程,你可以更改pid来指向其他进程
    if (kill(pid, SIGTERM) != 0) {
        std::cerr << "kill函数调用失败: " << strerror(errno) << std::endl;
        return 1;
    }

    std::cout << "SIGTERM信号已发送给指定的进程" << std::endl;
    return 0;
}
这个试试?


回复

使用道具 举报

82

主题

754

帖子

6034

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6034
板凳
 楼主| 发表于 2024-6-27 18:31:38 | 只看该作者
不会封啊
回复

使用道具 举报

50

主题

549

帖子

2334

积分

金牌会员

Rank: 6Rank: 6

积分
2334
地板
发表于 2024-6-27 22:58:09 | 只看该作者
函数 HH_进程ID终止程序_强制(整型 进程ID)
        #嵌入代码
        HANDLE processHandle;
        processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 进程ID);
        TerminateProcess(processHandle, 1);
        CloseHandle(processHandle);
        #嵌入代码_结束
炫语言写的,参考这个写下,看下WIN7支持吗?

回复

使用道具 举报

50

主题

549

帖子

2334

积分

金牌会员

Rank: 6Rank: 6

积分
2334
5#
发表于 2024-6-27 23:00:15 | 只看该作者
本帖最后由 呵呵仙8 于 2024-6-27 23:02 编辑

函数 HH_进程ID终止程序(整型 进程ID)
        #嵌入代码
        HANDLE processHandle;
        processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 进程ID);
        TerminateProcess(processHandle, 1);
        CloseHandle(processHandle);
        #嵌入代码_结束
炫语言写的,你参考下写法,看WIN7支持吗?TerminateProcess(processHandle, 0);//为0也可以


回复

使用道具 举报

82

主题

754

帖子

6034

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6034
6#
 楼主| 发表于 2024-6-28 14:49:36 | 只看该作者
呵呵仙8 发表于 2024-6-27 23:00
函数 HH_进程ID终止程序(整型 进程ID)
        #嵌入代码
        HANDLE processHandle;

谢谢。看不懂。最终想要达到的效果是:用程序往cmd窗口里输入字母“q”,以达到结束窗口。
回复

使用道具 举报

26

主题

1820

帖子

6645

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6645
7#
发表于 2024-6-28 15:39:03 | 只看该作者
本帖最后由 Xelloss0618 于 2024-6-28 20:24 编辑

虚拟机用XP测试通过了,你试一下

<火山程序 类型 = "通常" 版本 = 1 />

方法 终止命令 <公开 静态 注释 = "在命令行提示符中发出CTRL+C信号,终止正在执行的命令.">
参数 进程ID <类型 = 整数>
{
    @ ::AttachConsole((DWORD)@<进程ID>);
    @ ::SetConsoleCtrlHandler(NULL, TRUE);
    @ ::GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
    @ ::FreeConsole();
}
回复

使用道具 举报

82

主题

754

帖子

6034

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6034
8#
 楼主| 发表于 2024-6-28 16:13:27 | 只看该作者
Xelloss0618 发表于 2024-6-28 15:39
虚拟机用XP测试通过了,你试一下

谢谢,大佬。在win7上可以了,但是整个程序都退出了。修改什么地方才不至于都退出。
回复

使用道具 举报

26

主题

1820

帖子

6645

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6645
9#
发表于 2024-6-28 20:25:04 | 只看该作者
zqiz 发表于 2024-6-28 16:13
谢谢,大佬。在win7上可以了,但是整个程序都退出了。修改什么地方才不至于都退出。 ...

嗯,改了一下,你再试试
回复

使用道具 举报

82

主题

754

帖子

6034

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6034
10#
 楼主| 发表于 2024-6-28 22:39:54 | 只看该作者
Xelloss0618 发表于 2024-6-28 20:25
嗯,改了一下,你再试试

谢谢。还是不行。大佬,不用CTRL_C_EVENT,能给cmd窗口输入字母”q“,也行,我不懂封装,照葫芦画瓢,搞两天了,弄不来。嘿嘿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-9-30 05:53 , Processed in 0.092441 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表