pb7下使用几个Win32 API 的例子

  • 时间:
  • 来源:互联网
  • 文章标签:

  pb7下会用到API来处理很多底层的操作。因为PB7在数据库方面强,在别的方面就显得很弱。pb7中使用win32 API 也是很简单的。首先对要使用的win32 API 进行声明,然后就是调用,声明和调用的时候需要注意数据类型。

  声明一般在 Declare  --> Global External Functions 中。

  1,几个文件系统操作的API

声明:

//  用关联的应用程序打开一个文件    
FUNCTION   long   ShellExecuteA(   ulong   hWnd,   string   Operation,   string   lpFile,string   lpParameters,   string   lpDirectory,   int   nShowCmd   )   LIBRARY   "shell32.dll"     
 
//  创建一个目录
 Function   boolean   CreateDirectoryA(
string   lpPathName,string   lpSecurityAttributes)   Library   "kernel32.dll"
    
//      删除一个空目录
 FUNCTION   ulong   RemoveDirectory(ref   string   lpPathName)   LIBRARY   "kernel32.dll"   ALIAS   FOR   "RemoveDirectoryA"   

调用:

//  打开文件
ShellExecuteA(0,"open","c:Northsnow.doc","","",1

//  创建目录
string ls_SecurityAttributes,As_PathName
SetNull(ls_SecurityAttributes)
As_PathName 
= "c:Northsnow"
CreateDirectoryA(as_PathName,ls_SecurityAttributes)

//  删除空目录
string filePath
filePath
="c:Northsnow"
RemoveDirectory(filePath)

文件系统操作的API功能非常强。这里只是列出了刚刚用过的几个而已。比如创建,打开,修改,删除文件和目录,文件系统的拷贝,剪切和粘贴。文件系统的遍历,文件系统属性的操作。

  2,几个FTP连接的API

声明:

 

FUNCTION ulong InternetConnect (ULONG HINTERNET,REF STRING lpszservername ,long nserverport ,ref string lpszusername,ref string lpszpassword,ulong dwsevice,ulong dwflags,ref ulong dwcontext  ) library "WININET.DLL" alias for "InternetConnectA"

FUNCTION boolean FtpGetFile(ulong hconnect ,ref string lpszremotefile,ref string lpsznewfile,boolean ffailifexists,ulong dwflagsandattributes,ulong dwfalgs,ref ulong dwcontext) library "WININET.DLL" alias for "FtpGetFileA"

FUNCTION BOOLEAN FtpPutFile(ulong hconnect ,ref string lpszLocalfile,ref string lpszNewRemoteFile,ulong dwfalgs,ref ulong dwcontext) library "WININET.DLL" alias for "FtpPutFileA"


FUNCTION BOOLEAN FtpDeleteFile (ULONG HCONNECT,REF STRING LPSZLOCALFILE,REF STRING LPSZNWEREMOTEFILE ,ULONG DWFLAGS,REF ULONG DWCONTEXT) LIBRARY "WININET.DLL" ALIAS FOR "FtpPutFileA"

FUNCTION BOOLEAN FtpDeleteFile (ULONG HCONNECT ,REF STRING LPSZFILENAME) LIBRARY "WININET.DLL" ALIAS FOR "FtpDeleteFileA"

FUNCTION BOOLEAN FtpRenameFile (ULONG HCONNECT,REF STRING LPSZEXISTING ,REF STRING LPSZNEW) LIBRARY "WININET.DLL" ALIAS FOR "FtpRenameFileA"

FUNCTION ULONG FtpOpen(ULONG HCONNECT ,REF STRING LPSZFILENAME,ULONG DWACCESS,ULONG DWFLAGS,REF ULONG DWCONTEXT ) LIBRARY "WININET.DLL" ALIAS FOR "FtpOpenFileA" 

FUNCTION BOOLEAN FtpSetCurrentDirectory (ULONG HCONNECT,REF STRING LPSZDIRECTORY) LIBRARY "WININET.DLL" ALIAS FOR "FtpSetCurrentDirectoryA"

FUNCTION BOOLEAN FtpGetCurrentDirectory (ULONG HCONNECT ,REF STRING LPSZCURRENTDIRECTORY,REF ULONG LPDWCURRENTDIRECTORY) LIBRARY "WININET.DLL" ALIAS FOR "FtpGetCurrentDirectoryA" 

FUNCTION ULONG InternetOpen(REF STRING LPSZAGENT,ULONG DWACCESSTYPE,REF STRING LPSZPROXY ,REF STRING LPSZPROXYBYPASS,ULONG DWFLAGS) LIBRARY "WININET.DLL" ALIAS FOR "InternetOpenA"

FUNCTION   long   ShellExecuteA(   ulong   hWnd,   string   Operation,   string   lpFile,string   lpParameters,   string   lpDirectory,   int   nShowCmd   )   LIBRARY   "shell32.dll"     
Function   boolean   CreateDirectoryA(string   lpPathName,string   lpSecurityAttributes)   Library   "kernel32.dll"

 

调用:

 

 

ulong    lnginetconn //被赋予 wininet.dll internetconnect 函数
boolean  ftpgetf     //被赋予 wininet.dll ftpgetfile 函数   
ulong    ulngIetOpen 
//被赋予 wininet.dll internetopen 函数

string sAgent="liuyang"
string sProxy
string sProxyByPass
ulngIetOpen
=InternetOpen(sAgent,0,sProxy,sProxyByPass,0)
lnginetconn
=InternetConnect(ulngIetOpen,ftpserver ,ftpport,ftpu,ftpp,1,0,d)



string f
string g 
   
//从服务器上取文件
ftpgetf
=FtpGetFile(lnginetconn,f,g,false,0,1,d)


string str
boolean bPutFile
string g
ulong e 
=0
bPutFile
= FtpPutFile(lnginetconn,g,str,0,e)  


string  ds
//在ftp服务器上删除文件
ftpdeletef
= FtpdeleteFile(lnginetconn,ds) 

 

 

本文链接http://www.taodudu.cc/news/show-647672.html