📄 在vb中使用api函数 - 软件屋.htm
字号:
<TD width=161>
<DIV align=left><SPAN class=style9><A class=a
href="http://digest.softhouse.com.cn/digest/show/31741.html"
target=_blank>浅谈用VB6.0编写“特洛伊木马”程序 </A></SPAN></DIV></TD>
<TR bgColor=#e7f6fd>
<TD width=11>
<DIV align=center><IMG height=7
src="在VB中使用API函数 - 软件屋.files/index_rj16.gif"
width=7></DIV></TD>
<TD width=161>
<DIV align=left><SPAN class=style9><A class=a
href="http://digest.softhouse.com.cn/digest/show/31740.html"
target=_blank>VB实现文字“闪入”显示的特殊效果
</A></SPAN></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#b2d5e6>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD scope=col align=middle width=15><IMG height=12
src="C:\Documents and Settings\Administrator\桌面\在VB中使用API函数 - 软件屋.files\index_rj10(1).gif"
width=11></TD>
<TD scope=col align=left width=73
height=21><STRONG>相关软件</STRONG></TD>
<TD scope=col align=right
width=74> </TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=3 cellPadding=0 width="100%"
bgColor=#e7f6fd border=0>
<TBODY>
<TR bgColor=#e7f6fd>
<TD width=11>
<DIV align=center><IMG height=7
src="C:\Documents and Settings\Administrator\桌面\在VB中使用API函数 - 软件屋.files\index_rj16(1).gif"
width=7></DIV></TD>
<TD width=161>
<DIV align=left><SPAN class=style9><A class=A11
title="VB反编译精灵 V3.6"
onclick="window.open('http://soft.softhouse.com.cn/software/show/29583.html')"
href="http://www.softhouse.com.cn/news/show/17260.html#">VB反编译精灵
V3.6 </A></SPAN></DIV></TD></TR>
<TR bgColor=#e7f6fd>
<TD width=11>
<DIV align=center><IMG height=7
src="C:\Documents and Settings\Administrator\桌面\在VB中使用API函数 - 软件屋.files\index_rj16(1).gif"
width=7></DIV></TD>
<TD width=161>
<DIV align=left><SPAN class=style9><A class=A11
title="VB程序反编译器 V1.2"
onclick="window.open('http://soft.softhouse.com.cn/software/show/29588.html')"
href="http://www.softhouse.com.cn/news/show/17260.html#">VB程序反编译器
V1.2
</A></SPAN></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD vAlign=top>
<DIV id=article>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=30> </TD>
<TD class=news-txt id=zoom style="FONT-SIZE: 14px"
align=left><BR>
<P></P><BR>
<P align=center><SPAN class=c6><BR>在VB中使用API函数</SPAN></P>
<P>什么是API? <BR>
API(AdvancedProgrammersInterface,高级程序员接口)(注:API实际是指Application
Programming
Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么.
</P>
<P> 这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法.
</P>
<P> 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB
将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数. </P>
<P> 同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).
</P>
<P> API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).
<BR> API 声明</P>
<P> 正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API
Text Viewer. </P>
<P> 要想在你的工程中声明API函数,只需运行API Text
Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.
</P>
<P>你将会遇到一些问题: </P>
<P> 假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare
语句不允许作为类或对象模块中的 Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如
Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用. </P>
<P> 在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.
</P>
<P> 你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.<BR>
消息(Messages)</P>
<P> 好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么.消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.
</P>
<P> 所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数.
</P>
<P> hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)
</P>
<P> 但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你.
<BR> 小偷其实是Visual
Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).
</P>
<P> 这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).
</P>
<P> 现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)
</P>
<P> 需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API
Text Viewer查得)以及两个32位的参数.</P><BR>
<P align=center>
<SCRIPT type=text/javascript>
</SCRIPT>
<SCRIPT src="在VB中使用API函数 - 软件屋.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=c4 align=justify>出处: pconline 日期: 2006-4-19
</TD>
<TD class=c4 align=right>好:1 一般:1
差:1</TD></TR></TBODY></TABLE></TD>
<TD width=30> </TD></TR></TBODY></TABLE><!--资讯评论部分加在此处-->
<TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
<TBODY>
<TR>
<TD scope=col background="在VB中使用API函数 - 软件屋.files/index_rj6.gif"
colSpan=7 height=28>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=26 height=28>
<DIV align=center><IMG height=7
src="在VB中使用API函数 - 软件屋.files/lk.gif" width=7></DIV></TD>
<TD class="style7 A3" align=left
width=534><STRONG>评论</STRONG></TD></TR></TBODY></TABLE></TD></TR>
<TR id=comment17260>
<TD id=commentsec17260 align=right colSpan=7></TD></TR>
<SCRIPT language=javascript>
OpenSection('17260');
var resultflag="";
if(resultflag!=""&&resultflag=="ok")
{
alert("感谢你的评论和投票,我们的编辑会尽快审核。");
resultflag = "";
}
//myForm.content.value="";
//myForm.newsvote.value="";
</SCRIPT>
<TR>
<TH scope=col width="12%" height=20> </TH>
<TD class=c2 scope=col align=left colSpan=2><STRONG>发表评论
</STRONG></TD>
<TD class=c2 scope=col align=middle><STRONG>投票:
</STRONG><INPUT type=radio value=good
name=newsvote><STRONG>好</STRONG> <INPUT type=radio
value=normal name=newsvote><STRONG>一般</STRONG> <INPUT
type=radio value=bad name=newsvote><STRONG>差</STRONG> </TD></TR>
<TR>
<TH scope=row height=26 rowSpan=2> </TH>
<TD scope=row align=left colSpan=3 height=13><TEXTAREA name=content rows=8 cols=80></TEXTAREA></TD></TR>
<TR>
<TD scope=row align=left width="10%" height=13><INPUT class=submit1 onclick="doUp('ADD');" type=button value="提 交" name=Submit></TD>
<TD vAlign=bottom scope=row align=left width="6%">
<DIV align=right><INPUT type=checkbox value=1
name=notify_admin> </DIV></TD>
<TD vAlign=bottom scope=row width="72%">
<DIV class=c2 align=left>通知管理员(希望管理员根据你的评论修改软件信息)</DIV></TD></TR>
<TR>
<TD scope=row colSpan=4 height=26>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR style="DISPLAY: none">
<TH scope=col width="12%" height=21> </TH>
<TD scope=col align=left width="88%"><SPAN
class=c7><STRONG>TrackBack</STRONG></SPAN> <SPAN
class=style7><A class=A2
href="http://www.softhouse.com.cn/news/show/17260.html#"></A></SPAN></TD><INPUT
type=hidden name=trackback_url tr <>
<TR>
<TH scope=col height=21> </TH>
<TD scope=col align=left>
<DIV align=right><SPAN
class="A4 style4"></SPAN></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE><!--资讯评论部分加在此处--></DIV></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#585858></TD></TR></TBODY></TABLE>
<DIV align=center></DIV></FORM>
<TABLE cellSpacing=0 cellPadding=0 width=770 align=center border=0>
<TBODY>
<TR vAlign=center>
<TD align=middle colSpan=3 height=40><SPAN class=A8
style="FONT-SIZE: 12px; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana, Arial"
#invalid_attr_id="none"><A class=lvA1
href="http://www.softhouse.com.cn/">返回主页</A></SPAN> |<A class=lvA1
href="http://www.softhouse.com.cn/webpage/other/aboutus.shtml"> 关于我们
</A>|<A class=lvA1
href="http://www.softhouse.com.cn/webpage/other/exoneratn.shtml"> 免责声明</A>
| <A class=lvA1 href="mailto:market@softhouse.com.cn">联系广告</A>| <A
class=lvA1
href="http://www.softhouse.com.cn/webpage/other/contribute.shtml">读者投稿</A>
| <A class=lvA1
href="http://www.softhouse.com.cn/webpage/other/other_link.jsp">友情链接</A> |
<A class=lvA1
href="http://www.softhouse.com.cn/webpage/jobinfo/joinus.jsp">诚聘英才</A></TD></TR>
<TR>
<TD align=middle width="20%" height=51> </TD>
<TD align=middle width="61%">Copyright © 2004-2008 Forlink Technologies
All Rights Reserved <BR>版权所有 时力科技 联系:<A class=a
href="mailto:market@softhouse.com.cn">客户服务中心</A> 京ICP证030637号</TD>
<TD align=left width="19%"><IMG height=43
src="在VB中使用API函数 - 软件屋.files/red_dun.gif" width=35></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript>
var tags=document.getElementsByTagName('*');
for (var i=0;i<tags.length ;i++ )
{
if (tags[i].tagName=="A")
{
var hrefValue = tags[i].href;
while(hrefValue.indexOf("+") != -1)
{
hrefValue = hrefValue.replace("+","%252B")
}
tags[i].href=hrefValue;
}
}
</SCRIPT>
<SCRIPT language=javascript
src="在VB中使用API函数 - 软件屋.files/softhouse_ad.js"></SCRIPT>
<DIV style="DISPLAY: none">
<SCRIPT language=JavaScript
src="C:\Documents and Settings\Administrator\桌面\在VB中使用API函数 - 软件屋.files\stat(1).htm"
charset=gb2312></SCRIPT>
</DIV>
<SCRIPT language=JavaScript src="在VB中使用API函数 - 软件屋.files/br2.js"></SCRIPT>
<SCRIPT language=JavaScript src="在VB中使用API函数 - 软件屋.files/b3.js"></SCRIPT>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -