首页 > 学院 > 开发设计 > 正文

csharp: using wininet.dll

2019-11-17 02:18:16
字体:
来源:转载
供稿:网友

csharp: using wininet.dll

/// <summary>    /// Windows Embedded CE 6.0 R3  WinInet Functions    /// https://technet.microsoft.com/zh-cn/aa914184    /// Windows   WinINet Functions    /// https://technet.microsoft.com/zh-cn/windows/aa385473(v=vs.71)    ///    /// </summary>    public class NetUtil    {        [DllImport("wininet.dll")]        PRivate extern static bool InternetGetConnectedState(int Description, int ReservedValue);        /// <summary>        /// 用于检查网络是否可以连接互联网,true表示连接成功,false表示连接失败         /// </summary>        /// <returns></returns>        public static bool IsConnectInternet()        {            int Description = 0;            return InternetGetConnectedState(Description, 0);        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        public class WIN32_FIND_DATA        {            public UInt32 dwFileAttributes = 0;            public FILETIME ftCreationTme;            public FILETIME ftLastaccessTime;            public FILETIME ftLastWriteTime;            public UInt32 nFileSizeHigh = 0;            public UInt32 nFileSizeLow = 0;            public UInt32 dwReserved0 = 0;            public UInt32 dwReserved1 = 0;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public string cFileName = null;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]            public string cAlternateFileName = null;        };        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        public class FILETIME        {            public int dwLowDateTime = 0;            public int dwHighDateTime = 0;        };        //以下是对WININET.DLL中的重要函数的托管转换        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool InternetGetLastResponseInfo(ref uint ulError,         [MarshalAs(UnmanagedType.LPTStr)] string strBuffer, ref uint ulBufferLength);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern IntPtr InternetOpen(string strAppName, ulong         ulAccessType, string strProxy, string strProxyBypass, ulong ulFlags);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool InternetFindNextFile(IntPtr hFind, [In, Out] WIN32_FIND_DATA          dirData);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern IntPtr InternetConnect(IntPtr ulsession, string         strServer, uint ulPort, string strUser, string strPassWord, uint ulService, uint ulFlags,         uint ulContext);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool InternetGetConnectedState(ref uint ulFlags, uint         ulReserved);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool FtpSetCurrentDirectory(IntPtr ulSession, string         strPath);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern IntPtr FtpFindFirstFile(IntPtr ulSession, string strPath         , [In, Out] WIN32_FIND_DATA dirData, ulong ulFlags, ulong ulContext);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool FtpGetFile(IntPtr ulSession, string strRemoteFile,         string strLocalFile, bool bolFailIfExist, ulong ulFlags, ulong ulInetFals, ulong         ulContext);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool FtpPutFile(IntPtr ulSession, string strLocalFile,         string strRemoteFile, ulong ulFlags, ulong ulContext);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool FtpDeleteFile(IntPtr ulSession, string strFileName);        [DllImport("wininet.dll", CharSet = CharSet.Auto)]        public static extern bool InternetCloseHandle(IntPtr ulSession);        /// <summary>        //STRUCTURE to hold the directory information - implemented as a class        /// <summary>        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        public class FileData        {            public int fileAttributes = 0;            // creationTime was embedded FILETIME structure            public int creationTime_lowDateTime = 0;            public int creationTime_highDateTime = 0;            // lastAccessTime was embedded FILETIME structure            public int lastAccessTime_lowDateTime = 0;            public int lastAccessTime_highDateTime = 0;            // lastWriteTime was embedded FILETIME structure            public int lastWriteTime_lowDateTime = 0;            public int lastWriteTime_highDateTime = 0;            public int nFileSizeHigh = 0;            public int nFileSizeLow = 0;            public int dwReserved0 = 0;            public int dwReserved1 = 0;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]            public String fileName = null;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]            public String alternateFileName = null;        } //end of class FileDate        /// <summary>        /// Class FtpDll implements the 'wininet.dll' api for FTP connection over firewalls!        /// </summary>        public class FtpDll        {            //DECLARATIONS            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]            public static extern uint SetLastError(uint uiErrorCode);            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]            public static extern uint GetLastError();            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool InternetGetLastResponseInfo(ref uint ulError, [MarshalAs(UnmanagedType.LPTStr)] string strBuffer, ref uint ulBufferLength);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern IntPtr InternetOpen(string strAppName, ulong ulAccessType, string strProxy, string strProxyBypass, ulong ulFlags);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern IntPtr InternetConnect(IntPtr ulSession, string strServer, uint ulPort, string strUser, string strPassword, uint ulService, uint ulFlags, uint ulContext);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool InternetGetConnectedState(ref uint ulFlags, uint ulReserved);            //        [DllImport("wininet.dll", CharSet = CharSet.Auto)]            //        public static extern bool FtpGetCurrentDirectory(IntPtr ulSession, string strPath, ulong ulBuffLength);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool FtpSetCurrentDirectory(IntPtr ulSession, string strPath);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern IntPtr FtpFindFirstFile(IntPtr ulSession, string strPath, [In, Out] FileData dirData, ulong ulFlags, ulong ulContext); //returns handle for InternetFindNextFile            //        [DllImport("wininet.dll", CharSet = CharSet.Auto)]            //        public static extern bool InternetFindNextFile(ulong ulFindFirst, [In, Out] FileData dirData);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool FtpGetFile(IntPtr ulSession, string strRemoteFile, string strLocalFile, bool bolFailIfExist, ulong ulFlags, ulong ulInetFals, ulong ulContext);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool FtpPutFile(IntPtr ulSession, string strLocalFile, string strRemoteFile, ulong ulFlags, ulong ulContext);            //        [DllImport("wininet.dll", CharSet = CharSet.Auto)]            //        public static extern bool FtpRenameFile(IntPtr ulSession, string strExisting, string strNew);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool FtpDeleteFile(IntPtr ulSession, string strFileName);            [DllImport("wininet.dll", CharSet = CharSet.Auto)]            public static extern bool InternetCloseHandle(IntPtr ulSession);            //CONSTANTS - there are plenty more of these, only the important ones are here!            //InternetOpen
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表