Win32Api 演示【控制任务栏】

<..========================================================
==                                                       ==
==                Macrobject Nuva Samples                ==
==                                                       ==
==      Copyright (c) 2004-2006 Macrobject Software      ==
==                                                       ==
==                  ALL RIGHTS RESERVED                  ==
==                                                       ==
==               http://www.macrobject.com               ==
==                                                       ==
========================================================..>
<.
  var SW_HIDE = 0;
  var SW_SHOWNORMAL = 1;

  var MB_ICONINFORMATION = $00000040;

  var dll = System.Win32Api('user32',
      [
        ['FindWindow',       'FindWindow',       'SS',   'L'],
        ['ShowWindow',       'ShowWindow',       'LL',   'L'],
        ['MessageBox',       'MessageBox',       'ISSI', 'I']
      ])

  var hwnd = dll.FindWindow('Shell_TrayWnd', '')

  dll.MessageBox(0, 'Hide it', 'Win32Api Demo', MB_ICONINFORMATION)
  dll.ShowWindow(hwnd, SW_HIDE)

  dll.MessageBox(0, 'Show it', 'Win32Api Demo', MB_ICONINFORMATION)
  dll.ShowWindow(hwnd, SW_SHOWNORMAL)
.>


<..
【简介】
    本例是一个 Windows Api 演示程序,目的为了演示在 Nuva 语言中如何调用 Windows 的 dll 动态库。
   
    在 Nuva 语言中,调用 dll 动态库函数,需要声明这些函数的接口(具体声明的方式可以参见本例),然后直接调用即可。
   
【看点】
    1、本例首先声明了 user32 中的三个函数,分别给出其别名、函数名称、参数类型、返回类型,声明方式如下:
       win32ApiObj = System.Win32Api(dllName, funDefSet) 或者
       win32ApiObj = System.Win32Api.New(dllName, funDefSet)
       这个函数返回一个 Win32Api 对象,通过这个对象可以直接调用 dll 的函数。
       funDefSet 是一个函数集合,每个函数需要声明别名、函数名称、参数类型、返回类型信息。
       调用 dll 函数时可以直接使用别名。
       在 Nuva 语言中,dll 数据类型直接采用首字母缩写声明即可,有如下类型:
         N :Number
         L :LongWord
         I :Integer
         S :String
         P :Pointer
         C :Callback
         V :Void
       其中,Pointer 用于有返回的参数(ref param),Callback 用于回调(未实现,暂时保留)
   
    2、本例为了 WinApi 的调用,在程序开始部分声明了一些变量,这些变量都采用 WinApi 的命名;有些值是十六进制的,在 Nuva 语言中,可以采用 $ 或者 0x 开头的方式声明十六进制数字。
   
    3、程序中首先通过 FindWindow 查找任务栏的句柄,然后通过 ShowWindow 将其隐藏和显示。
   
    4、程序中还通过 MessageBox 函数弹出传统的 Windows 消息框,虽然这个消息框的灵活性远逊色与 System.Ui.ShowMessage,但是还是可以为其定制不同的消息方式。

【扩展】
    本例是一个 Windows Api 演示程序,通过声明 Windows dll 的函数接口,可以很轻易的在 Nuva 语言中调用 Windows 的 Api 函数。
   
【运行结果】
    运行这个示例,可以看到任务栏被隐藏,然后再次显示出来,同时伴随着两个消息框的弹出。

..>

posted on 2006-09-28 17:37  Wisdom-zh  阅读(1422)  评论(0编辑  收藏  举报

导航