请问使用SendMessage给另一个程序的静态pic控件换图像时的最后一个参数(LPARAM)hBmp怎么写?

烽火连城432432423 2016-10-08 09:25:44
已获取到另一个程序的pic的句柄,第二个参数是&h172,第三个是0,第四个应该是一个图片吧,可是怎么样给它呢?
SendMessage(hStatic, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBmp);

比如有一幅jpg或bmp的图像,或者有一个在我的程序里的picturebox里有一个图像了,怎么样设置成第四个参数传递过去??请给出一个相应的示例 (可以不跨程序,在同程序的二个picturebox里进行复制就好了,主要是想知道最后一个参数的结构)

我用的是VB6!
...全文
318 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2016-10-11
  • 打赏
  • 举报
回复
“真彩色图标”的代码资源出来了。 下载地址: http://download.csdn.net/detail/chen8013/9650627
  • 打赏
  • 举报
回复
引用 12 楼 赵4老师的回复:
排名什么的都是浮云; 闷头挣大钱才是王道。
你不要老是自己闷头赚大钱啊,给点单子做做啊!
赵4老师 2016-10-10
  • 打赏
  • 举报
回复
排名什么的都是浮云; 闷头挣大钱才是王道。
  • 打赏
  • 举报
回复
vb真是无所不能了,可惜现在java排名第一,其他是,c家族.感觉vb板块,都是一些小飞虫在这里发言求助,发帖也很少。
  • 打赏
  • 举报
回复
引用 9 楼 舉杯邀明月的回复:
[quote=引用 8 楼 xiaoyao961 的回复:]
有没有办法用API把另一个程序中的图标运行时改掉?另一个方法是修改EXE
然后任务栏中的程序列表,还有最小化时的小图标,弹出新窗口时的图标都能变成新的图标了


这个,我刚才试了一下,没难度吧。

只是任务栏上的图标没变,可能得发别的消息才行。

[/quote] 源码发上来,呵呵,谢谢
  • 打赏
  • 举报
回复
引用 14 楼 Chen8013 的回复:
[quote=引用 10 楼 xiaoyao961 的回复:] ......... 源码发上来,呵呵,谢谢
上午10点过的时候,上传资源, 第一次提交,它说我的验证码错误(明明是对的,那个验证码又不难认  ) 点确定之后,验证码图片变了。 我重新按新的验证码填上,再提交,结果它提示一个什么错误信息。   页面也被刷了,我输入的一大堆说明,也被洗白…………  到现在也没有显示出上午传的那个资源(也许真的是失败了), 但奇怪的是,如果我重新上传,输入先前那个名称的开头字母,之前的那个“资源名称”却又能“自动显示出来”。 等明天再看吧,如果还没有在我的上传资源中显示,我再重新上传。 [/quote] 其实有的不难能做到,而且看到了部分代码,这都喜欢做伸手党呀,哈哈 做软件有时难就难在思路,思路知道了,不用别人给代码也能写出来。
赵4老师 2016-10-10
  • 打赏
  • 举报
回复
引用 14 楼 Chen8013 的回复:
[quote=引用 10 楼 xiaoyao961 的回复:] ......... 源码发上来,呵呵,谢谢
上午10点过的时候,上传资源, 第一次提交,它说我的验证码错误(明明是对的,那个验证码又不难认  ) 点确定之后,验证码图片变了。 我重新按新的验证码填上,再提交,结果它提示一个什么错误信息。   页面也被刷了,我输入的一大堆说明,也被洗白…………  到现在也没有显示出上午传的那个资源(也许真的是失败了), 但奇怪的是,如果我重新上传,输入先前那个名称的开头字母,之前的那个“资源名称”却又能“自动显示出来”。 等明天再看吧,如果还没有在我的上传资源中显示,我再重新上传。 [/quote] 运气不好
舉杯邀明月 2016-10-10
  • 打赏
  • 举报
回复
引用 10 楼 xiaoyao961 的回复:
......... 源码发上来,呵呵,谢谢
上午10点过的时候,上传资源, 第一次提交,它说我的验证码错误(明明是对的,那个验证码又不难认  ) 点确定之后,验证码图片变了。 我重新按新的验证码填上,再提交,结果它提示一个什么错误信息。   页面也被刷了,我输入的一大堆说明,也被洗白…………  到现在也没有显示出上午传的那个资源(也许真的是失败了), 但奇怪的是,如果我重新上传,输入先前那个名称的开头字母,之前的那个“资源名称”却又能“自动显示出来”。 等明天再看吧,如果还没有在我的上传资源中显示,我再重新上传。
赵4老师 2016-10-09
  • 打赏
  • 举报
