2011-11-01 73 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

相關問題