搭建网站赚钱,恶意点击竞价时用的什么软件,中华企业网站建设,wordpress阿里云配置1、前言
Window是一个复杂的系统#xff0c;kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数#xff0c;提供了操作系统的基本功能。
2、Ini使用
Ini文件读写使用时#xff0c;我们需要用到其中的一些函数对文件进行读写。
API#xff1a;
/// kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数提供了操作系统的基本功能。
2、Ini使用
Ini文件读写使用时我们需要用到其中的一些函数对文件进行读写。
API
/// summary/// 获取所有节点名称(Section)/// /summary/// param namelpszReturnBuffer存放节点名称的内存地址,每个节点之间用\0分隔/param/// param namenSize内存大小(characters)/param/// param namelpFileNameIni文件/param/// returns内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够/returns[DllImport(kernel32.dll, CharSet CharSet.Auto)]private static extern uint GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer, uint nSize, string lpFileName);/// summary/// 获取某个指定节点(Section)中所有KEY和Value/// /summary/// param namelpAppName节点名称/param/// param namelpReturnedString返回值的内存地址,每个之间用\0分隔/param/// param namenSize内存大小(characters)/param/// param namelpFileNameIni文件/param/// returns内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够/returns[DllImport(kernel32.dll, CharSet CharSet.Auto)]private static extern uint GetPrivateProfileSection(string lpAppName, IntPtr lpReturnedString, uint nSize, string lpFileName);/// summary/// 读取INI文件中指定的Key的值/// /summary/// param namelpAppName节点名称。如果为null,则读取INI中所有节点名称,每个节点名称之间用\0分隔/param/// param namelpKeyNameKey名称。如果为null,则读取INI中指定节点中的所有KEY,每个KEY之间用\0分隔/param/// param namelpDefault读取失败时的默认值/param/// param namelpReturnedString读取的内容缓冲区读取之后多余的地方使用\0填充/param/// param namenSize内容缓冲区的长度/param/// param namelpFileNameINI文件名/param/// returns实际读取到的长度/returns[DllImport(kernel32.dll, CharSet CharSet.Auto)]private static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, [In, Out] char[] lpReturnedString, uint nSize, string lpFileName);//另一种声明方式,使用 StringBuilder 作为缓冲区类型的缺点是不能接受\0字符会将\0及其后的字符截断,//所以对于lpAppName或lpKeyName为null的情况就不适用[DllImport(kernel32.dll, CharSet CharSet.Auto)]private static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName);//再一种声明使用string作为缓冲区的类型同char[][DllImport(kernel32.dll, CharSet CharSet.Auto)]private static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, string lpReturnedString, uint nSize, string lpFileName);/// summary/// 将指定的键值对写到指定的节点如果已经存在则替换。/// /summary/// param namelpAppName节点如果不存在此节点则创建此节点/param/// param namelpStringItem键值对多个用\0分隔,形如key1value1\0key2value2/// para如果为string.Empty则删除指定节点下的所有内容保留节点/para/// para如果为null则删除指定节点下的所有内容并且删除该节点/para/// /param/// param namelpFileNameINI文件/param/// returns是否成功写入/returns[DllImport(kernel32.dll, CharSet CharSet.Auto)][return: MarshalAs(UnmanagedType.Bool)] //可以没有此行private static extern bool WritePrivateProfileSection(string lpAppName, string lpString, string lpFileName);/// summary/// 将指定的键和值写到指定的节点如果已经存在则替换/// /summary/// param namelpAppName节点名称/param/// param namelpKeyName键名称。如果为null则删除指定的节点及其所有的项目/param/// param namelpString值内容。如果为null则删除指定节点中指定的键。/param/// param namelpFileNameINI文件/param/// returns操作是否成功/returns[DllImport(kernel32.dll, CharSet CharSet.Auto, SetLastError true)][return: MarshalAs(UnmanagedType.Bool)]private static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);调用函数包装
/// summary/// 读取INI文件中指定KEY的字符串型值/// /summary/// param nameiniFileIni文件/param/// param namesection节点名称/param/// param namekey键名称/param/// param namedefaultValue如果没此KEY所使用的默认值/param/// returns读取到的值/returnspublic static string INIGetStringValue(string iniFile, string section, string key, string defaultValue){string value defaultValue;const int SIZE 5120;if (string.IsNullOrEmpty(section)){throw new ArgumentException(必须指定节点名称, section);}if (string.IsNullOrEmpty(key)){throw new ArgumentException(必须指定键名称(key), key);}StringBuilder sb new StringBuilder(SIZE);uint bytesReturned GetPrivateProfileString(section, key, defaultValue, sb, SIZE, iniFile);if (bytesReturned ! 0){value sb.ToString();}return value;}/// summary/// 在INI文件中指定节点写入指定的键及值。如果已经存在则替换。如果没有则创建。/// /summary/// param nameiniFileINI文件/param/// param namesection节点/param/// param namekey键/param/// param namevalue值/param/// returns操作是否成功/returnspublic static bool INIWriteValue(string iniFile, string section, string key, string value){if (string.IsNullOrEmpty(section)){throw new ArgumentException(必须指定节点名称, section);}if (string.IsNullOrEmpty(key)){throw new ArgumentException(必须指定键名称, key);}if (value null){throw new ArgumentException(值不能为null, value);}return WritePrivateProfileString(section, key, value, iniFile);}3、动态DLL加载
动态加载cDLL方式通过动态获取函数针对转换为C#的委托可以实现动态。
API声明 public static class DyLoadingDll{[DllImport(kernel32.dll)]public static extern IntPtr LoadLibrary(string lpFileName);[DllImport(kernel32.dll)]public static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);[DllImport(kernel32, EntryPoint FreeLibrary, SetLastError true)]public static extern bool FreeLibrary(IntPtr hModule);public static Delegate GetFunctionAddress(IntPtr dllModule, string functionName, Type t){IntPtr address GetProcAddress(dllModule, functionName);if (address IntPtr.Zero)return null;elsereturn Marshal.GetDelegateForFunctionPointer(address, t);}}
调用示例 IntPtr hSdkDll LoadLibrary(MyCamera.dll);
CameraSdkInit (pfnCameraSdkInit)GetFunctionAddress(hSdkDll, CameraSdkInit, typeof(pfnCameraSdkInit));
4、其他 [DllImport(kernel32.dll)]private static extern bool Beep(int frequency, int duration);//声音[DllImport(kernel32.dll)]private static extern bool GetSystemPowerStatus(ref SystemPowerStatus systemPowerStatus);//电源管理[DllImport(kernel32.dll)]public static extern IntPtr GetCurrentProcess();[DllImport(kernel32.dll)]public static extern IntPtr SetProcessAffinityMask(IntPtr handle, IntPtr affinityMask);public void Beep(){Random random new Random();for (int i 0; i 10000; i){Beep(random.Next(100000), 100);}}public string GetProwerSatus(){SystemPowerStatus status new SystemPowerStatus();GetSystemPowerStatus(ref status);string info string.Format($供电状况 {status.ACLineStatus} \n 剩余时间 {status.batteryFullLifeTime} \n 电力剩余 {status.batteryLifePercent} );return info;}
public struct SystemPowerStatus{public ACLineStatus ACLineStatus;public BatteryFlag batteryFlag;public byte batteryLifePercent;public byte reserved1;public int batteryLifeTime;public int batteryFullLifeTime;}public enum ACLineStatus : byte{Offine 0,Online1,Unknown255,}public enum BatteryFlag:byte{Hight 1,Low 2,Critical4,Charging8,NoSystemBattery128,Unknown255,}// 设置亲和性IntPtr newAffinity new IntPtr(affinityMask);SetProcessAffinityMask(processHandle, newAffinity);
其他一些使用可以在实际需要去查找它的函数比较多可能有一个就是你需要的。