首页
社区
课程
招聘
DialogBoxParam 找不到映像文件中指定的资源类型
发表于: 2011-11-18 15:02 12035

DialogBoxParam 找不到映像文件中指定的资源类型

2011-11-18 15:02
12035
汇编程序中使用 DialogBoxParam 创建一个对话框,在正常EXE程序中运行正常

安装成服务后  DialogBoxParam  创建一个对话框,也正常显示

但如果把服务采用 svchost.exe 启动的话 DialogBoxParam 执行就报错,返回错误号如下:

错误名称:
      ERROR_RESOURCE_TYPE_NOT_FOUND

错误值:
    0x     00000715 (1813)

描述:
           找不到映像文件中指定的资源类型。

调试中使用 MessageBox 也能正常弹出对话框,且做了桌面交互

百度了N久也没有找出问题原因,请高手点拨一、二

谢谢您看我的求助贴!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在服务中使用 DialogBoxParam 的时候无法使用资源文件所以会报错,你要使用  DialogBoxIndirectParam 函数就可以了,该函数的用法如下:

格式
DialogBoxIndirectParam    hInstance,
                                          lpTemplateName,
                                          hWndParent,
                                          lPDialogFunc,
                                          dwInitParam
参数说明

hInstance --标识一个模块的事例,该模块的可执行文件含有对话框模板。

lpTemplateName--指向含有一个模板的全局内存对象的指针对话框模板。另外可以使用工具生成可用的二进制文件直接链接到程序中,详见备注

hWndParent--指定拥有对话框的窗口。可以为NULL

lpDialogFunc 指向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc

dwInitParam 指定传递到WM_INITDIALOG消息的lparam参数中的对话框过程的值。可以为NULL

备注:在汇编中 lpTemplateName 指向的模版资源的生成方法

一、生成可链接的目标文件 xxx.obj 方法如下:

1.用 RC 生成标准的资源文件 RC Rc.RC Rsrc.RES

2.用 Res2obj.exe 把生成好的标准资源文件转成二进制文件
格式:  res2obj Rsrc.res Rsrc.obj _Resource

3.把 Rsrc.obj 文件加入到链接器生成程序

二、在源文件中引用模版
1.首先使用宏指令 EXTERN 指名指定的资源名 EXTERN Resource:byte
2.使用此函数时引用此资源:lpTemplateName 参数为 addr Resource
2011-11-25 11:08
0
雪    币: 16
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
非常感谢,你要邀请码的话和我说声
2011-11-25 13:53
0
游客
登录 | 注册 方可回帖
返回