2011-11-01 78 views
2

我已经写了一个程序来触发串口上的一个继电器开关。继电器关闭10ms,然后程序关闭。但是,该程序坚持在小命令提示符窗口中运行。我想要程序运行而没有盗窃重点;或者通过在后台运行,或者甚至更好,根本不打开窗口。C++ WIN32:在没有命令提示符窗口的情况下运行一个程序

下面是完整的程序:

#include <windows.h> 

//Initialise Windows module 
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, 
LPSTR lpszArgument, int nFunsterStil) 
{ 
//Define the serial port precedure 
HANDLE hSerial; 

//Open the port 
hSerial = CreateFile("COM1",GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 

//Switch on relay 
EscapeCommFunction(hSerial, SETDTR); 

//Wait 10ms 
Sleep(10); 

//Switch off relay 
EscapeCommFunction(hSerial, CLRDTR); 

//Close the port 
CloseHandle(hSerial); 

//End with error code 0 
return 0; 
} 

,我必须为了防止它在一个窗口中运行改变什么?

+0

谢谢,调整的措辞 – CaptainProg

+0

您是否尝试过使用'yourapp.exe/NOCONSOLE'参数启动程序? – ludesign

+0

试过 - 它不工作:( – CaptainProg

回答

3

尝试增加

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

如果不工作,尝试手动隐藏窗口:

 
HWND hWnd = GetConsoleWindow(); 
ShowWindow(hWnd, SW_HIDE); 
+0

我已经在#include 下添加了这个,没有运气..该程序仍然在窗口中运行:( – CaptainProg

+0

你如何运行你的程序?你是否手动启动它(即点击一个图标)还是从另一个程序中调用它?如果从另一个程序中启动它,您可能需要查看这个http://www.codeproject.com/KB/winsdk/runsilent.aspx – AlefSin

+0

我需要包含什么头文件来定义您在第二个建议中使用的例程? – CaptainProg

0

你创建什么类型的项目?如果你选择了控制台应用程序,编译器就是这样做的。用上面的源代码创建一个空的Win32应用程序。不应该创建窗口。如果是这样,考虑你如何启动应用程序(开始,cmd/c等)

+1

是的,你说得对。这基本上就是我的'#pragma'应该解决的问题。 – AlefSin

相关问题