2013-04-18 133 views
-1

我创建了一个windows服务来运行另一个程序。但现在我想运行一个有gui但在后台的程序,所以我不想让gui可见。这是我用于service在后台运行一个gui程序

代码,但我不能编辑GUI程序

有没有一种方法来设置GUI来隐藏或设置可见=从服务程序错误?

服务是利用视觉工作室

我使用的CreateProcess启动exe文件 在C++中创建一个Windows服务以下是我正在使用从服务上运行的程序代码:

path = "C:\MyDirectory\MyFile.exe"; 

STARTUPINFO info={sizeof(info)}; 
PROCESS_INFORMATION processInfo; 
if (CreateProcess(path, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) 
{ 
    ::WaitForSingleObject(processInfo.hProcess, INFINITE); 
    CloseHandle(processInfo.hProcess); 
    CloseHandle(processInfo.hThread); 
} 

是否可以在不编辑程序本身的情况下隐藏gui?

+0

我想这是用于Windows ... – m0skit0

回答

0

最可能得到的将是设置STARTUPINFO结构的wShowWindow成员。即使这样,只有在应用程序符合WinMain中的nCmdShow参数时,它才会起作用。

STARTUPINFO info = {0}; 

info.dwFlags = STARTF_USESHOWWINDOW; 
info.wShowWindow = SW_HIDE; 

if (CreateProcess(path, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) 
{ 
    //... 
} 
+0

我不能访问gui程序的代码。我没有创建它,所以我无法检查参数 – user2295419

+0

对不起,我不明白你的意思 – user2295419

+0

看来你还没有尝试过它作为一个可行的解决方案。这意味着你不知道它是否会起作用。由于您无法访问源代码,因此直到您尝试后才会知道。 –