/// <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
新闻热点
疑难解答