草庐IT

c++ - 对话框的单独任务栏按钮

我支持基于WinAPI/ATL的应用程序,其中包含根据用户操作创建的许多对话框窗口。大多数对话框都是无主窗口。如果同时创建多个对话框,它们的任务栏按钮将在任务栏上组合在一起(默认行为)。现在我的任务是为其中一个对话框窗口创建一个单独的任务栏按钮。我找不到有关如何执行此操作的任何相关信息。我什至尝试使用ITaskbarListCOM接口(interface),但它的AddTab()方法就像上面的默认模型一样工作。是否可以为应用程序的一个实例在任务栏上放置多个按钮?如果是,请解释我如何实现这一点。 最佳答案 在Windows7及更高版本

windows - 隐藏 ListView 中列之间的垂直线

在具有aero主题的Windows7中,Windows资源管理器不会在详细信息View中显示垂直线。但是任务管理器会显示那几行。有没有办法在Win32API的ListView中隐藏垂直线? 最佳答案 资源管理器使用的ListView不是系统ListView控件。相反,它是一个私有(private)控件,其类名DirectUIHWND不公开供公众使用。系统ListView控件SysListView32没有允许您在LVS_REPORT模式下抑制列之间的垂直线的选项。 关于windows-隐藏

c++ - 如何判断 stderr 是否已在 Windows 中重定向?

我希望我的程序在stderr连接到控制台时和重定向到文件/管道时具有不同的行为。在Unix系统中,我可以只测试isatty(STDERR_FILENO),但我如何在Windows中执行此操作?MSVCRT也有一个名为_isatty的函数,它不能正常运行(例如DetectNULfiledescriptor(isattyisbogus))。我可以调用任何Windows或NTAPI来测试它吗? 最佳答案 调用GetStdHandle获取标准错误句柄。将该句柄传递给GetFileType以找出它是什么类型的文件。如果返回FILE_TYPE_

c# - 使用 C# 和 Win API 移动屏幕键盘 (osk.exe)

我制作了这个小的.ps1脚本,因为它允许我在不使用编译器(至少直接使用)的情况下运行C#。我想移动使用cmd/cosk.exe打开的“辅助功能屏幕键盘”,因为我不能真正使用TabTip-平移触摸屏键盘在Win8+上。由于屏幕键盘不像平移键盘那么漂亮,我想移动键盘到所需位置并调整它的大小。我注意到OSK有一个子窗口(OSKMainClass→DirectUIHWND),所以我为此努力了,但没有运气。另一方面,用于单个窗口的相同代码适用于记事本并正确放置它并调整它的大小。我将Process.Start()放入if中,以便它返回一些反馈,因此我看到它找到了子窗口-这很好。但是,它没有移动它。

node.js - 我可以使用 Node.js 创建 native Windows 桌面应用程序吗

所以我听说过http://appjs.com/和http://electron.atom.io/,但我想知道我可以使用node.js创建native应用程序吗?根据我的理解,任何语言都可以调用WINAPI,这可能只是一个问题,是否有人愿意为它们创建一个包装器?(并可能在Linux/OSX中创建等效项)我只是想知道我的理解是否正确。提前致谢! 最佳答案 如评论中所述,已经有模块通过与WindowsAPI接口(interface)来执行此操作。你可以试试node-ffi还有一个用于加载DLL的模块。

c++ - 获取主板序列号

我想将程序绑定(bind)到特定计算机,为此我想使用主板的序列号作为唯一标识符。虽然我可以找到一些C#和Java的示例,但我找不到任何可靠的C++示例(我读到WMI可能会失败,具体取决于硬件),但肯定有一种方法可以在C++中执行此操作吗?编辑:换句话说,我想要的是一个简单而基本的许可系统。为了更清楚,这是它的样子:#defineUSER_SERIAL123456789doubleGetMotherBoardSerialNumber();//...doublecurrentSerial=GetMotherBoardSerialNumber();if(currentSerial!=USER

c++ - 如何确定计算机上安装的物理 RAM? ( Windows )

如何在Windows中使用C++将物理内存安装到我的计算机上?我的意思不仅是可以GlobalMemoryStatusEx()的容量参数,还有已用内存插槽的数量、内存类型(如DDR1/DDR2/DDR3)、插槽类型(DIMM/SO-DIMM)和内存总线的时钟速率。我需要使用SMBIOS吗?或者是否有其他方式获取此信息? 最佳答案 在我的机器上,您请求的大部分信息都可以通过WMI获得。看看Win32_PhysicalMemory和相关类(class)。比如wmicmemorychip在我的机器上的输出是:C:\>wmicmemorych

c++ - 如何判断虚拟内存页是否已被锁定?

比如说,如果在某个时候我的进程中的某个范围的虚拟内存被这样锁定://Memorywasreserved&committedassuchvoid*pMem=::VirtualAlloc(NULL,4096,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);//...//Andthen::VirtualLock(pMem,4096);所以在我的进程的虚拟内存中有一个页面的任意地址,我可以判断它是否是locked? 最佳答案 使用win32api这是不可能的。但如果使用ZwQueryVirtualMemory与

windows - 在 wininet.h 中,SECURITY_SET_MASK 的用途是什么?

在wininet.h中,SECURITY_SET_MASK的用途是什么?我在网上找不到它的任何文档。 最佳答案 这是一个mask,允许您一次设置或清除多个位(标志)。在这种情况下,它是所有可设置的安全标志。SDKheader中此常量的定义是掩码中包含哪些标志的权威引用:#defineSECURITY_SET_MASK(SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_IGNORE_CERT_CN_INVALID|SECURITY

c++ - 未调用 ReadFileEx() 完成例程

我正在编写一个类(PipeReader)来处理Windows上的命名管道。该类使用异步IO从管道读取。到目前为止,我一直在没有事件循环的线程中使用该类,我不得不等待IO完成使用SleepEx()并且它起作用了。现在我有第二个带有事件循环的线程和PipeReader类的第二个实例,但是从未调用第二个实例的完成例程。调用CreateFile():handle=CreateFile(fullServerName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);调用ReadFileEx():B