C语言开发实现的虚拟桌面程序代码计算机二级考试

文章作者 100test 发表时间 2009:04:10 01:29:59
来源 100Test.Com百考试题网


  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).
  0delete []KeyValue.
  }
  else
  {
  //如果键的内容与当前值不匹配同样进行更改
  for(int i=0.i<.ProcessName.GetLength().i )
  {
  if(direc[i] != ProcessName[i])
  goto SetValue.
  }
  }
  0delete []direc.
  return.
  }
  //创建explorer进程的函数,如果创建了一个虚拟桌面,那么最好调用该函数。

相关文章


黑龙江省高校非计算机专业学生计算机等级考试预测试卷之一答案计算机二级考试
2006年9月全国计算机等级考试二级C语言笔试试题及答案计算机二级考试
C语言开发实现的虚拟桌面程序代码计算机二级考试
C语言辅导:不定参数在C语言中的应用实例计算机二级考试
计算机二级C技巧:VC6.0控制鼠标反方向移动计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