jjzjj

windows - 如何从 Powershell 调用 GetStdHandle、GetConsoleMode?

尝试使用theAdd-Typeapproach从Powershell脚本读取当前Windows控制台模式时出现错误:$MethodDefinitions=@'[DllImport("kernel32.dll",SetLastError=true)]staticexternIntPtrGetStdHandle(intnStdHandle);[DllImport("kernel32.dll",SetLastError=true)]staticexternboolGetConsoleMode(IntPtrhConsoleHandle,outuintlpMode);'@$Kernel32=Ad

c# - RegisterPowerSettingsNotification C# pinvoke

我正在尝试检测笔记本电脑盖子何时打开和关闭,应该非常简单。我似乎可以正确注册该事件,但是当我关闭笔记本电脑窗口时我没有收到通知。这是DLL导入(动态链接库代码:http://www.pinvoke.net/default.aspx/user32/registerpowersettingnotification.html)(GUID_LIDCLOSE_ACTION:http://social.msdn.microsoft.com/Forums/en-US/tabletandtouch/thread/0bbf90be-9322-47fb-bfa4-016b57211b3a)[DllImpo

.net - .NET 与 .NET Core 2 的不同 P/Invoke 入口点

我正在将一些代码从.NET(4.5)移动到.NETCore(2),并且有一个像这样的多目标项目...net45;netcoreapp2.0代码库使用来自kernel32的Win32API函数CopyMemory,但我发现我需要根据我的目标框架使用不同的入口点名称。#ifNET45[DllImport("kernel32.dll",EntryPoint="CopyMemory",SetLastError=false)]#else[DllImport("kernel32.dll",EntryPoint="RtlCopyMemory",SetLastError=false)]#endifpu

c# - 记事本字符解码

我正在从我的程序打开的记事本中阅读文本。这是我的代码constintWM_GETTEXT=0x000D;constintWM_GETTEXTLENGTH=0x000E;[DllImport("User32.dll",EntryPoint="SendMessage")]externstaticintSendMessageGetTextLength(IntPtrhWnd,intmsg,IntPtrwParam,IntPtrlParam);[DllImport("User32.dll",EntryPoint="SendMessage",CharSet=CharSet.Auto)]extern

c# - 是否可以获取当前事件应用程序的名称

用户可以通过Alt+Tab或单击任务栏中的图标来切换事件应用程序。是否可以获取当前事件应用程序的名称(或其他唯一特征)?我想编写一个程序来收集应用程序使用情况的统计信息。 最佳答案 WindowsAPI有一个函数叫做GetForegroundWindow().您将需要使用P/Invoke调用Win32API。P/Invokewiki有moreinfo对于C#用户。参见thispage获取当前应用程序的标题(名称)的示例。 关于c#-是否可以获取当前事件应用程序的名称,我们在StackOv

c# - MoveFileWithProgress 抛出 "The system cannot move the file to a different disk drive"– 为什么?

我有:[SuppressUnmanagedCodeSecurity][DllImport("Kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]staticexternboolMoveFileWithProgress(stringlpExistingFileName,stringlpNewFileName,CopyProgressRoutinelpProgressRoutine,intdwFlags);publicenumMoveFileOptions{MOVEFILE_COPY_ALLOWED=0x2}并调用它:if(!Move

c# - 桌面添加新窗口时是否有触发事件

我想知道当桌面上出现/出现新窗口时是否触发了任何事件。我愿意使用COM、WMI、WinApis、UIAutomation或任何其他方法,但选择的语言是C#。实际需求:一个进程有1个主窗口和许多其他窗口。例如,其中一个窗口的类名是X(我使用pinvoke获得了此信息)。现在,只要进程中有通知,这个窗口就会弹出几次。我不想显示此窗口。我没有对该进程的代码访问权限,因此我可以禁用该窗口。那么有什么方法可以让我获得一个事件或任何其他机制来跟踪桌面,并且每当类名X的窗口出现/即将出现时它就会隐藏它。如果我对这个问题不清楚,请告诉我。谢谢编辑:Simon的回答非常好。我试过了,并且能够获得除通知/

c# - DwmGetWindowAttribute 使用 PInvoke 返回 0

我正在尝试通过捕获特定窗口来进行屏幕捕获,为了准确计算出要捕获的窗口的大小,我想使用DwmGetWindowAttribute()。当我在Windows10上使用PInvoke调用此函数时,即使结果值为0(成功),Rect结构始终为空。传入的Window句柄也是有效的,因为有调用GetWindowRect()的回退代码有效(尽管存在边框问题)。我有点不知所措。我之前使用过相同的代码(可能是在Windows8.1上?)并且相同的代码似乎可以正常工作,但现在无论我做什么,对函数的调用总是返回一个空结构。这是相关代码。定义:[DllImport("dwmapi.dll")]staticext

c# - 帮助使用 SystemParametersInfo

我在尝试使用SystemParametersInfo时卡住了。我使用Dvorak键盘,所以我试图制作一个exe,只要我想更改键盘布局,就可以双击它。我在C#中使用SystemParametersInfo。我可以很好地检索当前的输入语言。但是,当我尝试设置输入语言时,返回值为false,并且输入语言没有改变。提前感谢您的帮助。这是我使用的代码:classKeyboardSwitcher{[DllImport("user32.dll",CharSet=CharSet.Auto,SetLastError=true)]publicstaticexternboolSystemParameters

c# - 在 XP 中禁用 WiFi 基础架构访问

我有一个应用程序需要禁用基础结构访问然后重新启用它(请不要问为什么。我在保密协议(protocol)下,如果不违反保密协议(protocol)很难解释原因)。我正在使用C#中的p/Invoke执行此操作。要禁用它,我正在创建INTF_ENTRY结构,设置适配器guid,然后将dwCtlFlags设置为0并调用uintoutFlags;WZCSAPI.INTF_ENTRYintf=newWZCSAPI.INTF_ENTRY();intf.wszGuid=adapterGuid;intf.dwCtlFlags=0;WZCSetInterface(null,(uint)INTF_FLAGS.