windows c++窗口应用程序静默运行

一、静默运行

1、在代码中加上以下代码,在cmd命令窗口执行xxx.exe时,会静默执行

#pragma comment(linker, "/SUBSYSTEM:WINDOWS")
#pragma comment(linker, "/ENTRY:mainCRTStartup")

2、启动脚本start.bat

::不回显
@echo off
::查看进程是否已启动
tasklist | findstr agent.exe
if %errorlevel%==0 (
	echo The process has started!!!
) else (
    ::后台启动agent.ext,并将命令行参数传给agent.ext,%*表示所有命令行参数
	start /b .\agent.exe %*
    ::等待5s
	timeout /t 5 /nobreak > nul
    ::查看进程是否启动成功, && 表示前一个命令运行成功,后一个命令才运行
	tasklist | findstr agent.exe && echo The process start success. && goto end
	echo The process start failed!!!
)
:end

3、停止脚本stop.bat

@echo off
tasklist | findstr pagent.exe && taskkill /f /fi "IMAGENAME eq pcdn_router_agent.exe"

二、后台运行,通过vbscript控制

'定义变量
Dim wShell, exec
'变量赋值
Set wShell = CreateObject( "WScript.Shell" )
Set exec = wShell.Exec ("cmd.exe /c tasklist | findstr pcdn_router_agent.exe") 
'获取命令返回结果
str1 = exec.StdOut.ReadAll

if str1 <> "" then
	msgbox "Process has started, Do not start repeat!!!"
else
    '获取命令行参数
	Set oArgs = WScript.Arguments
	Dim param
	param = ".\Release\pcdn_router_agent.exe"
    '获取命令行传入的每一个参数
	For Each s In oArgs
		param = param & " " & s
	Next
	Set oArgs = Nothing
    '后台运行命令,0表示后台运行
	wShell.run param,0
	WScript.sleep 5000
	Set exec = wShell.Exec ("cmd.exe /c tasklist | findstr pcdn_router_agent.exe") 
	str1 = exec.StdOut.ReadAll
	if str1 <> "" then
		msgbox "Process start success"
	else
		msgbox "Process start failed!!!"
	end if
end if

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C++ Windows应用程序窗口中创建菜单,您可以按照以下步骤进行操作: 1. 在Visual Studio中打开您的项目,并打开资源编辑器。 2. 在资源编辑器中创建一个新的菜单资源,并为其指定一个ID。 3. 在您的窗口类中添加一个成员变量,用于保存菜单的句柄。 4. 在窗口类的消息处理函数中添加对WM_CREATE消息的处理代码。在这个处理函数中,使用LoadMenu()函数加载菜单资源,并使用GetSubMenu()函数获取菜单中的子菜单。然后,使用SetMenu()函数将子菜单设置为窗口的菜单。 5. 在窗口类的消息处理函数中添加对WM_COMMAND消息的处理代码。在这个处理函数中,根据命令ID执行所需的操作。 以下是一个示例代码,演示如何在C++ Windows应用程序窗口中创建菜单: ```cpp class CMyWindow : public CFrameWnd { public: CMyWindow() { // 加载菜单资源并获取子菜单 HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDR_MENU1)); m_hSubMenu = GetSubMenu(hMenu, 0); // 将子菜单设置为窗口菜单 SetMenu(m_hSubMenu); } afx_msg void OnFileOpen() { // 打开文件操作 } afx_msg void OnFileSave() { // 保存文件操作 } DECLARE_MESSAGE_MAP() private: HMENU m_hSubMenu; }; BEGIN_MESSAGE_MAP(CMyWindow, CFrameWnd) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_FILE_SAVE, OnFileSave) END_MESSAGE_MAP() ``` 在这个示例中,我们使用LoadMenu()函数加载了一个名为IDR_MENU1的菜单资源,并使用GetSubMenu()函数获取了菜单中的第一个子菜单。然后,我们将子菜单设置为窗口的菜单,并使用ON_COMMAND宏将每个菜单项与窗口类中的消息处理函数关联起来。当用户选择“打开”菜单项时,将调用OnFileOpen()函数,当用户选择“保存”菜单项时,将调用OnFileSave()函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值