能给点详细的代码最好
解决方案 »
- 请问关于bitmap.getpixel函数的问题
- System.InvalidOperationException: 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
- 倾分奉送!!如何获得其它线程的堆栈信息——高手进
- 属性与字段的访问
- c# 如何关闭已打开的文件~~
- 求助:需要用C#写一个COPY大文件的程序
- AcroExch 怎么引用啊!
- 求大神写个实验"三门问题"看下结果.
- 求C#的代码:逐行读取文本文件的内容,把内容整理成CSV文件!
- 高分求解!一个关于oracle8i 在C#中数据绑定的问题?分不够可在加!
- 高分求解决方案,怎样快速将网站日志文件导入到MS SQLServer数据库中!!!
- web如何实现保存提示框??
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服务名]
"Type"=dword:00000120
120=256不与桌面交互[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服务名]
"Type"=dword:00000020
20=321
.NET Framework 支持的 Windows 服务类不支持与交互区域(即登录用户)进行交互。同时,.NET Framework 不包含表示区域和桌面的类。如果 Windows 服务必须与其他区域进行交互,则需要访问非托管的 Windows API。有关更多信息,请参见 Platform SDK 文档中的窗口区域和桌面。 设计 Windows 服务与用户或其他区域的交互时必须非常小心,应包含某些方案,例如没有登录的用户或用户具有一组意外的桌面对象的情况。在某些情况下,编写一个在用户控制下运行的 Windows 应用程序可能更为妥当。要和用户进行交互(如显示窗口),我们必须打开用户WinSta0和desktop(下面是vc代码)//打开winsta0
hwinsta = OpenWindowStation("winsta0", FALSE, WINSTA_ACCESSCLIPBOARD | WINSTA_ACCESSGLOBALATOMS | WINSTA_CREATEDESKTOP | WINSTA_ENUMDESKTOPS | WINSTA_ENUMERATE | WINSTA_EXITWINDOWS | WINSTA_READATTRIBUTES | WINSTA_READSCREEN | WINSTA_WRITEATTRIBUTES);
if (hwinsta == NULL)
{
LogEvent(_T("open window station err"));
return FALSE;
}
if (!SetProcessWindowStation(hwinsta))
{
LogEvent(_T("Set window station err"));
return FALSE;
}//打开desktop
hdesk = OpenDesktop("default", 0, FALSE, DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS);
if (hdesk == NULL)
{
LogEvent(_T("Open desktop err"));
return FALSE;
}
SetThreadDesktop(hdesk);
前面的说明已经很清楚了(需要访问非托管的 Windows API),后面的C++代码仅供参考:)