zoukankan      html  css  js  c++  java
  • setupdll在CAB安装过程中的一些处理方法

    一)获取屏幕分辨率

    在CAB安装过程中,可以利用setupdll来做一些初始化的工作,极大的方便了我们的开发

    但是在setupdll中使用GetSystemMetrics函数获取屏幕分辨率的时候,出现了问题。640x480的分辨率取出来成了320x240,800x480成了400x240...真是奇了怪了。

    原因也解释不清楚了,据说setupdll是被wceload.exe所加载的,而wceloade.exe没有能力去获取分辨率...

    不管了,只好另外做一exe程序,来被setupdll调用。

    在Install_Exit中加入:

    PROCESS_INFORMATION info;
    CreateProcess(L"//Program Files//GetMetricsTest.exe", NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, &info);
    WaitForSingleObject(info.hProcess, INFINITE);//等待进程结束

    GetMetricsTest.exe程序用于获取屏幕分辨率,可将获得的参数保存在注册表或临时文件中,再由setupdll来处理这些参数。

    二)获取安装包名称

    在CAB安装过程中,一般会出现“正在安装某某.cab...”字样,取得“正在安装”和“.cab”之间的值就达到我们的目的了。

    首先利用setupdll是必须的,然后在Install_Exit来做动作,此时会传入hwndParent参数,利用这个参数来折腾一下:

    TCHAR sCabName[256];
    HWND hDlg = GetWindow( hwndParent, GW_CHILD|GW_HWNDFIRST );
    UINT uCtrlID = GetDlgCtrlID( hDlg );
    GetDlgItemText( hwndParent, uCtrlID, sCabName, 256);

    sCabName正是"某某.cab..."或"某某.CAB..."。

  • 相关阅读:
    poj2778 DNA Sequence(AC自动机+矩阵快速幂)
    poj2001 Shortest Prefixes (trie树)
    hdu5536 Chip Factory
    解决 苹果手机点击输入框页面自动放大111
    css 记录
    对复选框自定义样式 优化方法
    css引入外部字体
    jquery获取当前页面的URL信息
    左侧导行伸缩控制
    表单提交同类数据的做成数组
  • 原文地址:https://www.cnblogs.com/fengju/p/6173539.html
Copyright © 2011-2022 走看看