回复
pic控件的hDC属性?
舉杯邀明月 2016-10-09
  • 打赏
  • 举报
回复
引用 8 楼 xiaoyao961 的回复:
有没有办法用API把另一个程序中的图标运行时改掉?另一个方法是修改EXE
然后任务栏中的程序列表,还有最小化时的小图标,弹出新窗口时的图标都能变成新的图标了


这个,我刚才试了一下,没难度吧。

只是任务栏上的图标没变,可能得发别的消息才行。

  • 打赏
  • 举报
回复
有没有办法用API把另一个程序中的图标运行时改掉?另一个方法是修改EXE 然后任务栏中的程序列表,还有最小化时的小图标,弹出新窗口时的图标都能变成新的图标了
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
[quote=引用 3 楼 u011921688 的回复:] [quote=引用 2 楼 Chen8013 的回复:] 会不会是不能用 PicutreBox的图像相关句柄, 而要用API函数创建的“GDI对象”bmp的句柄呢?
用bitblt可以复制过去,但是那个移动到别的遮挡后面或最小化再打开后就会复原成原先的,不能固定! 句柄我是用API函数获得的,和用其它的spy++获得的句柄是一样的,现在就是不知道如何创建一个hbmp对象,并且把相应hbmp传过去。第四个参数是可以任何类型,包括自定义类型,它应该是一个bitbmp数据流,但是我不知道如何创建及从一个文件或picturebox中得到。。。。[/quote] BitBlt用的是 hDC,不是 hBmp 。它们是不同的(不同类别的)GDI对象。 简单的说,它们的关系,就跟窗口与控件的关系类似: hDC这个对象相当于“窗体”,hBmp这个对象相当于窗体中的一个控件而已。 你说的“用bitblt可以复制过去,不能固定”, 就是因为“目标对象”的 hBmp数据没有被替换, 所以“目标对象”重绘时,就复原了。 如果是“自己程序中的PictureBox”还好办,把它的Autoredraw属性设置为True就行了。 你可以试试: 自己的程序中,画3个PictureBox ,Picture1作为“源”,另两个作为测试目标。 假设Picture2的Autoredraw为True,而Picture3的为 False (控件默认为 False)。 Picture1中装载一张图片,然后在一个按钮的事件中执行 BitBlt操作。 可以看到: Picture3的会“立即显示出来”,而Picture2的却“没反应”。 但你把程序窗口最小化、还原,可以看到Picture2的图像显示出来了,但Picture3的却消失了。 要让Picture2的“立即显示”也容易,在BitBlt之后,执行一句 Picture2.Refresh 就可以了。 如果你要处理“第三方程序”的图片,要设法更改到它的hBmp的数据才行。 [/quote] 谢谢,讲得很详细,现在就是第三方的这个hBmp数据如何传给它了。或者能让第三方的picturebox的图像清空也可以。
舉杯邀明月 2016-10-09
  • 打赏
  • 举报
回复
引用 3 楼 u011921688 的回复:
[quote=引用 2 楼 Chen8013 的回复:] 会不会是不能用 PicutreBox的图像相关句柄, 而要用API函数创建的“GDI对象”bmp的句柄呢?
用bitblt可以复制过去,但是那个移动到别的遮挡后面或最小化再打开后就会复原成原先的,不能固定! 句柄我是用API函数获得的,和用其它的spy++获得的句柄是一样的,现在就是不知道如何创建一个hbmp对象,并且把相应hbmp传过去。第四个参数是可以任何类型,包括自定义类型,它应该是一个bitbmp数据流,但是我不知道如何创建及从一个文件或picturebox中得到。。。。[/quote] BitBlt用的是 hDC,不是 hBmp 。它们是不同的(不同类别的)GDI对象。 简单的说,它们的关系,就跟窗口与控件的关系类似: hDC这个对象相当于“窗体”,hBmp这个对象相当于窗体中的一个控件而已。 你说的“用bitblt可以复制过去,不能固定”, 就是因为“目标对象”的 hBmp数据没有被替换, 所以“目标对象”重绘时,就复原了。 如果是“自己程序中的PictureBox”还好办,把它的Autoredraw属性设置为True就行了。 你可以试试: 自己的程序中,画3个PictureBox ,Picture1作为“源”,另两个作为测试目标。 假设Picture2的Autoredraw为True,而Picture3的为 False (控件默认为 False)。 Picture1中装载一张图片,然后在一个按钮的事件中执行 BitBlt操作。 可以看到: Picture3的会“立即显示出来”,而Picture2的却“没反应”。 但你把程序窗口最小化、还原,可以看到Picture2的图像显示出来了,但Picture3的却消失了。 要让Picture2的“立即显示”也容易,在BitBlt之后,执行一句 Picture2.Refresh 就可以了。 如果你要处理“第三方程序”的图片,要设法更改到它的hBmp的数据才行。
赵4老师 2016-10-09
  • 打赏
  • 举报
