<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      VFP中常用WIN32API函數調用事例

      [摘要]我們在VFP編程時,為了彌補VFP本身功能的不足,常常會用到WIN32API函數 來對VFP的功能行擴展,例如取得系統信息、對注冊表進行操作等,但是由于 WIN32API函數是C++的數據結構形...
      我們在VFP編程時,為了彌補VFP本身功能的不足,常常會用到WIN32API函數
      來對VFP的功能行擴展,例如取得系統信息、對注冊表進行操作等,但是由于
      WIN32API函數是C++的數據結構形式,在調用時與VFP的數據格式有所不同,因此在
      調用時往往會產生問題,而目前的一些資料所介紹的大都是VB、DELPHI等語言如
      何調用,對VFP如何調用介紹的比較少,更缺少具體的調用事例,下面我分幾次
      介紹在VFP如何調用WIN32API函數,并就一些常用的WIN32API函數作一介紹,由于
      本人水平有限,所介紹的內容,僅供您參考,也歡迎您在我的[請您留言]中共同
      探討:


      .................一、VFP中調用WIN32API函數的格式


      VFP中調用WIN32API函數的命令主要是:
      DECLARE - DLL
      CLEAR DLLS
      1.DECLARE - DLL 它用于注冊外部 Windows 32 位動態鏈接庫 ( .DLL ) 中的
      一個函數。
      語法: DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]
         .......[cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]
      說明:
      cFunctionType 指定該函數返回值的類型,其類型代碼如下:
      SHORT16 位整數
      INTEGER32 位整數
      SINGLE 32 位浮點數
      DOUBLE 64 位浮點數
      STRING 字符串
      FunctionName 指定要注冊使用的32位函數名。注意 FunctionName 區分大小寫。
            如果該函數名與Visual FoxPro的保留字相同,應使用AS參數另起
            別名。
      IN LibraryName 指定該函數所在的外部動態鏈接庫文件名,如果LibraryName為:
              WIN32API時,VFP將依次查找KERNEL32.DLL、GDI32.DLL、
             USER32.DLL、MPR.DLL及ADVAPI32.DLL等動態鏈接庫文件名。
      AS AliasName 當API函數的名稱與Visual FoxPro的保留字相同時,另取
             AliasName別名,另取的別名是不區分大小寫的。
      cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...
             指定傳遞給被調用的32位.DLL函數的參數類型及參數名稱。其類
             型代碼如FunctionType,如果要以傳址方法傳遞參數則應在參數
             名前加上@。

      2.CLEAR DLLS 釋放所有利用DECLARE - DLL命令所裝入的動態鏈接庫。

      ....一旦申明WIN32API函數成功,就可以和一般函數一樣用 ?xxx()、=xxx()
      來調用。
      ....下面以具體事例談談win32api在Vfp中的運用:

      1.利用win32api函數獲取指定磁盤的卷標:

      Stor 0 to C_var,C_cd,C_qf
      C_Var='c:\'
      DECLARE INTEGER GetVolumeInformation IN Win32API STRING @, STRING @, INTEGER,;
          INTEGER @, INTEGER @, INTEGER @, STRING @, INTEGER
      xx=GetVolumeInformation(C_Var,"",20,@C_var,@C_cd,@C_qf,0,0)
      CLEAR DLLS &&釋放所有利用DECLARE - DLL命令所裝入的動態鏈接庫。
      xx<>0 獲取指定磁盤的卷標成功,反之則未成功。
      C_var=指定磁盤的卷標,是個十進制的數值,與我們在DOS下看到的16進制不同。
      C_cd=系統規定的文件名每一部分的長度,是個十進制的數值。
      C_qf=文件名的大小寫標志,是個十進制的數值。

      .....怎么樣很簡單吧,我們可以把獲取的磁盤卷標,用來加密我們的軟件,這樣
      我們的 軟件就具有防拷貝的功能了。


      日韩精品一区二区三区高清