草庐IT

wpf - WPF 不使用 Windows (pl.) for Controls 有什么影响?

它wouldappear在经典的Windowstm应用程序中,显示的每个控件(按钮、列表框、菜单...)都有自己的窗口(如HWND)。此外,使用Windows窗体(WinForms),虽然控件不再使用经典的窗口类,但每个控件仍然有自己的窗口(HWND)。但是,通过WPF创建的Windows(复数)不使用单独的Windows(复数)作为其控件。WPF对话框上的按钮不是一个单独的窗口(HWND)。问题这对我们(作为开发人员)可以用WPF窗口做什么或不能做什么有什么影响加上它的控件与“经典”对话框窗口,其中不仅每个控件都有自己的HWND,但即使是窗口类也是众所周知的(Button、#3277

windows - 温索克;合并发送调用

我正在开发一个服务器,它涉及通过TCP向多个客户端广播大量相同的数据。类似于:for(i=0;i是否有任何工具可以让我将其合并到单个用户/内核事务中?我所追求的是矢量I/O的模拟(当然多套接字句柄除外;不是缓冲区)注意事项:协议(protocol)选择(TCP)是不可协商的(不是我的决定)LSP等不是一种选择。潜在的解决方案必须与重叠的I/O兼容这是一个问题的原因是性能要求(软实时;对延迟和抖动非常敏感)。 最佳答案 当您使用Windows8或WindowsServer2012时,您可以使用注册的I/O扩展来消除系统调用开销并减少延

windows - 访问非常长的文件名的 ntfs 流失败

从名称很长的文件(超过MAX_PATH个字符长,根据this使用“\\?\”前缀创建)访问备用ntfs流时遇到一点问题.我第一次认为这是我的代码错误,但后来我尝试了一个cmd命令:more它失败并显示找不到文件的错误。该文件存在并且可以读取其内容,但我无法访问读取和写入所需的流。我不希望我的软件无法处理长文件名,因此我正在寻找针对这种情况的任何解决方法。我知道我可以使用BackupReadfunction,但我不确定这个解决方案是否可以在大文件上快速运行并且它在2000中不起作用。GetShortPathName给了我同样的失败结果,还有其他可以缩短文件名的API吗?我真的不想使用短文

windows - Windows 编程中的 _spawnl 和 Createprocess(...) API 有什么区别?

Windows编程中的_spawnl(...)和Createprocess(...)API有什么区别?这些API在创建进程行为方面有何不同。 最佳答案 CreateProcess是用于创建进程的nativeAPI。spawnl是C运行时的一部分,具有类似POSIX的语义。它仅支持一小部分功能(提供命令行参数)并作为CreateProcess的包装器实现。与此同时,spawnl已被弃用,取而代之的是_spawnl。CreateProcess的自然操作模式与spawnl的P_NOWAIT模式相当,但具有附加功能(环境、标准处理安全性信息

c# - 从控制句柄获取进程

我有一个属于系统中另一个进程的控件的句柄。我怎样才能得到它所属的进程?我尝试查找合适的函数,但没有找到太多。 最佳答案 我想您所说的“控件句柄”是指HWND。然后,使用GetWindowThreadProcessIdHWNDhWndToSomeControl;[...]DWORDdwPid;GetWindowThreadProcessId(hWndToSomeControl,&dwPid);编辑:错误控制(在Windows7上测试):HWNDhWndToSomeControl;[...]DWORDdwPid;DWORDdwTid=G

windows - 使用 GUI 创建 Windows 程序但使用 'main()'(在 D 中)?

是否有可能在Windows中创建一个GUI程序,它的入口点在“main()”中?我该怎么做呢?我对此的用途是我想要一个具有统一入口点的跨平台应用程序。 最佳答案 使用main()编写您的应用程序,并在其中调用您将在WinMain中使用的所有GUI调用。这将创建一个同时具有GUI和控制台窗口的应用程序。使用WindowsSDK工具editbin/SUBSYSTEM:WINDOWSappname.exe更改PEheader中的子系统标志,这样Windows就不会自动创建控制台窗口。如果你想为调试消息或类似的东西使用一个有效的stdout

c# - HKEY 到 Microsoft.Win32.RegistryKey 的转换

我有一个使用RegOpenKeyEx(WinApi)开放的注册表HKEY。现在我想将HKEY转换为对象Microsoft.Win32.RegistryKey。这将允许我使用更方便的.Net操作来进一步处理此key。您知道如何以可靠的方式为C#.Net2.0而非更高版本完成此转换吗?感谢您的帮助!我尝试使用反射访问RegistryKey.GetBaseKey(hKey)以将HKEY转换为RegistryKey但失败了:[DllImport("advapi32.dll",CharSet=CharSet.Auto)]publicstaticexternintRegOpenKeyEx(IntP

c++ - 如何以编程方式检索 C++ 中 64 位进程的详细信息?

我的目标是以编程方式获取64位进程的完整命令行。我已经理解并编写了这段代码,我在其中对所有当前正在运行的进程进行了进程遍历,并获取了它们的每一个细节。但问题是此代码无法对64位进程(不在WOW64下运行的进程)执行相同的操作。#include#include#include#include#include#includeusingnamespacestd;BOOLGetProcessList(FILE*f);BOOLListProcessModules(DWORDdwPID,FILE*f);BOOLListProcessThreads(DWORDdwOwnerPID,FILE*f);v

c++ - 在控制台应用程序中与空的 Windows 消息队列作斗争

在下面的(可编译的)示例中,我试图在普通控制台应用程序中监听Windows消息队列,以便接收有关USB设备连接/断开连接的通知。我从这里获取示例代码:DetectingUSBinsertion/RemovalinC++non-GUIapplication但是,在while子句中对GetMessage的调用永远不会返回,因为显然Windows不会向我的队列发送任何消息。我究竟做错了什么?这与UIPI有什么关系吗?我不经常使用MFC/WinAPI,所以请详细回答您的问题。#defineANSI#defineWIN32_LEAN_AND_MEAN#define_WIN32_WINNT0x05

windows - 计划任务是否收到 WM_QUERYENDSESSION 消息?

我有一个程序可以响应WM_QUERYENDSESSION以执行一些作为计划任务运行的清理。日志记录表明未执行清理代码。作为计划任务运行的应用程序是否收到WM_QUERYENDSESSION消息或是否有任何其他方法来检测窗口关闭? 最佳答案 消息被发送到顶层窗口。如果您的流程有一个,它将被发送消息。如果您没有,那么您可以为此创建一个。如果您的应用程序是控制台应用程序,那么SetConsoleCtrlHandler是接收此类通知的推荐方式。从评论线程中可以看出,您的进程正在SYSTEM帐户下运行。根据documentation,这意味着