回复
Image 属性 返回持久图形的句柄,该句柄由 Microsoft Windows 运行环境提供。 语法 object.Image object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。 说明 对象的 AutoRedraw 属性决定是否用持久图形或通过 Paint 事件重绘对象。 Windows 运行环境通过给对象的持久图形分配一个句柄来标识它;用 Image 属性可以得到该句柄。 Image 值的存在,不受 AutoRedraw 属性设置值的影响。如果 AutoRedraw 为 True,并且还没有绘任何内容,图象仅显示由 BackColor 属性和图片确定的颜色。 可以给 Picture 属性分配 Image 的值。Image 属性还提供了一个传递给 Windows API调用的值。 Image、DragIcon 和 Picture 属性,通常用在给其它属性分配值的情况,如用 SavePicture 语句保存,或在剪贴板上放置一些内容。除图象数据类型外,不能把它们赋给临时变量。 AutoRedraw 属性可以引起 Image 改变,Image 是指向位图的句柄。当 AutoRedraw 为 True 时,对象的 hDC 属性成为指向设备描述体的句柄,该设备描述体包含 Image 返回的位图。 Picture 属性 返回或设置控件中要显示的图片。对于 OLE 容器控件,在设计时不可用在运行时为只读。 语法 object.Picture [= picture] Picture 属性有下列组成部分: 部分 描述 object 对象表达式,其值是“应用于”列表中的一个对象。 picture 字符串表达式,指定一个包含图片的文件,“设置值”中有详细说明。 设置值 picture 的设置值如下: 设置值 描述 (None) (缺省值)无图片。 (Bitmap, icon, metafile, GIF, JPEG) 指定一个图片。设计时可以从属性窗口中加载图片。在运行时,也可以在位图,图标,或元文件上使用 LoadPicture 函数来设置该属性。 说明 在设计时,利用“编辑”菜单中的“复制”、“剪切”和“粘贴”命令通过剪贴板来传递图片,运行时,可以使用剪贴板方法,诸如具有非文本剪贴板常数 vbCFBitmap、vbCFMetafile 和 vbCFDIB 的 GetData、SetData 和 GetFormat,它们列在对象浏览器中的 Visual Basic (VB) 对象库中。 在设计时设置 Picture 属性,图片被保存起来并与窗体同时加载。如果创建可执行文件,该文件中包含该图象。如果在运行时加载图片,该图片不和应用程序一起保存。用 SavePicture 语句可以从窗体或图片框的图片存储到文件中。 注意 运行时,Picture 属性可以被设置为任何其它对象的 DragIcon、Icon、Image 或 Picture 属性,或者可将 LoadPicture 函数返回的图片分配给它。 注意 Unisys Corporation 有一项专利,该专利声称涉及到 GIF-LZW 压缩技术的某些方面,在该技术中使用了 PictureBox 和 Image 控件。Microsoft Corporation 于1996年9月获得了对 Unisys LZW 专利的使用许可。然而,Microsoft 的许可证并不延伸到那些软件开发商或第三方,他们使用任何 Microsoft 工具包、语言开发或操作系统产品来在他们自己的产品中提供 GIF 读/写和/或任何其他 LZW 能力(例如,通过 DLL 和 API)。 如果您的商业应用程序使用了这些控件之一(并且因此使用了 LZW 技术),您可能会希望获得有关专利的独立的法律意见,详细信息请与 http://www.unisys.com/ 的 Unisys USA 联系。
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
pic控件的hDC属性?
用bitblt能复制过去,hdc的不行,会闪会恢复。。。我的意思就像在本程序里设置filename一样设置一个背景图片,而不是把图形从内存里复制过去
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
会不会是不能用 PicutreBox的图像相关句柄, 而要用API函数创建的“GDI对象”bmp的句柄呢?
用bitblt可以复制过去,但是那个移动到别的遮挡后面或最小化再打开后就会复原成原先的,不能固定! 句柄我是用API函数获得的,和用其它的spy++获得的句柄是一样的,现在就是不知道如何创建一个hbmp对象,并且把相应hbmp传过去。第四个参数是可以任何类型,包括自定义类型,它应该是一个bitbmp数据流,但是我不知道如何创建及从一个文件或picturebox中得到。。。。
舉杯邀明月 2016-10-09
  • 打赏
  • 举报
回复
会不会是不能用 PicutreBox的图像相关句柄, 而要用API函数创建的“GDI对象”bmp的句柄呢?

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