您现在的位置:天极网 > 开发频道 > Windows Api在VB中的妙用
全文

Windows Api在VB中的妙用

2001-10-23 16:43作者:--出处:yesky责任编辑:方舟

  二、读取外部图标

  下面的一段程序就显示了如何读取程序中的图标,其中Picture1是一个图像框,dlgOpen是一个标准对话框,Command1是一个按钮;ExtractIcon函数有三个参数,第一个参数指定调用的应用程序,一般都用App.hInstance;第二个参数指定图标文件,可以是DLL、EXE和ICO。第三个参数的不同就决定了其返回值的不同:如果代入-1,就返回文件中包含的图标数,代入0则返回第一个图标的句柄,其余依次类推。

Private Sub Command1_Click()
 Static total As Long,p(50) As Long,i As Integer
 dlgOpen.Filter = ″图标|*.Exe;
 *.Ico;*.Dll″
 dlgOpen.ShowOpen
 If Dir(dlgOpen.filename)<>″″ Then
  If ExtractIcon(App.hInstance, dlgOpen.filename, -1) = 0 Then
  ′如果没有图标
   MsgBox ″No Icon!″
  Else
   total = ExtractIcon(App.hIns
   tance, dlgOpen.filename, -1)
   ′取得总图标数
   For i = 0 To total - 1
    p(i) = ExtractIcon(App.hIn
    stance, dlgOpen.filename, i) ′读取每个图标
   Next i
   For i = 0 To total - 1 ′依次显示每个图标
    DrawIcon Picture1.hdc, 34 * i, 0, p(i)
   Next i
  End If
 End If
End Sub


  三、在桌面上画图

  下面一段程序就是使用API函数在屏幕上画图标。(注:p是图标的句柄,可以由ExtractIcon取得)

deskhwnd = GetNextWindow(hwnd, GW_HWNDLAST) ′取最下面一个窗口
deskdc = GetWindowDC(deskhwnd)
′取窗口的情景设备
For i=0 To Screen.Width/32/15 ′将屏幕坐标单位换算成“Pixel”,并计算可画的图标数
For j=0 To Screen.Height/32/15
 DrawIcon deskdc, 32*i, 32*j, p
 ′在桌面上画图
Next j
Next i

  用函数GetNextWindow取得其句柄,用函数GetWindowDC取出它的虚拟设备。不过,一旦窗口被覆盖,图标就会消失。

  四、屏蔽系统功能键

  在去年《电脑报》第22期上介绍了一种在Delphi中屏蔽系统功能键的方法。可是在VB中无论你怎么设置数据类型,系统总是提示“数据类型不匹配”, 下面就是API Viewer中给出的定义:

Declare Function SystemParametersInfo Lib ″user32″ Alias “SystemParametersInfoA” (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
  
  笔者经过反复思考,终于恍然大悟:看到黑体的“ByVal”了吗?问题就出在这里。原来该函数使用的lpvParam 参数应该按地址传送而非按值传送,然而VB Viewer 中使用的是按值传送,所以会出现错误提示。


共2页。 9 1 2

软件资讯·软件下载尽在天极软件

共2页。 首页 上一页 1 2
相关搜索:
相关文章及软件
关注此文读者还看过
热门关注
特别推荐
网友关注
软件下载
娱乐下载
驱动下载
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868 023-63659988
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|52PK游戏网|IT分众