【发布时间】:2014-12-19 01:53:41
【问题描述】:
我有一个 C 控制台应用程序,它曾经在 Windows 的 CMD 终端的前台运行,并接受用户击键输入。但是现在需要将其移到后台,并且不需要用户输入。
我已经创建了一个系统托盘,它通过右键退出和右键单击正确实现。并有一个执行该功能的终端程序。
我希望能够创建一个线程来调用我现有程序中不需要终端的函数,而不是再次重写程序。
只是为了强调一点,控制台交互方面已从代码中删除,应用程序对按键的响应等也已删除。希望这能稍微澄清一下。
问题:这可能吗?我将如何实现这一点?
(我通常不是使用更多嵌入式 C 的 PC 程序员,所以 .NET 对我来说很陌生。非常感谢任何帮助)
【问题讨论】:
-
一个 C 程序 太模糊了。我猜你的意思是用C编写的控制台应用程序,在这种情况下答案是否,控制台应用程序不能作为托盘应用程序运行而无需修改;它至少必须有一个窗口句柄和一个消息循环才能接收控制台应用程序没有的通知。
-
托盘应用程序可以启动进程
-
卢克,您的 C 程序是否期望任何按键、用户输入之王?
-
我认为为了做到这一点,你的C程序中的函数必须使用
_declspec(dllexport)之类的东西导出 -
是的,最好的方法几乎可以肯定是将您的 C 程序重新构建为导出一个或多个函数的 DLL。我相当确定您可以从 C# 调用任意 DLL,尽管我不熟悉该方法。
标签: c# c windows multithreading system-tray