如何知道附加的windowstation是否是交互式的?

cut*_*CAT 1 c++ windows winapi

我正在编写一个程序,可以由另一个服务(在我们的控制下)或登录用户加载.程序需要知道窗口站是否是交互式的,以便显示对话框.我知道GetProcessWindowStation函数,但是这个函数返回一个句柄.有没有办法找出来?

小智 5

交互式窗口站始终是winsta0.因此,您需要获取窗口站名称以确定它.这是一些伪代码:

wchar_t buffer[256] = {0};
DWORD length = 0;
GetUserObjectInformation(GetProcessWindowStation(), UOI_NAME, buffer, 256, &length);
if (!lstrcmp(buffer, "winsta0")) {
  // Interactive!
}
Run Code Online (Sandbox Code Playgroud)

来自http://msdn.microsoft.com/en-us/library/ms687096(VS.85).aspx:

交互式窗口站Winsta0是唯一可以显示用户界面或接收用户输入的窗口站