服务程序的有关问题

服务程序的问题
我想写一个程序,把它作为系统服务,当它发现"计算器"程序在运行时,就关闭它.在执行部分写了如下代码,为什么不能执行?

  HWND hWndCalc;
  while (true)
  {
  hWndCalc =FindWindow(NULL,"计算器");
  if(hWndCalc!=0)
  SendMessage(hWndCalc,WM_CLOSE,0,0);
  Sleep(3000);
  }

------解决方案--------------------
看一下FindWindow的返回值是不是成功了。
------解决方案--------------------
CreateService注册服务的时候,参数dwServiceType带上这个标志SERVICE_INTERACTIVE_PROCESS

否则,你的服务程序是没有办法和Desktop交互的,也就是说没有办法查找到窗口。

------解决方案--------------------
SciCalc 这个市class名。程序窗口名 系统版本不一样 名称也不一样
------解决方案--------------------
把 hWndCalc =FindWindow(NULL,"计算器");
改成 hWndCalc =FindWindow("SciCalc", NULL);
------解决方案--------------------
因为服务程序不能调用GETWINDOWTEXT函数,所以通过窗口名称肯定不行。
而通过类名称,实际上是发送WM_APPCOMMAND窗口消息,服务程序是不能接受窗口消息的
------解决方案--------------------
我想应该切换workstation和desktop再FindWindow,然后在切换回来