设为首页 收藏本站
查看: 704|回复: 0

[经验分享] windows mobile 6.3 C# VS2008 FTP的使用

[复制链接]
累计签到:29 天
连续签到:1 天
发表于 2015-11-3 10:48:10 | 显示全部楼层 |阅读模式
  最近在windows mobile 平台上开发,因为国内物流行业多数现在使用的PDA还是这样老掉牙的wm操作系统,没办法。别说什么已经淘汰的塞班、这么火的安卓、IOS。谁还用windows mobile开发。 用的是VS2008 基于.net compact framework,没办法,我只能说是阉割版的.net框架,好多东西都没有了,比如说groupbox控件,比如说FTP这东西,比如说listview控件的自动调整列宽的属性、等等,都被阉割掉了。 如果说在PC平台上,做个FTP那不是很轻松的事情,大家都会使用FtpWebRequest这个类,但是用C#在windowsmobile上开发FTP就没那么简单了。但是能不能实现呢?我告诉你,100%可以实现,放心去做吧。废话少说,开始吧。必须使用wininet.dll库,这是毫无疑问的。
  1、因为下面使用相关API的需要,所以添加以下结构体:// service types for InternetOpen()public enum ACCESS_TYPE_FOR_INTERNETOPEN{INTERNET_OPEN_TYPE_PRECONFIG=0, // use registry configurationINTERNET_OPEN_TYPE_DIRECT=1, // direct to netINTERNET_OPEN_TYPE_PROXY=3, // via named proxyINTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY=4 // prevent using java/script/INS};// service types for InternetConnect()public enum ACCESS_TYPE_FOR_INTERNETCONNECT{INTERNET_SERVICE_FTP=1,INTERNET_SERVICE_GOPHER=2,INTERNET_SERVICE_HTTP=3};// protocol-specific flags.public enum PROTOCOL_SPECIFIC_FLAG{INTERNET_FLAG_PASSIVE=0x08000000 // used for FTP connections};// These are the generic rights.public enum ACCESS_TYPE_FOR_FILE: uint{GENERIC_READ=0x80000000,GENERIC_WRITE=0x40000000,GENERIC_EXECUTE=0x20000000,GENERIC_ALL=0x10000000};// FTP manifestspublic enum ACCESS_TYPE_FOR_TRANSFER{FTP_TRANSFER_TYPE_UNKNOWN=0x00000000,FTP_TRANSFER_TYPE_ASCII=0x00000001,FTP_TRANSFER_TYPE_BINARY=0x00000002};public enum FILE_ATTRIBUTE:uint{FILE_ATTRIBUTE_READONLY=0x00000001,FILE_ATTRIBUTE_HIDDEN= 0x00000002,FILE_ATTRIBUTE_SYSTEM=0x00000004,FILE_ATTRIBUTE_DIRECTORY=0x00000010,FILE_ATTRIBUTE_ARCHIVE=0x00000020,FILE_ATTRIBUTE_INROM=0x00000040,FILE_ATTRIBUTE_NORMAL=0x00000080,FILE_ATTRIBUTE_TEMPORARY=0x00000100,FILE_ATTRIBUTE_SPARSE_FILE=0x00000200,MODULE_ATTR_NOT_TRUSTED=0x00000200,FILE_ATTRIBUTE_REPARSE_POINT=0x00000400,MODULE_ATTR_NODEBUG=0x00000400,FILE_ATTRIBUTE_COMPRESSED0x00000800,FILE_ATTRIBUTE_OFFLINE0x00001000,FILE_ATTRIBUTE_ROMSTATICREF=0x00001000,FILE_ATTRIBUTE_NOT_CONTENT_INDEXED=0x00002000,FILE_ATTRIBUTE_ROMMODULE=0x00002000,FILE_ATTRIBUTE_ENCRYPTED=0x00004000}; 2、加入以下的接口引用  //wininet for FTP[DllImport("wininet.dll",EntryPoint="InternetOpen")]extern static IntPtr InternetOpen(string lpszAgent, UInt32 dwAccessType, string lpszProxyName, string lpszProxyBypass, UInt32 dwFlags);[DllImport("wininet.dll", EntryPoint = "InternetConnect")]extern static IntPtr InternetConnect(IntPtr hInternet, string lpszServerName, UInt16 nServerPort, string lpszUserName, string lpszPassword, UInt32 dwService, UInt32 dwFlags, UInt32 dwContext);[DllImport("wininet.dll", EntryPoint = "InternetReadFile")]extern static bool InternetReadFile(IntPtr hFile,byte[] lpBuffer,int dwNumberOfBytesToRead,out int lpdwNumberOfBytesRead);[DllImport("wininet.dll", EntryPoint = "InternetWriteFile")]extern static bool InternetWriteFile(IntPtr hFile,IntPtr lpBuffer,UInt32 dwNumberOfBytesToWrite,IntPtr lpdwNumberOfBytesWritten);[DllImport("wininet.dll", EntryPoint = "InternetCloseHandle")]extern static bool InternetCloseHandle(IntPtr hInternet);[DllImport("wininet.dll", EntryPoint = "FtpOpenFile")]extern static IntPtr FtpOpenFile(IntPtr hConnect, string lpszFileName, ACCESS_TYPE_FOR_FILE dwAccess, ACCESS_TYPE_FOR_TRANSFER dwFlags, UInt32 dwContext);[DllImport("wininet.dll", EntryPoint = "FtpGetFileSize")]extern static UInt32 FtpGetFileSize(IntPtr hFile,IntPtr lpdwFileSizeHigh);[DllImport("wininet.dll", EntryPoint = "FtpGetFile")]extern static bool FtpGetFile(IntPtr hConnect, string lpszRemoteFile, string lpszNewFile, bool fFailIfExists, UInt32 dwFlagsAndAttributes, UInt32 dwFlags, UInt32 dwContext);[DllImport("wininet.dll", EntryPoint = "FtpPutFile")]extern static bool FtpPutFile(IntPtr hConnect,string lpszLocalFile,string lpszNewRemoteFile,UInt32 dwFlags,UInt32 dwContext);[DllImport("wininet.dll", EntryPoint = "FtpGetCurrentDirectory")]extern static bool FtpGetCurrentDirectory(IntPtr hConnect,string lpszCurrentDirectory,IntPtr lpdwCurrentDirectory);[DllImport("wininet.dll", EntryPoint = "FtpSetCurrentDirectory")]extern static bool FtpSetCurrentDirectory(IntPtr hConnect,string lpszDirectory);[DllImport("wininet.dll", EntryPoint = "FtpCreateDirectory")]extern static bool FtpCreateDirectory(IntPtr hConnect,string lpszDirectory); 3、具体怎么使用这些接口,大家可以去看MSDN了,我不在这里赘述了。
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-134441-1-1.html 上篇帖子: Windows2008 IIS7+PHP 5.3.5配置PHP图解 下篇帖子: Windows Server 2008 (R2) IIS 7.0 WebDAV设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表