织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>PC常识>

setupdll在CAB安装过程中的一些处理方法

jackyhwei 发布于 2011-08-17 22:11 点击:次 
制作Windows Mobile下CAB安装程序相关的几个问题
TAG:

一)获取屏幕分辨率

在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..."。

(pknife)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201108/14870.html]
本文出处:blog.csdn.net/pknife 作者:pknife
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容