Delphi-创建虚拟桌面(CreateDesktop)

unit NewDesktop;

interface
 uses Windows, Messages, SysUtils, Classes, WinSvc, SvcMgr;

function CreateANewDesktop(DesktopName: string): Boolean;
procedure DesktopSwitch(DesktopName: String='default');// 切换桌面  //系统默认桌面DesktopName:='default';

implementation

//创建一个桌面。
function CreateANewDesktop(DesktopName: string): Boolean;
 var
hDesk :Integer;
sin : TStartupInfo;
pin : TProcessInformation;
begin
try
  result := false;
  hDesk:=OpenDesktop(PChar(DesktopName), DF_ALLOWOTHERACCOUNTHOOK, False,MAXIMUM_ALLOWED);
  if hDesk=0  then  begin
    hDesk := CreateDesktop(PChar(DesktopName),nil,nil,0,MAXIMUM_ALLOWED,nil);
   //  FDesktop:=hDesk;
   //  Sleep(100);
   //  FillChar(sin,SizeOf(sin),0);
   //  sin.cb := SizeOf(sin);
   //  sin.lpDesktop := PChar(DesktopName);
   // // CreateProcess(PChar(GetEnvironmentVariable('WINDIR')+'\explorer.exe'),nil,nil,nil,False,0,nil,nil,sin,pin);   
   // CreateProcess(pchar(ParamStr(0)),nil,nil,nil,TRUE,BELOW_NORMAL_PRIORITY_CLASS, nil,nil,StartupInfo,ProcessInfo);  //启动软件
      //进程优先级别
      // 优先级 标志  优先级值
      // idle   ()  IDLE_PRIORITY_CLASS 4
      // Below (低于标准)  BELOW_NORMAL_PRIORITY_CLASS  
      // normal (标准) NORMAL_PRIORITY_CLASS 79
      // Above (高于标准)  ABOVE_NORMAL_PRIORITY_CLASS  
      // high (高)  HIGH_PRIORITY_CLASS 13
      // realtime (实时) REALTIME_PRIORITY_CLASS 
      // 24
    result := true;
    Sleep(100);
  end;
finally 
 CloseDesktop(hDesk);
end;
end;

// 切换桌面  //系统默认桌面DesktopName:='default';
procedure DesktopSwitch(DesktopName: String='default');
  var hDesk: Integer;
  begin
  try
    hDesk:=OpenDesktop(PChar(DesktopName), DF_ALLOWOTHERACCOUNTHOOK, False,MAXIMUM_ALLOWED);
    Sleep(100);
    SwitchDesktop(hDesk);
  finally
    Sleep(100);
    CloseDesktop(hDesk);
  end;
  end;
end.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值