﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-学好delphi-随笔分类-delphi资源文件调用</title><link>http://www.cnitblog.com/shuyezi122/category/7999.html</link><description>我delphi笔记,你的参与就是对我最大的支持,还有汇编语言也在学
我的QQ群:79598397
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 11:08:44 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 11:08:44 GMT</pubDate><ttl>60</ttl><item><title>使用任何类型的资源文件</title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/17/53836.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Sat, 17 Jan 2009 08:27:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/17/53836.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53836.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/17/53836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53836.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53836.html</trackback:ping><description><![CDATA[Windows 规定 RCDATA 用作自定义格式, 我们也可以自定义格式名称, 譬如本例(rc 文件):<br>MyFile1 RCDATA "notepad.exe"<br><br><br><strong><font color=#000080>procedure</font></strong> TForm1.Button1Click(Sender: TObject);<br><font color=#008000></font><font color=#008284></font><font color=#0000ff></font><font color=#000080><strong>var</strong></font><br>&nbsp; rs: TResourceStream;<br><font color=#008000></font><font color=#008284></font><font color=#0000ff></font><font color=#000080><strong>begin</strong></font><br>&nbsp; rs := TResourceStream.Create(HInstance, <font color=#008000></font><font color=#008284></font><font color=#0000ff>'MyFile1'</font><font color=#000080><strong></strong></font>, RT_RCDATA);<br>&nbsp; rs.SaveToFile(<font color=#008000></font><font color=#008284></font><font color=#0000ff>'c:\temp\pad.exe'</font><font color=#000080><strong></strong></font>);<br>&nbsp; WinExec(<font color=#008000></font><font color=#008284></font><font color=#0000ff>'c:\temp\pad.exe'</font><font color=#000080><strong></strong></font>, <font color=#008000></font><font color=#008284></font><font color=#0000ff>1</font><font color=#000080><strong></strong></font>);<br>&nbsp; rs.Free;<br><font color=#008000></font><font color=#008284></font><font color=#0000ff></font><font color=#000080><strong>end</strong></font>;<br><br><br>同样,dll文件也可以,如果做木马之类可用来释放木马
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-17 16:27 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/17/53836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>delphi资源文件调用 -- wav</title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53807.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Thu, 15 Jan 2009 14:31:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53807.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53807.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53807.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53807.html</trackback:ping><description><![CDATA[rc文件:&nbsp; mywav WAVE "F:\歌曲\17.wav"<br>添加到project1.exe中<br><br>注意:在uses加mmsystem,下面两种方法都加<br><br>方法1:<br>procedure TForm1.Button2Click(Sender: TObject);<br>&nbsp; var<br>&nbsp; hResInfo:THandle;<br>&nbsp; PtrSound:pChar;<br>&nbsp; hRes:THandle;<br>begin<br>&nbsp; hResInfo:=FindResource(hinstance,'mywav','WAVE');//查找所需资源<br>&nbsp; hRes:=LoadResource(HInstance,hResInfo);//把资源放到全局存储器中<br>&nbsp; ptrSound:=LockResource(hRes);//锁到全局存储器中这个资源<br>&nbsp; sndplaysound(ptrSound,snd_async&nbsp;&nbsp; or&nbsp;&nbsp; snd_Memory);//开始播放调用<br>end;<br><br><br>方法2:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; rs: TResourceStream;<br>begin<br>&nbsp; rs := TResourceStream.Create(HInstance, 'mywav', 'WAVE');<br><br>&nbsp; sndPlaySound(rs.Memory, SND_ASYNC or SND_MEMORY);<br>&nbsp; //上面那句可用下句代替<br>&nbsp; //PlaySound(rs.Memory, HInstance, SND_ASYNC or SND_MEMORY);<br><br>&nbsp; rs.Free;<br>end; <br><br><br><br><br>上面两种方法中关于API简介<br>FindResource()<br>函数功能：该函数确定指定模块中指定类型和名称的资源所在位置<br>函数原型：HRSRC FindResource（HMODULE hModule，LPCTSTR lpName，LPCTSTR lpType）；<br>hModule：处理包含资源的可执行文件的模块,用HInstance就是指在本程序中找资源<br>lpName：指定资源名称<br>lpType：指定资源类型<br>　应用程序可以使用FindResource函数去查找任何种类资源，但是这个函数只有在应用程序并发调用LoadLibray和LockResource函数来存取二进制资源时才被使用,所以下面用到了LockResource()<br>关于更多请自己查找资料<br><br>LockResource()<br>函数功能：该函数锁定内存中的指定资源，说白了就是返回资源在内存中的地址<br>LPVOID LockResource（HGLOBAL hResDate）；<br>hResDate：被装载的资源的句柄。函数LoadResource可以返回这个句柄<br>所以又用到了函数:LoadResource()<br><br>LoadResource()<br>函数功能：该函数装载指定资源到全局存储器<br>hModule：处理包合资源的可执行文件的模块句柄,hinstance就是指程序自身刚初始化时<br>hReslnfo：将被装载资源的句柄,由FindResource()得到的句柄<br><br>PlaySound()&nbsp;&nbsp; sndPlaySound()<br>bool&nbsp;PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); <br>参数pszSound是指定了要播放声音的字符串，该参数可以是WAVE文件的名字，或是WAV资源的名字，或是内存中声音数据的指针，或是在系统注册表WIN.INI中定义的系统事件声音.fdwSound是标志的组合(更多请查查关资料),只说下snd_async or snd_Memory or SND_LOOP<br>snd_async用异步方式播放声音，PlaySound函数在开始播放后立即返回,如果没有程序会卡住<br>snd_Memory播放载入到内存中的声音，此时pszSound是指向声音数据的指针,如果没有声音就不能播放<br>snd_loop 重复播放声音，必须与snd_async一块使用,如果不一起那么就不会重复播放声音<br>中间参数hmod,是应用程序的实例句柄，当播放WAV资源时要用到该参数，否则它必须为NULL,所以可是hinstance,也可是数字0<br>函数sndPlaySound的功能与PlaySound类似，但少了一个参数。函数的声明为<br>BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);<br><br><br>TResourceStream&nbsp; 资源流<br>TResourceStream.Create(Instance: THandle; const ResName: string; ResType: PChar); 可以把指定的资源读入Tresourcestream的实例对应的内存中<br>&nbsp;&nbsp; 第一个参数指定一个包含有资源数据的可执行文件或者dll文件的实例句柄&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; 第二个参数用于说明所需调入的资源在.RC文件中的名字或者数字ID，由于参数类型是string，&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; 所以如果用数字ID来说明的话，就在数字前面加＃。而且用数字比用字符所需要的内存要少<br>&nbsp; 第三个参数指定资源类型<br>
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-15 22:31 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 HInstance </title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53806.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Thu, 15 Jan 2009 14:16:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53806.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53806.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53806.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53806.html</trackback:ping><description><![CDATA[几乎每一个提取资源的例子都用到了 HInstance, 做个对比测试:<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>edit1.Text:=inttostr(hinstance);<br>edit2.Text:=inttostr(application.Handle);<br>edit3.text:=inttostr(self.Handle);<br>end;<br><br>你会发现hinstance=4194304<br>4194304=X400000<br>电脑让用户使用的内存是在X400000开始的,也就是说HINSTANCE是初始化的的句柄4194304<br>
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-15 22:16 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>delphi资源文件调用 -- cur</title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53804.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Thu, 15 Jan 2009 13:52:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53804.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53804.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53804.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53804.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">你想使用系统的cur,只要用(-1..-22)就可<br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp;form1.cursor:=-4;//1-到-22可自己试用下<br>end;<br><br><br><br>下面说cur文件使用<br><br>*.cur文件你可以自己做,也要在自己电脑上找一些<br>先编辑rc文件:att cursor "attack.cur"<br>再加到project1.exe中<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>Screen.Cursors[1] := LoadCursor(HInstance, 'att');//这是如果是2,下面就是2Cursors[2] form1.cursor:=1;//这里是2&nbsp; cursor:=2<br>end;<br><br><br></span>
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-15 21:52 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53804.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>delphi资源文件调用 -- Image</title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53797.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Thu, 15 Jan 2009 11:19:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53797.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53797.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53797.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53797.html</trackback:ping><description><![CDATA[如果上节说的一样(delphi资源文件调用 - ICO)<br><br>首先编辑 rc 文件&nbsp; 1hao bitmap "12.bmp"<br>窗体上添加一个 Image、 Button<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>image1.Picture.Bitmap.Handle:=loadbitmap(hinstance,'1hao');<br>end;<br><br>只是调用函数不同而已
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-15 19:19 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>delphi资源文件调用 - Ico </title><link>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53796.html</link><dc:creator>小叶子</dc:creator><author>小叶子</author><pubDate>Thu, 15 Jan 2009 11:08:00 GMT</pubDate><guid>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53796.html</guid><wfw:comment>http://www.cnitblog.com/shuyezi122/comments/53796.html</wfw:comment><comments>http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shuyezi122/comments/commentRss/53796.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shuyezi122/services/trackbacks/53796.html</trackback:ping><description><![CDATA[<p>1.新建:application工程文件,然后保存在桌面ceshi文件夹内<br>2.在ceshi文件夹内新建记事本,并写入:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1hao icon "xin.ico",重名命为:ceshi.rc<br>3.delphi中按:ctrl+alt+F11&nbsp; 打开project manager 右键点击projcet1.exe,选择add...&nbsp;&nbsp;&nbsp;&nbsp; 在这里加上ceshi.rc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明:你可以打开:project-&gt;view source查看,已经加上了:{$R 'ceshi.res' 'ceshi.rc'}<br>4.在工程文件上加上三个button按钮,代码如下:<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>Icon.Handle:=loadicon(hinstance,'1hao');//截入你的xin.ico<br>end;</p>
<p>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br>Icon.Handle:=loadicon(hinstance,'mainico');//mainico换成nil也可,这是系统默认图标<br>end;</p>
<p>procedure TForm1.Button3Click(Sender: TObject);<br>begin<br>&nbsp;Application.Icon:=nil;//不使用图标(会显示 Windows 系统的默认图标)<font color=#008000><br></font>end;<br><br><br><br>HInstance 当前程序实例的句柄, 调用资源文件一定要用到它;<br>ico1 是资源文件的标识符;<br>LoadIcon 是个 API 函数, 专门用于调用资源中的 ico 文件, 它返回的是指定 ico 文件的句柄.</p>
<img src ="http://www.cnitblog.com/shuyezi122/aggbug/53796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shuyezi122/" target="_blank">小叶子</a> 2009-01-15 19:08 <a href="http://www.cnitblog.com/shuyezi122/archive/2009/01/15/53796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>