捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:桌面妙手V1.2_使Windows能够像RedHat Linux那样拥有四个桌面
fy1993hf 36401 2008/12/16 20:13:55
恕我直言,这个程序没多大意思。
只看了下EXE,看不出来几个第三方控件用哪了,
切换桌面时候也没有将自身切换到新桌面
fy1993hf 36400 2008/12/16 19:00:22
退出桌面时,这些桌面貌似不是不想干掉。而是系统没提供相应API,汗……
80088a 36187 2008/11/17 21:17:56
对啊 退出的时候不干掉那些桌面 是BUG 还是楼主为使用者考虑?
80088a 36186 2008/11/17 21:11:47
呵呵 虽然我看到有很多我都不会犯的错误。但是 我是不会像别人一样说你的  呵呵。。尊重人才是最重要的。。。顶楼主!!!!
80088a 36185 2008/11/17 21:09:25
呵呵  这个和 超级兔子什么的  那个虚拟桌面是一回事。。。
不过还是顶一下。
jlwen 35447 2008/9/2 12:45:35
呵呵..學習~````
iamaguai 33764 2008/4/21 14:20:44
第三方控件太多,似乎也没必要.
hmilyygq 33548 2008/4/2 22:07:44
忘了,还有Raize控件集,看来真用了太多的第三方控件
hmilyygq 33547 2008/4/2 22:04:40
看来是我误解了。
另外补充一下,第三方控件用到了RXLib和LMDControls,这两个都是有名的Delphi控件包,网上很多地方可以下。开发环境是Delphi2006,不过Delphi7和Delphi2005应该也可以编译,把窗口文件加到新建的工程里就可以了。
cpplyy 33508 2008/3/30 15:32:50
程序的核心代码:
procedure SwitchToDesktop(const DesktopNumber: Integer);
var
  DesktopName: string;
  DesktopHandle: HDESK;
  SysPath: array[0..MAX_PATH-1] of char;
  WinDir: string;
  Len: integer;
  StartInfo: STARTUPINFO;
  ProceInfo: PROCESS_INFORMATION;
begin
  if DesktopNumber = 1 then
    DesktopName := 'Default'
  else
    DesktopName := 'NewDesktop' + IntToStr(DesktopNumber);

  DesktopHandle := OpenDesktop(
    pchar(DesktopName),
    DF_ALLOWOTHERACCOUNTHOOK,
    True,
    DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or
    DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or
    DESKTOP_JOURNALPLAYBACK or
    DESKTOP_JOURNALRECORD or DESKTOP_READOBJECTS or
    DESKTOP_SWITCHDESKTOP or DESKTOP_WRITEOBJECTS);

  if DesktopHandle = 0 then
  begin
    DesktopHandle := CreateDesktop(PChar(DesktopName),
      nil,
      nil,
      DF_ALLOWOTHERACCOUNTHOOK,
      DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or DESKTOP_ENUMERATE or
      DESKTOP_HOOKCONTROL or DESKTOP_JOURNALPLAYBACK or DESKTOP_JOURNALRECORD or
      DESKTOP_READOBJECTS or DESKTOP_SWITCHDESKTOP or DESKTOP_WRITEOBJECTS,
      nil);
    if DesktopHandle = 0 then
    begin
      MessageBox(Application.Handle, pchar(SysErrorMessage(GetLastError)),
        pchar('Error'), MB_ICONERROR);
      Exit;
    end;
    Len := GetWindowsDirectory(@SysPath, MAX_PATH);
    SetString(WinDir,pchar(@SysPath),Len);
    ZeroMemory(@StartInfo, SizeOf(STARTUPINFO));
    StartInfo.cb := sizeof(STARTUPINFO);
    StartInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    StartInfo.wShowWindow := SW_SHOW;
    StartInfo.lpDesktop := PChar(DesktopName);
    if not CreateProcess(PChar(WinDir + '\explorer.exe'), nil, nil, nil, True, 0, nil, nil, StartInfo, ProceInfo) then
    begin
      MessageBox(Application.Handle, pchar(SysErrorMessage(GetLastError)),
        pchar('Error'), MB_ICONERROR);
      CloseDeskTop(DesktopHandle);
      Exit;
    end;
  end;

  SwitchDesktop(DesktopHandle);
end;

再谈下缺陷:
没有关闭虚拟的Desktop及其运行的Explorer进程
ProceInfo和DesktopHandle是需要存放起来的以便最后释放
  if ProceInfo.hProcess <> 0 then begin
    TerminateProcess(ProceInfo.hProcess, 0);
  end;
  if DesktopHandle <> 0 then begin
    CloseDesktop(DesktopHandle);
  end;

以上。
感谢作者,这个程序很好玩!
windows.net 33503 2008/3/29 17:57:32
bug:退出的时候,是否可以关掉多开的那些explorer进程。
leo603220 33499 2008/3/29 10:50:35
呵呵,东西不错,下下来研究一下
bahamut8348 33495 2008/3/28 18:53:51
我并没有不尊重任何人的意思,只不过,我是这样认为的,既然这是一个小工具("小"不是说看不起或者其他的什么东西)而且开源了,那么最起码应该说明一下用了什么三方的东西,或者说能用DELPHI自带的替换的就替换了,毕竟这不是拿去商业用的,只是演示实现原理而已.

再重申一次,我没有不尊重任何人的劳动的意思在里面,或许我开始用词不太恰当,先说声"对不起"
zbird 33492 2008/3/28 11:07:23
我觉得bahamut8348好像也没不尊重的意思。
只是将沙发抢了,这点比较怨念。
zh2000 33489 2008/3/28 9:19:40
支持
isyou6 33483 2008/3/27 22:20:06
开源需要说明下用了那些控件,使用那个版本的DELPHI开发。即把环境说下!要不这个代码可怎么看嘛!呵呵!我还在用DELPHI5呢!嘿嘿!
isyou6 33481 2008/3/27 22:12:20
支持开源!鄙视那些不尊重别人劳动成果的人!
pub66cn 33478 2008/3/27 21:54:10
呵呵,楼主息恕,,这年头感觉搞delphi的人都少了,,开源就是伟大.别根那些不懂尊重别人劳动成果的人计划
hmilyygq 33477 2008/3/27 20:34:38
三方控件用起来方便,为什么不用呢?
有源码,感兴趣的话可以看看实现原理,不感兴趣的话请飘过

另外您要是觉得这东西太小不入您的法眼,那么请您上传一些“大东西”上来,
否则请闭嘴,别在这里说风凉话。
bahamut8348 33475 2008/3/27 18:41:09
真是太那个什么了,这么点小东西也用那么多三方控件
第一页 上一页 下一页 最后页 有 20 条纪录 共1页 1 - 20
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表