在本文中,我们将给您介绍关于Windows优雅的程序化closures的详细内容,并且为您解答程序化设置的相关问题,此外,我们还将为您提供关于C++Windows:如何closures控制台窗口?、C
在本文中,我们将给您介绍关于Windows优雅的程序化closures的详细内容,并且为您解答程序化设置的相关问题,此外,我们还将为您提供关于C ++ Windows:如何closures控制台窗口?、CherryPy会干扰Windows上的Twistedclosures、closuresWindows服务的显示、closuresWindows框C#的知识。
本文目录一览:- Windows优雅的程序化closures(程序化设置)
- C ++ Windows:如何closures控制台窗口?
- CherryPy会干扰Windows上的Twistedclosures
- closuresWindows服务的显示
- closuresWindows框C#
Windows优雅的程序化closures(程序化设置)
我们有一个运行在Windowsembedded式目标上的(C#/。NET)应用程序,只需按下一个button就可以closures机器。 理想情况下,我希望程序在closures之前退出并执行清理(包括将附加硬件置于安全状态)。 但是,当然,一旦程序closures,我不能执行关机命令! 那么这可以做到吗?
使用Redis CLI连接到远程Azure Rediscaching
SetwindowsHookEx与SetWinHookEventEx
Windows SDK安装失败
仅用“closures”或“取消”button显示错误对话框(MessageBox)?
我正在写一个包装的CMD,但有麻烦redirect标准input
当然可以做,而且很容易。
开始一个发出“shutdown / s”的进程,退出你的程序。
如何从C#关闭电脑从这里拿走:
从Windows XP开始,不可用于win 2000或更低版本:
这是最快的方法:
Process.Start("shutdown","/s /t 0");
否则像其他人所说的那样使用P / Invoke或WMI。
实现Application.ApplicationExit事件(winforms),在任何情况下你的应用程序都被关闭。
MSDN示例 。
对于WPF:
https://stackoverflow.com/a/20347268/558018
从C#中,关闭最好的方法是:
shutdown.exe /f /r /t 0
通过Process.Start(..)执行代码,您的计算机将立即开始其关机过程。
当然,在你执行这个之前,你应该做你的“清理”程序。
C ++ Windows:如何closures控制台窗口?
我有一个控制台窗口打开使用AllocConsole(),除了主Win32窗口。 控制台窗口在主窗口之前打开。
当我closures主窗口并从主函数返回程序时,控制台保持打开状态(进程也是如此)。 它实际上停留在ntdll的某个地方,因为debugging器显示暂停Visual Studio 2012中的程序。
通过单击Xbuttonclosures它,退出该过程,但使用FreeConsole()closures该过程不会,该过程保持无窗口状态。 CloseWindow(GetConsoleWindow())不closures它,它将它最小化(!?!)。 PostMessage(GetConsoleWindow(),WM_QUIT,0,0)closures窗口,但是进程仍然在工作(从外观上看,这和FreeConsole()是一样的。
有时程序以正确的方式退出,但每次都点击Xbutton。
C ++:一个徘徊的'幽灵'窗口出现..?
Go编译器有一个窗口设置选项吗?
在x86程序中的控制台
C#Windows服务和控制台应用于一体
控制台coutanimation – C ++
我该如何做同样的事情,点击Xbutton呢?
Cout和Cin在Linux中 – 看不到控制台
如何获取我的进程绑定到控制台中的字符数量?
FreePascal控制台video行和列
Windows控制台中的选项卡
控制台在C ++中暂停?
使用PostMessage(wnd,WM_CLOSE,0)来关闭控制台窗口,但问题可能是在程序中的其他地方,即使这可以作为修补程序。 从main()或WinMain()返回时,控制台窗口应自动关闭/消失。
您需要使用FreeConsole销毁WM_DESTROY消息中的控制台。 我通常在一个包装我的控制台的课上做这个。 这样可以将输入/输出重定向到构造函数中的控制台,并在析构函数中重置输入/输出以及分别分配/销毁控制台。
但是,如果不使用类或任何包装器,可以按照以下步骤完成。
例:
#include <windows.h> #include <streambuf> #include <fstream> #include <iostream> std::streambuf *CinBuffer,*CoutBuffer,*CerrBuffer; std::fstream ConsoleInput,ConsoleOutput,ConsoleError; void RedirectIO() { CinBuffer = std::cin.rdbuf(); CoutBuffer = std::cout.rdbuf(); CerrBuffer = std::cerr.rdbuf(); ConsoleInput.open("CONIN$",std::ios::in); ConsoleOutput.open("CONOUT$",std::ios::out); ConsoleError.open("CONOUT$",std::ios::out); std::cin.rdbuf(ConsoleInput.rdbuf()); std::cout.rdbuf(ConsoleOutput.rdbuf()); std::cerr.rdbuf(ConsoleError.rdbuf()); } void ResetIO() { ConsoleInput.close(); ConsoleOutput.close(); ConsoleError.close(); std::cin.rdbuf(CinBuffer); std::cout.rdbuf(CoutBuffer); std::cerr.rdbuf(CerrBuffer); CinBuffer = NULL; CoutBuffer = NULL; CerrBuffer = NULL; } LRESULT __stdcall WindowProcedure(HWND Hwnd,UINT Msg,WParaM wParam,LParaM lParam) { switch(Msg) { case WM_CREATE: AllocConsole(); RedirectIO(); std::cout<<"HELLO CONSOLE!"<<std::endl; break; case WM_DESTROY: std::cout<<"BYE-BYE CONSOLE!"<<std::endl; ResetIO(); FreeConsole(); PostQuitMessage(0); return 0; default: return DefWindowProc(Hwnd,Msg,wParam,lParam); } return 0; }; int main() { WNDCLASSEX WndClass = { sizeof(WNDCLASSEX),CS_DBLCLKS,WindowProcedure,GetmoduleeHandle(NULL),LoadIcon(NULL,IDI_APPLICATION),LoadCursor(NULL,IDC_ARROW),HBrush(COLOR_WINDOW + 1),NULL,"WindowClass",LoadIcon (NULL,IDI_APPLICATION) }; if(RegisterClassEx(&WndClass)) { HWND WindowHandle = CreateWindowEx(0,"Window Title",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,500,NULL); if(WindowHandle) { MSG msg = {NULL}; ShowWindow(WindowHandle,SW_SHOWDEFAULT); while(GetMessage(&msg,0)) { TranslateMessage(&msg); dispatchMessage(&msg); } } } }
#include <windows.h> HWND myConsole = GetConsoleWindow(); //window handle ShowWindow(myConsole,0); //handle window
我使用的解决方案是将Linker-> System-> SubSystem设置为“Windows(/ SUBSYstem:WINDOWS)”而不是“Console(/ SUBSYstem:CONSOLE)”。 这使得控制台甚至不会出现,从而避免了闪烁。 第二个解决方案对我来说比较好,而且第一个已经过时了。
CherryPy会干扰Windows上的Twistedclosures
我有一个应用程序运行Twisted,在启动一些其他线程(包括CherryPy Web服务器reactor.run()在主线程中启动reactor.run()并启动reactor。 这里有一个程序,在Linux上按下Ctrl + C而不是在Windows上时,会干净地closures:
from threading import Thread from signal import signal,SIGINT import cherrypy from twisted.internet import reactor from twisted.web.client import getPage def stop(signum,frame): cherrypy.engine.exit() reactor.callFromThread(reactor.stop) signal(SIGINT,stop) class Root: @cherrypy.expose def index(self): reactor.callFromThread(kickoff) return "Hello World!" cherrypy.server.socket_host = "0.0.0.0" Thread(target=cherrypy.quickstart,args=[Root()]).start() def print_page(html): print(html) def kickoff(): getPage("http://acpstats/account/login").addCallback(print_page) reactor.run()
我相信CherryPy是这里的罪魁祸首,因为这里有一个不用CherryPy编写的程序,当Ctrl + C被按下时,它在Linux和Windows上干净地closures:
from time import sleep from threading import Thread from signal import signal,SIGINT from twisted.internet import reactor from twisted.web.client import getPage keep_going = True def stop(signum,frame): global keep_going keep_going = False reactor.callFromThread(reactor.stop) signal(SIGINT,stop) def print_page(html): print(html) def kickoff(): getPage("http://acpstats/account/login").addCallback(print_page) def periodic_downloader(): while keep_going: reactor.callFromThread(kickoff) sleep(5) Thread(target=periodic_downloader).start() reactor.run()
有谁知道问题是什么? 这是我的难题:
在Linux上一切正常
在Windows上,当CherryPy不运行时,我可以使用reactor.callFromThread从信号处理程序调用函数
当CherryPy运行时,没有任何函数使用reactor.callFromThread从一个信号处理程序中执行(我已经validation信号处理程序本身是否被调用)
我能做些什么呢? 如何在运行CherryPy时从信号处理程序closuresWindows上的Twisted? 这是一个错误,还是我错过了这两个项目的文档的重要部分?
强制python使用旧版本的模块(比我现在安装的)
Python / Twisted程序在Windows下validationSSL证书的正确方法是什么?
python-twisted和SIGKILL
安装扭曲在Python中失败,'没有这样的文件'
Pip不会在Windows上安装Twisted
我怎样才能在python中使用pseudoterminal来模拟一个串行端口?
python执行远程程序
win32api.dll不会安装
连接到(有时是虚拟化的)Windows计算机上运行的服务器时出现的问题
无法在Windows机器上安装扭曲的包
当您调用快速启动时,CherryPy默认处理信号。 在你的情况下,你应该展开快速入门,这只是几行,然后挑选。 这里基本上是快速启动在干线中的作用:
if config: cherrypy.config.update(config) tree.mount(root,script_name,config) if hasattr(engine,"signal_handler"): engine.signal_handler.subscribe() if hasattr(engine,"console_control_handler"): engine.console_control_handler.subscribe() engine.start() engine.block()
在你的情况下,你不需要信号处理程序,所以你可以省略这些。 如果你没有从主线程启动CherryPy,你也不需要调用engine.block。 Engine.block()只是使主线程不会立即终止的一种方法,而是等待进程终止(这是因为autoreload可以可靠地工作;有些平台在除了主线程之外的任何线程中调用execv的问题)。
如果你删除了block()调用,你甚至不需要快速启动的Thread()。 所以,更换你的线路:
Thread(target=cherrypy.quickstart,args=[Root()]).start()
有:
cherrypy.tree.mount(Root()) cherrypy.engine.start()
closuresWindows服务的显示
我已经写了一个Windows服务,应该在某些情况下closures显示器。 我使用的代码是:
private const int MONITOR_OFF = 2; SendMessage(GetDesktopWindow().ToInt32(),WM_SYSCOMMAND,SC_MONITORPOWER,MONITOR_OFF);
这个相同的代码从Windows应用程序工作,但从Windows服务执行时,没有任何反应。 也没有例外, Marshal.GetLastWin32Error()也返回0。
任何想法,我可能会失踪?
Windows服务代码在C,在哪里编写服务逻辑代码?
如何创build一个侦听已更改文件或新文件的文件夹
如何从TFS构build定义输出Windows服务项目
WTSQueryUserToken总是抛出“试图引用一个不存在的令牌”在Windows 7上在C#
存储Windows(NT)服务使用的密码
Windows服务的替代方法
如何终止作为服务运行的应用程序?
Windows任务计划程序将只运行一次应用程序
将焦点集中到使用CreateProcessAsUser从系统服务启动的窗口
系统用户的任务栏图标在哪里?
因为服务没有对桌面的默认访问权限,所以你对GetDesktopWindow()的调用返回的结果不是你期望的; 然后盲目地将其转换为Int32并将其用作SendMessage()的窗口句柄目标。 由于收件人可能不是一个有效的窗口,它不会做任何事情。
您可以尝试在服务管理实用程序中编辑服务的属性,以允许桌面交互。
服务运行在他们自己的虚拟桌面空间(他们甚至可以拥有自己的用户配置文件空间)。它是Windows内置安全模型的一部分。 最好的办法是在后台运行一个服务,在用户桌面上运行一个用户模式客户端。 根据用户访问级别的不同,用户可能会终止服务/用户模式客户端。 但是你也可以查询进程,以确保用户应用程序仍在运行。
closuresWindows框C#
不知有人知道如何用ac#命令打开这个盒子吗?
提前致谢!
失去参数值
如何在PictureBox中以1:1显示像素
为什么不会Application.Exit()退出Windows窗体应用程序?
什么时候由.NET进程分配的内存被释放回Windows
准确的时间睡在python
Python检查一个进程是否正在运行
如何在Windows启动时启动python文件?
Dot Net 4.0.30319初始化错误
无法在Windows 2012 R2上安装JDK 7u51(64位)“此应用无法在您的PC上运行”
__vectorcall和C ++构造函数
您必须添加对Shell32.dll(COM – >“Microsoft Shell Controls And Automation”)的引用并使用以下代码:
Shell32.Shell shell = new Shell32.Shell(); shell.ShutdownWindows();
添加对C: Windows System32 Shell32.dll的引用。 完成后,使用下面的代码:
Shell32.ShellClass sc = new Shell32.ShellClass(); sc.ShutdownWindows();
这将正常显示关机对话框。
关于Windows优雅的程序化closures和程序化设置的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于C ++ Windows:如何closures控制台窗口?、CherryPy会干扰Windows上的Twistedclosures、closuresWindows服务的显示、closuresWindows框C#等相关内容,可以在本站寻找。
本文标签: