草庐IT

c# - 通过句柄获取窗口的边界

我正在尝试获取当前事件窗口的高度和宽度。[DllImport("user32.dll",CharSet=CharSet.Auto,ExactSpelling=true)]publicstaticexternIntPtrGetForegroundWindow();[DllImport("user32.dll")]privatestaticexternboolGetWindowRect(IntPtrhWnd,Rectanglerect);Rectanglebonds=newRectangle();GetWindowRect(handle,bonds);Bitmapbmp=newBitmap

c# - 获取事件窗口文本(并向其发送更多文本)

我正在用C#创建一个小实用程序,它会在按下全局热键时向事件文本框添加一些文本,这是一种自动完成功能。我有我的全局热键工作,但现在我不知道如何在事件文本框中获取当前文本(如果事件窗口是一个文本框。)到目前为止我尝试过的是使用一个。GetForegroundWindow,然后使用该句柄调用GetWindowText。这给了我事件窗口的窗口标题,而不是文本框内容。GetActiveWindow并使用该句柄调用GetWindowText。这根本没有给我任何文字。这是我做过的一个例子[DllImport("user32.dll")]privatestaticexternboolUnregiste

c# - 从不使用标签控件的对话框中获取文本?

这是我之前问题的延续HowtosupressadialogboxanInprocCOMServerdisplays.背景:回顾一下我的情况:我有一个由第3方用Delphi编写的InprocCOM服务器。如果我调用的函数之一捕获特定类型的错误,它将显示一个错误消息对话框。问题是我正在尝试批量处理数据,而我正在使用的数据源导致该错误对话框弹出很多(感谢我之前问题的回答,它现在自动关闭并且我能够运行它到完成后,它会显示对话框并要求有人按OK9923次)。进程阻塞,直到消息框关闭。问题:我希望更好地记录错误对话框中所说的内容。但是,任何获取对话框正文的尝试都失败了。//Snipprivatev

c# - 如何使用 Win32 API 在 TreeView 中选择一个项目

我正在尝试使用Win32API将一系列用户输入自动化到C#中已编译的应用程序。我没有我试图控制的应用程序的任何源代码,并且在我试图控制它时它正在运行。在我的代码中,我有一个按钮,单击该按钮时,需要对我试图控制的应用程序进行一系列3次输入:在TreeView中选择一个项目点击一个按钮点击另一个按钮它的工作方式是第2步中的按钮根据第1步中在TreeView中选择的项目执行操作。我可以通过简单地发送消息来使按钮点击正常工作,但我无法确定了解如何选择我想要的TreeView项目。TreeView是静态的,因此项目和布局永远不会改变。它具有以下布局:-itemsA-元素B--itemB1-ite

c# - Win32Exception 存储空间不足,无法处理此命令

通过我对MaxTo的自动崩溃收集我收到以下崩溃报告:V8.12.0.0-System.ComponentModel.Win32Exception-:VoidUpdateLayered():0Version:MaxTo8.12.0.0Exception:System.ComponentModel.Win32ExceptionErrormessage:NotenoughstorageisavailabletoprocessthiscommandStacktrace:atSystem.Windows.Forms.Form.UpdateLayered()atSystem.Windows.For

c# - 在透明 WPF 窗口后面模糊

我正在尝试创建一个带有半透明无边框窗口的WPF应用程序,该窗口模糊了其背后的背景。这是我想做的一个例子。Screenshot我尝试使用仅适用于WindowsVista/7的DwmEnableBlurBehindWindow。我正在尝试寻找适用于Windows7、8和10的解决方案。 最佳答案 对于任何感兴趣的人,我已经找到了适用于Windows10的解决方案,它看起来好像在Windows8上是不可能的,就像DavidHeffernan提到的那样,DwmEnableBlurBehindWindow已从Windows8中删除,但是Mic

c# - 如何获取窗口客户区的坐标

我可以使用GetClientRect和GetWindowRectWin32调用获取窗口整个区域的坐标和客户区的坐标。我的问题是GetClientRect始终为左上角返回0,0。我如何确定实际客户区域相对于窗口矩形的位置? 最佳答案 您可以使用ClientToScreen获取屏幕坐标中左上角(0,0)点的坐标。GetClientRect返回的RECT将适合您获取右下角(只需添加到ClientToScreen设置的POINT)。 关于c#-如何获取窗口客户区的坐标,我们在StackOverf

c# - 使用 C#/Win32 将文本写入记事本

我正在弄乱Win32API和Windows消息传递,试图弄清楚它们是如何工作的,我发现了这个questionveryhelpful.我想改进那里提供的解决方案,以便它附加文本,而不是仅仅通过WM_SETTEXT替换记事本中的文本。我的问题是,我将如何使用WM_GETTEXTLENGHT,然后使用WM_GETTEXT来获取记事本窗口中的当前文本,以便我可以在使用WM_SETTEXT之前向其追加新文本?在32位和64位机器上使用WM_XXXTEXT是否都有效?如果记事本中有很多文本,建议的获取/设置算法是否仍然有效,或者它会占用大量资源吗?如果是这样,是否有另一种方法可以将文本附加到记事本

c# - 在 C# 中命名 Windows API 常量

namingconventionforconstantsinC#是Pascal大小写:privateconstintTheAnswer=42;但有时我们需要表示WindowsAPI中已经存在的常量。例如,我不知道如何命名://////Withthisstyleturnedonforyourform,///Windowsdouble-bufferstheformandallitschildcontrols.///publicconstintWS_EX_COMPOSITED=0x02000000;我应该给它起什么名字?将它保持为WS_EX_COMPOSITED可以让我快速将它与theWin

c# - 独占锁定文件然后删除/移动它

我正在用C#实现一个类,该类应该监视一个目录,在文件被删除时处理它们,然后在处理完成后立即删除(或移动)已处理的文件。由于可以有多个线程运行此代码,第一个获取文件并独占锁定它,因此没有其他线程会读取同一个文件并且没有外部进程或用户可以以任何方式访问.我想在文件被删除/移动之前保持锁定状态,这样就不会有另一个线程/进程/用户访问它的风险。到目前为止,我尝试了2个实现选项,但没有一个能如我所愿。选项1FileStreamfs=file.Open(FileMode.Open,FileAccess.Read,FileShare.Delete);//ReadandprocessFile.Dele