Tag: kernel32

kernel32.dll Sleep和Thread.Sleep()之间的任何区别

以下内容之间是否存在任何差异(性能,实施……无论如何): 一世) DllImport(“kernel32.dll”)] public extern static void Sleep(uint msec); ..然后调用睡眠function II) Thread.Sleep()

EnumResourceNames问题 – 未知错误

我最近使用二级库/二进制模块的资源,遇到了一个奇怪的错误。 我有两个本机WinAPI引用: [DllImport(“kernel32.dll”, SetLastError = true)] public extern static bool EnumResourceNames(IntPtr hModule, int lpszType, EnumResNameProc lpEnumFunc, IntPtr lParam); [DllImport(“kernel32.dll”, SetLastError=true)] public extern static IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, int dwFlags); 当我调用LoadLibraryEx时,我正在获取IntPtr实例 – 正是我需要的: IntPtr x = WinApi.LoadLibraryEx(@”D:\Software\Reflector\Reflector.exe”,IntPtr.Zero,2); Debug.WriteLine(x.ToInt32()); 但是,当我尝试枚举图标资源(由ID = 3定义)时: Debug.WriteLine(WinApi.EnumResourceNames(x, 3, new EnumResNameProc(ListCallback), IntPtr.Zero)); Debug.WriteLine(Marshal.GetLastWin32Error()); 我收到此错误代码(由GetLastError返回): -532462766 这通常意味着存在未知错误,据我所知,但我只是好奇 – 从可执行文件列出资源可能会出现什么问题?

我需要固定匿名代表吗?

我从C#应用程序调用CopyFileEx,并将匿名委托传递给LPPROGRESS_ROUTINE参数,以便获取有关文件复制进度的通知。 我的问题是,匿名代表是否需要固定以及为什么(或为什么不)。 此外,如果: CopyFileEx没有阻止。 如果我传入一个非匿名的代表。 谢谢!

以编程方式重命名计算机c#.net

我需要通过.net应用程序重命名我的电脑。 我试过这段代码: public static bool SetMachineName(string newName) { MessageBox.Show(String.Format(“Setting Machine Name to ‘{0}’…”, newName)); // Invoke WMI to populate the machine name using (ManagementObject wmiObject = new ManagementObject(new ManagementPath(String.Format(“Win32_ComputerSystem.Name='{0}'”,System.Environment.MachineName)))) { ManagementBaseObject inputArgs = wmiObject.GetMethodParameters(“Rename”); inputArgs[“Name”] = newName; // Set the name ManagementBaseObject outParams = wmiObject.InvokeMethod(“Rename”,inputArgs,null); uint ret = (uint)(outParams.Properties[“ReturnValue”].Value); if (ret == 0) { //worked […]

C#GetProcAddress返回零

出于某种原因,每当我的C#.NET 2.0应用程序调用GetProcAddress它总是返回零。 public class MyClass { internal static class UnsafeNativeMethods { [DllImport(“kernel32.dll”, CharSet = CharSet.Auto, SetLastError = true)] internal static extern IntPtr LoadLibrary(string lpFileName); [DllImport(“kernel32.dll”, CharSet = CharSet.Auto, SetLastError = true)] internal static extern bool SetDllDirectory(string lpPathName); [DllImport(“kernel32.dll”, CharSet = CharSet.Auto, SetLastError = true)] internal static extern IntPtr GetProcAddress(IntPtr hModule, string procName); } private void […]