C语言开发实现的虚拟桌面程序代码

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  2009年下半年全国计算机等级考试你准备好了没?考计算机等级二级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在考试大论坛 考试大在线题库
  虚拟一个桌面,然后在虚拟桌面启动explorer进程,用户可以用"ALT+Q"来切换现有桌面与这个虚拟桌面,用户需要运行什么软件,自己在虚拟桌面打开就是了。原理很简单,实现同样也很简单,下面是代码:
  #include<afxwin.h>
  HINSTANCE hInst; //当前实例
  TCHAR szAppName[] = TEXT ("VirtualDesk") ; //程序名称
  HWND hwnd ; //主窗体句柄
  HDESK hVirtualDesk; //虚拟桌面句柄
  HDESK hCurrent; //当前桌面句柄
  PROCESS_INFORMATION piExplor; //Explorer进程的PROCESS_INFORMATION结构
  LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
  //每次运行首先检测注册表相关项,如果未发现,则设置开机自动运行
  void SetStartup(HINSTANCE hInst)
  {
  HKEY hKey;
  DWORD DataType = REG_SZ;
  PCSTR data_run = "Software/Microsoft/Windows/CurrentVersion/Run";
  long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_run,0,KEY_ALL_ACCESS,&hKey);
  if(ret != ERROR_SUCCESS)
  {
  MessageBox(NULL,"无法打开注册表键","Error",0);
  return;
  }
  CString ProcessName;
  int len = GetModuleFileName(hInst,ProcessName.GetBuffer(256),256);
  if(len == 0)
  {
  MessageBox(NULL,"无法获取进程的当前目录","Error",0);
  return;
  }
  ProcessName.ReleaseBuffer(len);
  DWORD direcLen = ProcessName.GetLength() + 1;
  LPBYTE direc = new BYTE[direcLen];
  ZeroMemory(direc,direcLen);
  ret = RegQueryValueEx(hKey,"VirtualDesk",0,0,direc,&direcLen);
  //如果键不存在或者键长度与目前的值长度不匹配则添加新键
  if((ret != ERROR_SUCCESS )|| (direcLen != ProcessName.GetLength()+1))
  {
  SetValue:
  DWORD KeyLength = ProcessName.GetLength() + 1;
  LPBYTE KeyValue = new BYTE[KeyLength];
  ZeroMemory(KeyValue,KeyLength);
  for(int i=0;i<ProcessName.GetLength();i++)
  KeyValue[i] = ProcessName[i];
  KeyValue[ProcessName.GetLength()] = 0;
  ret = RegSetValueEx(hKey,"VirtualDesk",0,REG_SZ,KeyValue,KeyLength);
  delete []KeyValue;
  }
  else
  {
  //如果键的内容与当前值不匹配同样进行更改
  for(int i=0;i<ProcessName.GetLength();i++)
  {
  if(direc[i] != ProcessName[i])
  goto SetValue;
  }
  }
  delete []direc;
  return;
  }
  //创建explorer进程的函数,如果创建了一个虚拟桌面,那么最好调用该函数。

上一页1234下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答