Windows 7下VS2008升级补丁

news/2024/7/10 22:17:56 标签: windows, microsoft, null, 2010

转自: http://blog.sina.com.cn/s/blog_57b5da120100gk7l.html

更新列表:

  • 2010年3月26日:增加对日文版的支持。
  • 2010年3月3日:更新代码,增加了对繁体中文版的支持。

------------------------------------------------------------

本方法由同事薛军涛首创,本人以通用程序实现。

 

在Windows 7下,VS2008试用版无法正常升级到正式版。原因是维护页面的注册码输入框和升级按钮被隐藏。通过本补丁,可让注册码输入框和升级按钮恢复正常显示。

补丁下载地址

------------------------------------------------------------

关键函数如下:

void CREGVS2008Dlg::OnBnClickedButtonAutoreg()
{
 // 要查找的VS2008版本列表
 const TCHAR* szCaption[] = {
  TEXT("Microsoft Visual Studio 2008 安装程序 - 维护页"),  // 简体中文版
  TEXT("Microsoft Visual Studio 2008 安裝程式 - 維護頁"),  // 繁体中文版
  TEXT("Microsoft Visual Studio 2008 Setup - Maintenance Page"),   // 英文版
  TEXT("Microsoft Visual Studio 2008 セットアップ - メンテナンス ページ") // 日文版
 };

 HWND hWnd;
 UINT i, uNum;

 // 定位“Microsoft Visual Studio 2008 安装程序 - 维护页”窗口
 uNum = sizeof(szCaption) / sizeof(const TCHAR*);
 for( i = 0; i < uNum; i++ )
 {
  hWnd = ::FindWindow( NULL, szCaption[i] );
  if( hWnd != NULL )
  // 窗口发现
   break;
  }
 }

 if( i == uNum )
 // 没有找到VS2008维护页窗口
  MessageBox( TEXT("没有发现“Microsoft Visual Studio 2008 安装程序 - 维护页”窗口!") );
  return;
 }
 
 // 进入第1层子窗口
 hWnd = :: GetTopWindow_r( hWnd );

 // 进入第4个子窗口
 for( i = 0; i < 3; i++ )
 {
  hWnd = :: GetNextWindow_r( hWnd, GW_HWNDNEXT );
 }

 // 进入第2层子窗口
 hWnd = :: GetTopWindow_r( hWnd );

 // 进入第9个子窗口
 for( i = 0; i < 8; i++ )
 {
  hWnd = :: GetNextWindow_r( hWnd, GW_HWNDNEXT );
 }

 // 进入注册码填写窗口
 for( i = 0; i < 5; i++ )
 // 激活文本框
  ::ShowWindow( hWnd, SW_SHOW );
  ::EnableWindow( hWnd, TRUE );

  // 进入下一个文本框
  hWnd = :: GetNextWindow_r( hWnd, GW_HWNDNEXT );
 }

 // 进入升级按钮
 for( i = 0; i < 2; i++ )
 {
  hWnd = :: GetNextWindow_r( hWnd, GW_HWNDNEXT );
 }

 // 激活升级按钮
 ::ShowWindow( hWnd, SW_SHOW );
 ::EnableWindow( hWnd, TRUE );

 return;
}


------------------------------------------------------------

打补丁前VS2008维护界面:

Windows <wbr>7下VS2008升级补丁
打补丁后VS2008维护界面:

 Windows <wbr>7下VS2008升级补丁

应用程序界面:

Windows <wbr>7下VS2008升级补丁


http://www.niftyadmin.cn/n/1516414.html

相关文章

web.xml元素解析

在项目中总会遇到一些关于加载的优先级问题&#xff0c;近期也同样遇到过类似的&#xff0c;所以自己查找资料总结了下&#xff0c;下面有些是转载其他人的&#xff0c;毕竟人家写的不错&#xff0c;自己也就不重复造轮子了&#xff0c;只是略加点了自己的修饰。 首先可以肯定的…

source insight的 跳转到文件夹 插件

转自&#xff1a; http://blog.csdn.net/chenyufei1013/article/details/6055093 Source Insight一直在用&#xff0c;windows下不错的源代码查看。同时&#xff0c;经过简单的配置&#xff0c;也可以作为不错的代码编辑工具来使用&#xff08;参见下图&#xff09;。 在使用的…

使用doc4j生成word文档

docx4j 因为方法实现过于底层&#xff0c;相关文档说明特别少&#xff0c;而很少被人熟知 当需要使用 docx4j 创建office文档时&#xff0c;往往要自己实现一些常用的基本功能&#xff0c;这带来了一定的开发难度和不必要的精力开销 在经历一轮 docx4j 的学习和开发工作后&am…

rsync命令

在对rsync服务器配置结束以后&#xff0c;下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具&#xff0c;其命令也有很多功能特色选项&#xff0c;我们下面就对它的选项一一进行分析说明。 Rsync的命令格式可以为以下六种…

RMI方法实现

原文链接 前言 背景介绍 RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象&#xff0c;它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。 Java远程方法协议&#xff08;英语&#xff1a;Java Remote Method Protocol&…

vim的visual模式

在可视化模式下&#xff0c;可以对一个文本块的整体进行操作。例如&#xff0c;首先高亮选中一部分文本&#xff0c;然后用d命令删除这个文本块。可视化模式的好处在于&#xff0c;你可以在做改动之前&#xff0c;就看到操作将影响的文本。可视化模式可以分为以下三种&#xff…

%s 与 %ls的区别

#include < cstdio > #include < cstdlib > #include < clocale > #include < cwchar > int main( int argc, char * argv[]) { wchar_t wstr[] L " 中文 " ; setlocale(LC_ALL, " zh_CN.UTF-8 " ); …

java IOException

在开发中&#xff0c;我们可能经常会碰到一个系统找不到指定路径的IO异常。今天我们就来看看&#xff0c;java中的路径究竟是哪个路径。先看一段代码&#xff1a; package com.cloud.test; import java.io.File; import java.io.IOException; public class TestPath { pu…