jjzjj

c# - 按名称/标题返回窗口句柄

我无法解决这个问题。我得到一个错误:Thename'hWnd'doesnotexistinthecurrentcontext这听起来很简单,而且可能是……抱歉问了这么明显的问题。这是我的代码:publicstaticIntPtrWinGetHandle(stringwName){foreach(ProcesspListinProcess.GetProcesses()){if(pList.MainWindowTitle.Contains(wName)){IntPtrhWnd=pList.MainWindowHandle;}}returnhWnd;}我尝试了很多不同的方法,但都失败了。提前

C# Process.MainWindowHandle 总是返回 IntPtr 零

这是我的代码:using(Processgame=Process.Start(newProcessStartInfo(){FileName="DatabaseCheck.exe",RedirectStandardOutput=true,CreateNoWindow=true,UseShellExecute=false})){lblLoad.Text="Loading";intSwitch=0;while(game.MainWindowHandle==IntPtr.Zero){Switch++;if(Switch%1000==0){lblLoad.Text+=".";if(lblLoad

c# - 将窗口停靠在另一个窗口中

我有一个winform应用程序(.NET2.0C#)。从这个应用程序,我想启动另一个进程(另一个winform应用程序)并将其停靠到我的窗口(或者至少让它看起来像停靠)。到目前为止,我只能找到有关停靠控件的信息,而不是单独进程中的窗口。我的第一个想法是获取窗口的句柄并使用非托管系统调用将窗口的高度/宽度和位置设置到我的停靠区域。但在我开始之前,我想看看你们中有没有好心人做过类似的事情。我可以访问我想要停靠的应用程序的源代码,但如果可以避免,我宁愿不做任何更改。我对父应用程序有完全的编程控制权。有什么建议吗?提前致谢! 最佳答案 我之

c# - 如何从 C# 以编程方式(即 F5)刷新 Windows 桌面?

是的,我知道这似乎是一个愚蠢的问题,它只是一个一次性的hack,我需要结束一个有点平凡的任务,这样我才能继续做更有趣的事情。编辑:也许更多信息会有所帮助:我正在尝试从桌面上删除一些快捷方式,我需要用户立即看到它已被删除(这样他们就不必按F5)。 最佳答案 您可以使用SHChangeNotifyAPI。[System.Runtime.InteropServices.DllImport("Shell32.dll")]privatestaticexternintSHChangeNotify(inteventId,intflags,IntP

C#指针类型的默认值

我一直在搜索C#语言规范,但找不到任何说明指针类型(例如int*)是否使用默认值初始化的内容。我创建了一个简单的测试应用程序,它似乎将它们初始化为零,但我想通过规范确认这一点。我开始寻找这个是因为我在反射器中注意到IntPtr类使用此代码定义其IntPtr.Zero:publicstructIntPtr:ISerializable{privateunsafevoid*m_value;publicstaticreadonlyIntPtrZero;.......publicstaticunsafebooloperator==(IntPtrvalue1,IntPtrvalue2){retur

c# - 屏幕截图安全桌面

我正在使用屏幕共享项目。我正在使用以下功能捕获桌面屏幕。它工作正常。但是每当securedesktoppromptingforelevation.它返回黑色/空白图像。但是当我turnoffsecureddesktop来自本地安全策略。它工作正常。有什么方法可以在不禁用本地安全策略的情况下捕获安全桌面。staticBitmapCaptureDesktop(){SIZEsize;Bitmapprintscreen=null;size.cx=Win32Stuff.GetSystemMetrics(Win32Stuff.SM_CXSCREEN);size.cy=Win32Stuff.GetS

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

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

c# - 如何在 C# winform 应用程序中写入非缓存文件

我试图确定最坏情况下的磁盘速度,因此我编写了以下函数。staticpublicdecimalMBytesPerSec(stringvolume){stringfilename=volume+"\\writetest.tmp";if(System.IO.File.Exists(filename))System.IO.File.Delete(filename);System.IO.StreamWriterfile=newSystem.IO.StreamWriter(filename);char[]data=newchar[64000];Stopwatchwatch=newStopwatch

c# - 如何处理 null 或可选的 DLL 结构参数

如何处理使用pinvoke从C#调用的dll方法中的可选struct参数?例如,lpSecurityAttributesparameterhere不存在时应传递null。传递struct的正确方法似乎是使用ref,但它不能有可选参数,或者通常采用null.有什么方法可以实现? 最佳答案 你有几个选择1)使用class而不是struct我觉得这个方法最简单。只需声明struct作为class:[StructLayout(LayoutKind.Sequential)]publicclassCStruct{//member-list}然后

c# - 如何以编程方式最小化打开的窗口文件夹

如何获取已打开文件夹的列表、枚举并以编程方式最小化每个文件夹?有时,当从应用程序中的一种形式跳转到另一种形式时,一些打开的文件夹确实会从工具中窃取焦点。防止这种情况是我们客户的重中之重。客户是视障人士,因此他们只能通过屏幕阅读器访问机器。最小化其他窗口(文件夹)根本不是问题,实际上是必需的。我试过这个:foreach(ProcesspinProcess.GetProcessesByName("explorer")){p.StartInfo.WindowStyle=ProcessWindowStyle.Minimized;}正如预期的那样,它并没有什么好处。更新:根据这里的答案,我试过这