草庐IT

c# - AddFontResource() 在 Win10 周年更新时变慢

我正在维护.NET3.5应用程序。在应用程序启动期间,从工作目录中读取许多字体并在Windows中注册。我们对每个字体文件使用AddFontResource(stringlpFileName)(Gdi32.dll)的pinvoke调用。代码一直很快,直到我升级到Win10周年更新(在此之前,Win10没有问题)。现在一个调用可能需要半秒,这将启动时间增加了90秒。知道是什么导致了这个问题吗?以及如何解决? 最佳答案 Windows10周年更新破坏了AddFontResource和RemoveFontResourceAPI的性能。我们

windows - 如何找到用户刚刚启动的可执行文件?

我正在开发一个测试框架,该框架需要能够记录用户的事件然后重播它们。我很好地使用围绕P/Invoke的ManagedWinAPI包装器(在C#中工作)来记录鼠标和键盘事件,这是有效的,但我认为为了使记录更有用,我需要更多地了解用户启动时发生的情况一个应用程序。我不知道的是如何找到一个应用程序刚刚启动,它是什么应用程序。因此,假设用户启动了我的录音应用程序,然后转到开始菜单并单击“Paint”,我希望能够记录作为事件启动的“Paint.exe”(或者如果他们单击了传递一些参数的快捷方式这将是包含参数的快捷方式的值),因为如果我想在不同的机器上播放录音,菜单项可能位于不同的位置,因此鼠标事件

c# - 如何确定另一个应用程序的窗口是否可见?

我最近获得了WinXDVDRipperPlatinum的许可,令我恼火的是,当它完成DVD的翻录后,它并没有告诉我。没有弹出窗口,没有系统“哔哔”声——什么都没有。进度对话框简单地关闭。主窗口甚至不关注自己......为了加快我的DVD翻录过程,我正在制作一个简单的控制台应用程序(使用C#和VS2010):找到名为“WinX_DVD_Ripper_Platinum”的进程句柄(WinXDVDRipperPlatinum软件的进程名称)使用thissampleatpinvoke.net中定义的GetChildWindows方法找到该进程的进度对话框句柄启动一个System.Timers.

c++ - Windows 最低级套接字编程?

我对winsock有多低级有点困惑?我想在Windows上编写一个非常基本的客户端-服务器程序。我真的不想使用臃肿的TCP甚至UDP,只是一些非常基本和低延迟的东西。winsock会是这个的理想选择吗?或者winsock是否与windows网络功能相同,只是全部打包(并且可能更慢)?在nativeWindows网络功能上使用PInvoke会更好吗? 最佳答案 Winsock、TCP、UDP和任何建立在这些之上的广受欢迎的网络库都将在性能方面具有可比性。使用最简单的方法来完成您的工作。 关

c - 反编译一个c dll以使用pinvoke

你能反编译一个cdll来使用pinvoke或者使用反射器吗?如何获取方法名称和签名? 最佳答案 简单地说,没有简单的方法可以做你想做的事。您可以使用反汇编程序库,例如distorm不过,要反汇编导出入口点周围的代码。有一些启发式方法可以使用,但其中许多仅适用于32位调用约定(__stdcall和__cdecl),尤其是。我个人觉得它的Python绑定(bind)很有用,但是libdasm可以做同样的事情。任何其他具有反汇编功能的工具都会有很大的值(value),例如OllyDbg或ImmunityDebugger。注意:如果您有一个

windows - 在终端服务器上,服务如何在用户 session 中启动进程?

从终端服务器(在全局空间)上运行的Windows服务,我们希望能够在特定用户的终端服务器session中启动一个运行Windows应用程序的进程。如何做到这一点?Scenerio:Windows服务在启动时启动。在用户登录到终端服务器用户session后,基于某些只有Windows服务知道的标准,Windows服务想要在用户session中启动一个运行Windows应用程序的进程。示例:我们想向用户显示“5分钟后关机”警告。Windows服务会检测到这种情况,并在每个用户session中启动一个进程,以启动显示警告的Windows应用程序。而且,是的,我知道还有其他显示警告对话框的方法

c# - 获取线程的可见窗口的标题

我想知道我将如何去做这件事,因为我已经尝试了无数不同的user32函数并在网上进行了相当广泛的研究,但不幸的是我还没有想出一个解决方案。有一个应用程序有5个线程。只要进程的PID,就可以通过.NETProcess类的GetProcessById方法轻松访问这些线程。但是,似乎没有可用于提供线程ID并枚举其窗口(父窗口或子窗口)的函数。其中一个线程共有10个窗口,其中9个隐藏,1个可见。该可见线程的标题是我试图以编程方式获得的。我最近的方法是获取进程句柄,将其放入EnumChildWindows,并尝试以这种方式将每个窗口句柄添加到一个集合中,但我的集合始终是空的。这是我在Process

c# - 正确使用 P/Invoke

我需要从C#调用外部dll。这是header定义:enumWatchMode{WATCH_MODE_SYSTEM=0,WATCH_MODE_APPLICATION=1};LONGADS_APIWDT_GetMode(LONGi_hHandle,WatchMode*o_pWatchMode);我在C#中添加了枚举和调用:publicenumWatchMode{WATCH_MODE_SYSTEM=0,WATCH_MODE_APPLICATION=1}[DllImport("AdsWatchdog.dll")]internalstaticexternlongWDT_GetMode(longh

c# - 更改外部窗口的最小尺寸

是否可以更改外部窗口的最小尺寸并调整它的大小。假设外部应用程序窗口的大小为(400,400),最小大小为(200,200),我们有什么办法可以将其更改为(100,100)。我有外部窗口的句柄。我尝试使用MoveWindow函数internalstaticexternboolMoveWindow(IntPtrhWnd,intX,intY,intnWidth,intnHeight,boolbRepaint);但在窗口达到最小尺寸后无法执行此操作。不可能这样做吗?我愿意使用托管的c#代码,例如UI自动化,甚至是Windowsapi、pinvoke等。有什么建议吗?

c# - 我需要 Hook 什么功能(使用简易 Hook )以防止最小化第三方应用程序?

我正在尝试编写一个简单的东西来防止第三方应用程序能够最小化。我要使用EasyHook因为我认为这是最简单的方法。我的代码将使用C#。我一直在查看EasyHook存储库中的示例,我只是不确定我需要替换哪个Windows函数才能实现此目的。或者,如果有另一种方法也可以做到这一点。示例(不工作):Program.csusingSystem;usingSystem.Text.RegularExpressions;usingEasyHook;namespaceAutoMaximize{internalclassProgram{privatestaticvoidMain(string[]args)