龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC程序设置桌面的分辨率

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
刚刚开始工作,最近搞测试程序,要模仿用户做设置分辨率的工作,从网上查了好久都没有查到相关的东西。经过几天的摸索总算把这个小东西搞了出来,拿出来和朋友们分享一下,希

刚刚开始工作,最近搞测试程序,要模仿用户做设置分辨率的工作,从网上查了好久都没有查到相关的东西。经过几天的摸索总算把这个小东西搞了出来,拿出来和朋友们分享一下,希望对有需要的朋友有帮助。

考虑到篇幅的问题,注释就省了,很简单,相信对各位朋友都没有什么障碍的。
/*---------------------------------------------------------------------------------------
Win32 Application
Filename:    Screen.cpp
author:     Soucula
date:     06/14/05 
----------------------------------------------------------------------------------------*/   
#include "stdafx.h"

bool FindMainWindow(HWND &hwnd,PROCESS_INFORMATION &pi)
{
    STARTUPINFO si;
 DWORD d_pid;
 int n_con;
 
 ZeroMemory(&si,sizeof(si));
 ZeroMemory(&si,sizeof(pi));
 si.cb=sizeof(si);
 CloseHandle(pi.hThread);
 CloseHandle(pi.hProcess);
 
 if(!CreateProcess(NULL,
  "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3",
  NULL,NULL,FALSE,0,NULL,NULL,
  &si,&pi))
  return false;
 
 n_con=0;
 while(n_con<20)
 {
  Sleep(1000);
  for(hwnd=GetWindow(GetDesktopWindow(),GW_CHILD);
  hwnd;
  hwnd=GetWindow(hwnd,GW_HWNDNEXT))
  {
   ::GetWindowThreadProcessId(hwnd,&d_pid);
   if(d_pid==pi.dwProcessId)
    if(GetWindow(hwnd,GW_CHILD)!=NULL)
    {
     n_con=20;
     break;
    }
  }
  n_con++;
 }
 
 if(n_con==20)
  return false;
 
 return true;
}

bool FindChildWindow(const HWND hwnd,const int count,HWND &hwndchild)
{
    int n_count;
   
 if(hwnd==NULL||count<1)
  return false;
 
 n_count=0;
 for(hwndchild=GetWindow(hwnd,GW_CHILD);
 hwndchild;
 hwndchild=GetWindow(hwndchild,GW_HWNDNEXT))
 {
  n_count++;
  if(n_count==count)
   break;
 }

精彩图集

赞助商链接