C#程序如何后台运行 编写一个C#程序,运行时会弹出黑框,请问如何让程序后台运行。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用C#开发Windows服务监控系统使用 一、 什么是Windows服务? 其实,Windows服务只是运行于后台的并不要求我们了解的一种进程而已。而且,它们的绝大部分并不要求用户交互。如果我们在"开始"菜单的"运行"命令行下输入"services.msc"并回车,那么我们就可以看到在我们当前的系统中运行的服务情况。其中,有一些服务是当系统启动时自动启动的。但是,也有一些服务必须在我们的手工启动下才能运行。 二、 Windows服务的优点 1. 能够自动运行。 2. 不要求用户交互。 3. 在后台运行。 一般情况下,Windows服务被用于耗费时间很多的进程中,例如备份数据库,等等。 不选Console Application,那用哪个Project呢,其他都是带界面的。 正解!楼主开来接触编程时间不长。简单的,应用程序可以分为:控制台程序(就是你说的“黑框”,呵呵)、winForm程序,web程序,服务程序(windows服务是其中之一)...你这个可以做成window服务程序,把你的服务做成像打开这个services.msc里面的服务一样。 也可以做成winform程序,在程序启动时,设定隐藏窗口即可。毕竟服务时需要安装的,winform程序无需安装,拷贝过去即可 [DllImport("user32.dll", EntryPoint = "FindWindowEx")]public static extern int FindWindowEx(IntPtr hWnd1, int hWnd2, string lpsz1, string lpsz2);[DllImport("user32.dll", EntryPoint = "GetWindowText")]public static extern int GetWindowText(int hwnd, StringBuilder lpString, int cch);[DllImport("User32 ")]public static extern bool SendMessage(int hWnd, int Msg, int wParam, IntPtr lParam);public const int WM_GETTEXT = 0xD;private static void Test04(){ bool running = true; new Thread(() => { while (running) { Process[] process_array = Process.GetProcesses(); foreach (Process p in process_array) { if (p.MainWindowTitle.IndexOf("记事本") != -1)//找到了 { int hEdit = FindWindowEx(p.MainWindowHandle, 0, "Edit", ""); string w = " "; IntPtr ptr = Marshal.StringToHGlobalAnsi(w); if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr)); } } int tick = Environment.TickCount; while (running && Environment.TickCount - tick < 10000) { Thread.Sleep(10); } } Console.WriteLine("run over"); }).Start(); while (Console.ReadLine().ToLower() != "quit") ; running = false;}这个是刚才写的一个例子,目的是控制台程序中,建立个线程,每10秒查找一次当前的进程列表,如果有记事本,则在窗口打印出记事本中的文本。抛开功能,这里已经是很好的控制台程序下的多线程例子了。当你输入quit的时候软件退出,线程退出。反之控制台等待用户输入,同时监视当前进程。 不是系统服务,就是一个简单的应用程序,让其他程序定时调用,希望调用时不会弹出一个黑框,就这样。有没有像VC那样的有个什么入口参数代码#pragma comment(linker, "/subsystem:\ "windows\ " /entry:\ "mainCRTStartup\ " " ),什么的,这样就不会弹出黑框了。 项目属性->Application Type选择windows application编译即可。 excel文件导入导出SQL SqlCommand对象中的几种执行SQL语句的方法:ExecuteNonQuery,ExecuteReader,ExecuteScalar 怎么实现程序登陆后一段时间不操作就重新回到登陆窗口 Form_Load()与OnLoad()的区别 寻求帮助!!! c# panel自动滚动条最大值的问题 【100分】SOS!用户机器找不到mshtml的错误! 有个网站C#的程序有哪个朋友能够帮我改一下 如何获取文件类型 如何printScreen并获得这个图片? 请教打包工具InstallShield的皮肤问题 Browsable如何动态改变值?
一、 什么是Windows服务? 其实,Windows服务只是运行于后台的并不要求我们了解的一种进程而已。而且,它们的绝大部分并不要求用户交互。如果我们在"开始"菜单的"运行"命令行下输入"services.msc"并回车,那么我们就可以看到在我们当前的系统中运行的服务情况。其中,有一些服务是当系统启动时自动启动的。但是,也有一些服务必须在我们的手工启动下才能运行。 二、 Windows服务的优点 1. 能够自动运行。 2. 不要求用户交互。 3. 在后台运行。 一般情况下,Windows服务被用于耗费时间很多的进程中,例如备份数据库,等等。
你这个可以做成window服务程序,把你的服务做成像打开这个services.msc里面的服务一样。
public static extern int FindWindowEx(IntPtr hWnd1, int hWnd2, string lpsz1, string lpsz2);
[DllImport("user32.dll", EntryPoint = "GetWindowText")]
public static extern int GetWindowText(int hwnd, StringBuilder lpString, int cch);
[DllImport("User32 ")]
public static extern bool SendMessage(int hWnd, int Msg, int wParam, IntPtr lParam);public const int WM_GETTEXT = 0xD;
private static void Test04()
{
bool running = true;
new Thread(() =>
{
while (running)
{
Process[] process_array = Process.GetProcesses();
foreach (Process p in process_array)
{
if (p.MainWindowTitle.IndexOf("记事本") != -1)//找到了
{
int hEdit = FindWindowEx(p.MainWindowHandle, 0, "Edit", "");
string w = " ";
IntPtr ptr = Marshal.StringToHGlobalAnsi(w);
if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr));
}
}
int tick = Environment.TickCount;
while (running && Environment.TickCount - tick < 10000)
{
Thread.Sleep(10);
}
}
Console.WriteLine("run over");
}).Start();
while (Console.ReadLine().ToLower() != "quit") ;
running = false;
}这个是刚才写的一个例子,目的是控制台程序中,建立个线程,每10秒查找一次当前的进程列表,如果有记事本,则在窗口打印出记事本中的文本。抛开功能,这里已经是很好的控制台程序下的多线程例子了。当你输入quit的时候软件退出,线程退出。反之控制台等待用户输入,同时监视当前进程。
有没有像VC那样的有个什么入口参数代码#pragma comment(linker, "/subsystem:\ "windows\ " /entry:\ "mainCRTStartup\ " " ),什么的,这样就不会弹出黑框了。