Visual c++ and Window Services
Visual c++ and Window Services
这是我用Visual C++6.0编写的程序的代码:
#include <Windows.h>
#include "stdafx.h"
#include <stdlib.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
while(true)
{
int sleepInterval = rand()%15;
Sleep(sleepInterval*1000);
WinExec("notepad.exe" ,SW_SHOWNORMAL);
}
return 0;
}
然后我把这个代码生成的*.exe文件移到桌面上。我从那里开始。一切正常,我的意思是记事本编辑器窗口不时出现。然后,我在命令提示符下使用以下命令创建了Windows服务:C: \Documents and Settings\Administrator>sc create ThemesService2 binPath="C:\Documents and Settings\AAdministrator\Desktop\win32apphelloworld.exe"DisplayName="Themes Service2"start=auto
命令提示符的结果是:[SC]CreateService SUCCESS到目前为止,一切都很好——创建了一个服务,它必须在Windows启动时自动启动。我重新启动。然后什么也没发生,记事本上的窗口不会出现。我从「开始」菜单->"运行"打开Services.msc。服务在那里,但它的状态是空的,我的意思是它的stsatus不是"已启动"。其"启动类型"应为"自动"。但它还没有开始。我试图用鼠标右键手动启动它,然后单击"启动",出现一个meesage框,上面写着:"错误1053:服务没有及时响应启动或控制请求"。有人能告诉我这项服务没有启动的原因吗?感谢
Windows服务程序不仅仅是一个C++可执行程序,它还必须实现某些功能,例如提供服务入口点。在这种情况下,您必须调用StartServiceCtrlDispatcher
(这样Windows就知道它应该开始与服务通信),但这还不够。有关编写服务程序的信息,请参阅MSDN文档。
此外,如果您希望服务能够与桌面交互,则需要在服务属性中选中"允许服务与桌面交互"。
编辑:如果您只想在Windows启动时自动运行程序,您可以随时将其添加到启动文件夹或相应的注册表项中。
- WebKit2GTK+ "window-object-cleared"未清除
- MFC GetDC() 断言失败 - "Not a window"
- OpenCV : 为什么"Gray window"总是生成?
- QMediaPlayer 無法在 Window 上播放歌曲
- window.display() 单独在显示的最后一个缓冲区和当前缓冲区之间切换
- opencv cv::addText exception if no window
- 我如何使用 GTK3 在 C 中调用另一个"window"
- Winapi Window窗口异常破坏多个作品
- SFML std::length_error on window.setTitle
- 请参阅Watch-Window中的原始类型定义
- 如果使用WM_PAINT样式创建 Window,则永远不会传递WS_POPUP消息
- 如何使用 c++ 在 "Application and Services Logs" 部分创建事件日志
- Qt在单击按钮时调用Child-Window
- 在Visual Studio中使用Window Media Player
- Visual Studio 2015 Community - Immediate Window
- Windows Web Services框架中发生了无法识别的错误
- Window.h c ++如何从开关内的数组中获取按钮的索引
- 在没有 UWP 的情况下从 C++/WinRT 使用 FileOpenPicker 时出现视觉"Invalid window handle"错误
- 这是从VS window c ++项目迁移到linux项目的最有效方法
- Visual c++ and Window Services