﻿<?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>C++博客-飛天-随笔分类-C++Builder</title><link>http://www.cppblog.com/cjz/category/4829.html</link><description>......</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 14:04:09 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 14:04:09 GMT</pubDate><ttl>60</ttl><item><title>将动态光标(ani)加入资源文件的方法</title><link>http://www.cppblog.com/cjz/archive/2007/12/06/37902.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Thu, 06 Dec 2007 06:18:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/12/06/37902.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/37902.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/12/06/37902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/37902.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/37902.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在程序中使用自定义光标,能使程序增色不少.如果使用外部光标文件,只要用LoadCursorFromFile()即可调用.但如果想要用资源文件来包含光标文件时,一般的光标文件没有问题,但是如果是动态光标的话,则不能通过LoadCursor()来调用.<br>&nbsp;解決方法:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.资源文件的建立<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新建一扩展名为rc的文件(记事本就可创建),添加资源说明.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如:&nbsp; C1&nbsp; Cursor&nbsp;&nbsp; aaa.Cur&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C2&nbsp;&nbsp; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bbb.ani</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一个是普通的光标,第二个是动态光标.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.将资源加到工程里.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.设置鼠标光标<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Screen</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Cursors[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">LoadCursor(C1);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Screen-&gt;Cursors[1]=LoadCursor(C2);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果想载入动态光标,会失败<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加载动态光标</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">TResourceStream&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rs</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;TResourceStream((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)HInstance,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file);</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">生成临时的光标文件</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;temp_path[MAX_PATH];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>GetTempPath(MAX_PATH,temp_path);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>strcat(temp_path,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">temp.ani</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>rs-&gt;SaveToFile(temp_path);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Screen</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Cursors[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">LoadCursorFromFile(temp_path);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Cursor</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">TCursor(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>delete rs;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;&nbsp;&nbsp;&nbsp; 这里只是通过间接的方法,先生成文件,在载入文件.如果谁有好的方法,就不要吝啬了.
<img src ="http://www.cppblog.com/cjz/aggbug/37902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-12-06 14:18 <a href="http://www.cppblog.com/cjz/archive/2007/12/06/37902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读取串口硬盘序列号(出厂唯一的序列号)(csdn)</title><link>http://www.cppblog.com/cjz/archive/2007/12/03/37727.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Mon, 03 Dec 2007 13:29:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/12/03/37727.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/37727.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/12/03/37727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/37727.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/37727.html</trackback:ping><description><![CDATA[<span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp; IDENTIFY_BUFFER_SIZE&nbsp; 512</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp; IDE_ATAPI_IDENTIFY&nbsp; 0xA0</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp; IDE_ATA_IDENTIFY&nbsp;&nbsp;&nbsp; 0xEC</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp; DFP_RECEIVE_DRIVE_DATA&nbsp;&nbsp; 0x0007c088</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000"> pack(1)</span><span style="COLOR: #000000"><br>typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _IDSECTOR<br>{<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wGenConfig;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wNumCyls;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wReserved;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wNumHeads;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wBytesPerTrack;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wBytesPerSector;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wSectorsPerTrack;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wVendorUnique[</span><span style="COLOR: #800080">3</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; CHAR&nbsp;&nbsp;&nbsp; sSerialNumber[</span><span style="COLOR: #800080">20</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wBufferType;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wBufferSize;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wECCSize;<br>&nbsp;&nbsp;&nbsp; CHAR&nbsp;&nbsp;&nbsp; sFirmwareRev[</span><span style="COLOR: #800080">8</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; CHAR&nbsp;&nbsp;&nbsp; sModelNumber[</span><span style="COLOR: #800080">40</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wMoreVendorUnique;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wDoubleWordIO;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wCapabilities;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wReserved1;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wPIOTiming;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wDMATiming;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wBS;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wNumCurrentCyls;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wNumCurrentHeads;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wNumCurrentSectorsPerTrack;<br>&nbsp;&nbsp;&nbsp; ULONG&nbsp;&nbsp; ulCurrentSectorCapacity;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wMultSectorStuff;<br>&nbsp;&nbsp;&nbsp; ULONG&nbsp;&nbsp; ulTotalAddressableSectors;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wSingleWordDMA;<br>&nbsp;&nbsp;&nbsp; USHORT&nbsp; wMultiWordDMA;<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp;&nbsp;&nbsp; bReserved[</span><span style="COLOR: #800080">128</span><span style="COLOR: #000000">];<br>}IDSECTOR, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PIDSECTOR;<br><br>typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _DRIVERSTATUS<br>{<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp; bDriverError;<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp; bIDEStatus;<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp; bReserved[</span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwReserved[</span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">];<br>} DRIVERSTATUS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PDRIVERSTATUS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">LPDRIVERSTATUS;<br><br>typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _SENDCMDOUTPARAMS<br>{<br>&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cBufferSize;<br>&nbsp;&nbsp;&nbsp; DRIVERSTATUS&nbsp; DriverStatus;<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bBuffer[</span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">];<br>} SENDCMDOUTPARAMS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PSENDCMDOUTPARAMS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">LPSENDCMDOUTPARAMS;<br><br>typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _IDEREGS<br>{<br>&nbsp;&nbsp;&nbsp; BYTE bFeaturesReg;<br>&nbsp;&nbsp;&nbsp; BYTE bSectorCountReg;<br>&nbsp;&nbsp;&nbsp; BYTE bSectorNumberReg;<br>&nbsp;&nbsp;&nbsp; BYTE bCylLowReg;<br>&nbsp;&nbsp;&nbsp; BYTE bCylHighReg;<br>&nbsp;&nbsp;&nbsp; BYTE bDriveHeadReg;<br>&nbsp;&nbsp;&nbsp; BYTE bCommandReg;<br>&nbsp;&nbsp;&nbsp; BYTE bReserved;<br>} IDEREGS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PIDEREGS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">LPIDEREGS;<br><br>typedef </span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _SENDCMDINPARAMS<br>{<br>&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp;&nbsp; cBufferSize;<br>&nbsp;&nbsp;&nbsp; IDEREGS&nbsp;&nbsp; irDriveRegs;<br>&nbsp;&nbsp;&nbsp; BYTE bDriveNumber;<br>&nbsp;&nbsp;&nbsp; BYTE bReserved[</span><span style="COLOR: #800080">3</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp;&nbsp;&nbsp; dwReserved[</span><span style="COLOR: #800080">4</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bBuffer[</span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">];<br>} SENDCMDINPARAMS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PSENDCMDINPARAMS, </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">LPSENDCMDINPARAMS;<br><br></span><span style="COLOR: #0000ff">#pragma</span><span style="COLOR: #000000"> pack()</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ChangeByteOrder(LPSTR lpString, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nLen)<br>{<br>&nbsp;&nbsp;&nbsp; USHORT i;<br>&nbsp;&nbsp;&nbsp; CHAR c;<br><br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 63 63 72 75 6E 2E 63 6F 6D</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> nLen; i </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> lpString[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpString[i] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> lpString[i</span><span style="COLOR: #000000">+</span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpString[i</span><span style="COLOR: #000000">+</span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> c;<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> CrnGetHDSerialNumber(LPSTR lpBuf)<br>{<br>&nbsp;&nbsp;&nbsp; strcpy(lpBuf, </span><span style="COLOR: #800000">""</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp; HANDLE hDevice;<br><br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Win32Platform </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> VER_PLATFORM_WIN32_NT)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 获取第一个硬盘，如果有多个，更改PhysicalDrive?就可以了。</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDevice </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateFile(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">\\\\.\\PhysicalDrive0</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GENERIC_READ </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> GENERIC_WRITE,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILE_SHARE_READ </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> FILE_SHARE_WRITE,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPEN_EXISTING,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDevice </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateFile(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">\\\\.\\SMARTVSD</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">, NULL, CREATE_NEW, </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(hDevice </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> INVALID_HANDLE_VALUE) </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp; SENDCMDINPARAMS scip </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> { </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000"> };<br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> szBuffer[</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(SENDCMDOUTPARAMS) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> IDENTIFY_BUFFER_SIZE] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> { </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000"> };<br>&nbsp;&nbsp;&nbsp; DWORD dwBytesRet </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> bSuccess </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scip.cBufferSize </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> IDENTIFY_BUFFER_SIZE;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scip.irDriveRegs.bSectorCountReg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scip.irDriveRegs.bSectorNumberReg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scip.irDriveRegs.bDriveHeadReg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> IDE_ATAPI_IDENTIFY;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scip.irDriveRegs.bCommandReg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> IDE_ATA_IDENTIFY;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(DeviceIoControl(hDevice,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DFP_RECEIVE_DRIVE_DATA,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">scip,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(SENDCMDINPARAMS) </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; szBuffer,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(szBuffer),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dwBytesRet,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PSENDCMDOUTPARAMS pOut </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (PSENDCMDOUTPARAMS)szBuffer;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PIDSECTOR pIdSec </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (PIDSECTOR)(pOut</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">bBuffer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ChangeByteOrder(pIdSec</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sSerialNumber, </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(pIdSec</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sSerialNumber));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strncpy(lpBuf, pIdSec</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sSerialNumber, </span><span style="COLOR: #800080">20</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bSuccess </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; __finally<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle(hDevice);<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> bSuccess;<br>}<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">---------------------------------------------------------------------------<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 测试一哈</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> __fastcall TForm1::Button2Click(TObject </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Sender)<br>{<br>&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> sz[</span><span style="COLOR: #800080">255</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp; CrnGetHDSerialNumber(sz);<br>&nbsp;&nbsp;&nbsp; ShowMessage(String(sz).Trim());<br>}<br>http://topic.csdn.net/u/20071120/01/ace8c302-4260-4be2-99d7-faba80c68e8e.html</span>
<img src ="http://www.cppblog.com/cjz/aggbug/37727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-12-03 21:29 <a href="http://www.cppblog.com/cjz/archive/2007/12/03/37727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WindowAPI SystemParametersInfo 设置工作区大小</title><link>http://www.cppblog.com/cjz/archive/2007/11/29/37512.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Thu, 29 Nov 2007 13:22:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/11/29/37512.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/37512.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/11/29/37512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/37512.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/37512.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;一、 说明 BOOL SystemParametersInfo(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;&nbsp;&nbsp;uiAction,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;&nbsp;&nbsp;&nbsp;uiParam,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pointer&nbsp;&nbsp;&nbsp;pvParam,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;&nbsp;&nbsp; fWinlni<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uiAction&nbsp;&nbsp;&nbsp;动作代码,可选择欲截断或设定哪一个系统参数。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uiParam&nbsp;&nbsp;&nbsp;视动作而定<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pvParam&nbsp;&nbsp;&nbsp;Pointer参数,视动作而定<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fWinIni&nbsp;&nbsp;：SPIF_UPDATEINIFILE&nbsp;&nbsp; 将新的设定写入系统<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPIF_SENDWININICHANGE&nbsp;&nbsp;&nbsp;广播WM_SETTINGCHANGE 到系统中所有最上层视窗。<br><br>&nbsp;&nbsp;&nbsp; 二、参数设定<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_SETWORKAREA&nbsp;&nbsp;&nbsp; ,SPI_GETWORKAREA<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定或取得工作区大小，pvParam指向设定工作区域的TRect结构<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #42b432">&nbsp;&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>TRect&nbsp;R</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">BoundsRect;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>SystemParametersInfo(SPI_SETWORKAREA,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">R,SPIF_UPDATEINIFILE);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif"></span></div>
<br></span>
<img src ="http://www.cppblog.com/cjz/aggbug/37512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-11-29 21:22 <a href="http://www.cppblog.com/cjz/archive/2007/11/29/37512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BCB提供的文件操作函数</title><link>http://www.cppblog.com/cjz/archive/2007/11/04/35845.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Sun, 04 Nov 2007 02:48:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/11/04/35845.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/35845.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/11/04/35845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/35845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/35845.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在BCB提供的这组文件操作函数中，可分为三种类型，就是：<span style="COLOR: #800080">1</span><span style="COLOR: #000000">、文件名函数，</span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">、文件管理函数；</span><span style="COLOR: #800080">3</span><span style="COLOR: #000000">、文件I</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">O函数。<br><br></span><span style="COLOR: #800080">1</span><span style="COLOR: #000000">、文件名函数<br>　　文件名函数可以对文件的名称、所在子目录、驱动器和扩展名等进行操作。下表列出这些函数及其功能。<br><br>函数 说明 <br>ExpandFileName() 返回文件的全路径(含驱动器、路径) <br>ExtractFileExt() 从文件名中抽取扩展名 <br>ExtractFileName() 从文件名中抽取不含路径的文件名 <br>ExtractFilePath() 从文件名中抽取路径名 <br>ExtractFileDir() 从文件名中抽取目录名 <br>ExtractFileDrive() 从文件名中抽取驱动器名 <br>ChangeFileExt() 改变文件的扩展名 <br>ExpandUNCFileName() 返回含有网络驱动器的文件全路径 <br>ExtractRelativePath() 从文件名中抽取相对路径信息 <br>ExtractShortPathName() 把文件名转化为DOS的8&#183;3格式 <br>MatchesMask() 检查文件是否与指定的文件名格式匹配 <br><br>　　下面就把这些函数作一一介绍：<br><br>⑴ExpandFileName() <br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExpandFileName(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName);<br><br>　　功能：返回文件的全路径(含驱动器、路径)<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExpandFileName(Application</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ExeName));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示你的程序文件名，如C:\MyBCB\Sample1.EXE</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑵ExtractFileExt()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractFileExt(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName);<br><br>　　功能：从文件名中抽取扩展名<br><br>　　参数：FileName:要处理的文件名（全路径）<br><br>　　例：ShowMessage(ExtractFileExt(Application</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">ExeName));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示".exe"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑶ExtractFileName()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractFileName(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName); <br><br>　　功能：从文件名中抽取不含路径的文件名<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExtractFileExt(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">c:\\Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示"SOL.EXE"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑷ExtractFilePath()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractFilePath(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName); <br><br>　　功能：从文件名中抽取路径名<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExtractFilePath(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示"Winnt\"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑸ExtractFileDir()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractFileDir(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName); <br><br>　　功能：从文件名中抽取目录名(和上个函数不同，不包括最后的</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">\")</span><span style="COLOR: #800000"><br></span><span style="COLOR: #000000"><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExtractFileDir(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示"Winnt",注意和上个函数的区别 </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑹ExtractFileDrive()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractFileDrive(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName); <br><br>　　功能：从文件名中抽取驱动器名<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExtractFileDrive(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">c:\\Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示"c:"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑺ChangeFileExt()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE System::AnsiString __fastcall ChangeFileExt(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> System::AnsiString FileName, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> System::AnsiString Extension); <br><br>　　功能：更改文件名的扩展名，不是对真正的文件进行改名，只是对文件名这个字符串进行处理<br><br>　　参数：FileName:要改名的文件名，Extension：新的扩展名<br><br>　　例：ShowMessage(ChangeFileExt(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">c:\\Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">.OOO</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示"c:\winnt\SOL.OOO"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>⑻ExpandUNCFileName()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExpandUNCFileName(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName);<br><br>　　功能：返回含有网络驱动器的文件全路径，格式为：\\机器名\共享名\文件名<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExpandUNCFileName(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">F:\\Winnt\\SOL.EXE</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">如果F:是映射的网络驱动器\\NT40\WINNT，则显示"\\NT40\WINNT\SOL.EXE"</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br><br>⑼ExtractRelativePath()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractRelativePath(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString BaseName, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString DestName); <br><br>　　功能：从文件名中抽取相对路径信息，如</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">..\sss\ss.asd</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">这种形式<br><br>　　参数：BaseName：基准文件名；DestName：目标文件名<br><br>　　例：ShowMessage(ExtractRelativePath(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">D:\\Source\\c\\1.123</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">D:\\Source\\Asm\\dz.asm</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">显示"..\asm\dz.asm"</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br><br>⑽ExtractShortPathName()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE AnsiString __fastcall ExtractShortPathName(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString FileName); <br><br>　　功能：把文件名转换为DOS的8、3格式<br><br>　　参数：FileName:要处理的文件名<br><br>　　例：ShowMessage(ExtractShortPathName(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">E:\\Program Files\\Dual Wheel Mouse\\4dmain.exe</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">显示"E:\Progra~1\dualwh~1\4dmain.exe"</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br><br>⑾MatchesMask()<br>　　原型：</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000"> PACKAGE </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> __fastcall MatchesMask(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString Filename, </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> AnsiString Mask);<br><br>　　功能：检查文件是否与指定的文件名格式匹配<br><br>　　参数：FileName:要处理的文件名；Mask:文件名格式，支持通配符<br><br>　　例：ShowMessage(MatchesMask(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Lxf.exe</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">*.?x?));//显示</span><span style="COLOR: #800000">"</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #800000">"</span>
<img src ="http://www.cppblog.com/cjz/aggbug/35845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-11-04 10:48 <a href="http://www.cppblog.com/cjz/archive/2007/11/04/35845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近代碼</title><link>http://www.cppblog.com/cjz/archive/2007/08/13/29903.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Mon, 13 Aug 2007 05:30:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/08/13/29903.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/29903.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/08/13/29903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/29903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/29903.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一.選擇文件夾對話框。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;shlobj.h&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;........<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BROWSEINFO&nbsp;&nbsp; bi;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPITEMIDLIST&nbsp;&nbsp; pDir;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; path[MAX_PATH]={"C:\\"};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.hwndOwner&nbsp;&nbsp; =Handle;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.lpszTitle&nbsp;&nbsp; ="請選擇一個目錄，該目錄是你要保存數據的目錄.";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.pszDisplayName&nbsp;&nbsp; =path;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.ulFlags&nbsp;&nbsp; =BIF_RETURNONLYFSDIRS;//BIF_BROWSEFORCOMPUTER&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.pidlRoot&nbsp;&nbsp; =NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.lpfn&nbsp;&nbsp; =NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bi.lParam&nbsp;&nbsp; =124;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDir=SHBrowseForFolder(&amp;bi);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pDir!=NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHGetPathFromIDList(pDir,path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edtFileName-&gt;Text=(AnsiString)path;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><span style="FONT-SIZE: 10pt">Public Const BIF_BROWSEFORCOMPUTER = &amp;H1000 　　　　　　注释：允许浏览计算机<br>Public Const BIF_BROWSEFORPRINTER = &amp;H2000 　　　　　　 注释：允许浏览打印机文件夹<br>Public Const BIF_BROWSEINCLUDEFILES = &amp;H4000 　　　　　 注释：允许同时浏览文件（需IE4）<br>Public Const BIF_DONTGOBELOWDOMAIN = &amp;H2 　　　　　　　 注释：强制用户停留在网上邻居中<br>Public Const BIF_EDITBOX = &amp;H10 　　　　　　　　　　　　注释：可在输入框中直接输入文件夹名（需IE4）<br>Public Const BIF_RETURNFSANCESTORS = &amp;H8 　　　　　　　 注释：返回文件系统祖先？<br>Public Const BIF_RETURNONLYFSDIRS = &amp;H1 　　　　　　　　注释：仅允许浏览文件系统<br>Public Const BIF_STATUSTEXT = &amp;H4 　　　　　　　　　　　注释：显示状态栏<br>Public Const BIF_USENEWUI = &amp;H40 　　　　　　　　　　　 注释：使用新界面（仅支持Win2000、WinME）<br>Public Const BIF_VALIDATE = &amp;H20　　　　　　　　　　　　注释：若输入一个非法文件夹名，就返回<br>　　　　　　　　　　　　　　　　　　　　　　　　　 　　　BFFM_VALIDATEFAILED 给回调函数&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二.創建多層文件夾<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.可以用API CreateDirectory.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreateDirectory只能創建單層目錄。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.使用BCB中自帶的函數ForceDirectories(AnsiString path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #include&nbsp;&lt;filectrl.hpp&gt;<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三.操作ini文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #incldue &lt;inifiles.hpp&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.讀操作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AnsiString strPath,strFile;<br>&nbsp;&nbsp;&nbsp; strPath=ExtractFilePath(Application-&gt;ExeName);<br>&nbsp;&nbsp;&nbsp; strFile=strPath+"reademail.ini";<br>&nbsp;&nbsp;&nbsp; TIniFile *ini=new TIniFile(strFile);<br>&nbsp;&nbsp;&nbsp; //ini-&gt;<br>&nbsp;&nbsp;&nbsp; edtFileName-&gt;Text=ini-&gt;ReadString("Config","FileName","");<br>&nbsp;&nbsp;&nbsp; edtSheet-&gt;Text=ini-&gt;ReadString("Config","Sheet","1");<br>&nbsp;&nbsp;&nbsp; edtColumn-&gt;Text=ini-&gt;ReadString("Config","Column","1");<br>&nbsp;&nbsp;&nbsp; edtEmailPath-&gt;Text=ini-&gt;ReadString("Config","EmailPath",strPath);<br>&nbsp;&nbsp;&nbsp; delete ini;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.寫操作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AnsiString strPath,strFile;<br>&nbsp;&nbsp;&nbsp; strPath=ExtractFilePath(Application-&gt;ExeName);<br>&nbsp;&nbsp;&nbsp; strFile=strPath+"reademail.ini";<br>&nbsp;&nbsp;&nbsp; TIniFile *ini=new TIniFile(strFile);<br>&nbsp;&nbsp;&nbsp; //ini-&gt;<br>&nbsp;&nbsp;&nbsp; ini-&gt;WriteString("Config","FileName",edtFileName-&gt;Text);<br>&nbsp;&nbsp;&nbsp; ini-&gt;WriteString("Config","Sheet",edtSheet-&gt;Text);<br>&nbsp;&nbsp;&nbsp; ini-&gt;WriteString("Config","Column",edtColumn-&gt;Text);<br>&nbsp;&nbsp;&nbsp; ini-&gt;WriteString("Config","EmailPath",edtEmailPath-&gt;Text);<br>&nbsp;&nbsp;&nbsp; delete ini;
<img src ="http://www.cppblog.com/cjz/aggbug/29903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-08-13 13:30 <a href="http://www.cppblog.com/cjz/archive/2007/08/13/29903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Bcb中的Excel操作類</title><link>http://www.cppblog.com/cjz/archive/2007/08/03/29256.html</link><dc:creator>飛天</dc:creator><author>飛天</author><pubDate>Fri, 03 Aug 2007 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/cjz/archive/2007/08/03/29256.html</guid><wfw:comment>http://www.cppblog.com/cjz/comments/29256.html</wfw:comment><comments>http://www.cppblog.com/cjz/archive/2007/08/03/29256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cjz/comments/commentRss/29256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cjz/services/trackbacks/29256.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近做一個專案，要求能將Excel表中的數據轉入數據庫，反之將數據庫的內容導入到Excel表中。看了網上寫的關于操作Excel的方法，寫了一個簡單的Excel操作類。功能還不是很完善，以后再慢慢修改。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*************************************...&nbsp;&nbsp;<a href='http://www.cppblog.com/cjz/archive/2007/08/03/29256.html'>阅读全文</a><img src ="http://www.cppblog.com/cjz/aggbug/29256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cjz/" target="_blank">飛天</a> 2007-08-03 10:29 <a href="http://www.cppblog.com/cjz/archive/2007/08/03/29256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>