草庐IT

c++ - 发送消息到不同的线程

是否有任何API可以向线程发送消息?基本上我只有threadId可用,我想向该线程发送自定义消息。 最佳答案 PostThreadMessage。虽然不是很可靠。查看旧新事物博客here和here有关原因的详细信息。基本上模态消息循环把整个想法搞得一团糟。由于发布到线程的消息没有窗口句柄,因此调用DispatchMessage将丢弃该消息。您运行的任何模态循环(直接或间接)都会调用DispatchMessage,因此大部分时间此策略都会失败并且您的消息会消失在以太中。 关于c++-发送消

c++ - 如何知道附加的windowstation是否是交互式的?

我正在编写一个可以由另一个服务(在我们的控制下)或由登录用户加载的程序。程序需要知道窗口站是否是交互式的以便显示对话框。我知道GetProcessWindowStation函数,但是这个函数返回一个句柄。有办法查出来吗? 最佳答案 交互式窗口站总是winsta0。所以需要获取windowstationname来确定。这是一些伪代码:wchar_tbuffer[256]={0};DWORDlength=0;GetUserObjectInformation(GetProcessWindowStation(),UOI_NAME,buffe

c - COMSPEC 和 PATH 环境变量应该是什么来定位命令解释器,使用 system()?

操作系统(XP)环境变量是否与从visualstudio.NETC++运行的进程中使用的相同?似乎没有找到命令解释器:当使用NULL作为命令时,system()returns0并使用命令-ENOENTCommandinterpretercannotbefound。在windows中(系统->环境变量),COMSPEC包含cmd.exe的路径路径没有。PATH应该是什么?除此之外,不知道为什么找不到解释器。如有任何建议,我们将不胜感激。谢谢。if(system("tail-500log.txt")==-1){//Errorcallingtail.exeonlog//errnoisasys

c++ - 能不能每次读完串口就清空串口?

读取串口数据后需要清空串口数据再读取数据吗?我在WindowsXP上使用C/C++我该怎么做?提前致谢 最佳答案 清除接收缓冲区几乎总是错误的。串行端口通信本质上是异步的,您将冒删除良好数据的风险。仅当您使用主从协议(protocol)(设备仅在主机查询时才传输)才允许清除。但是,如果接收缓冲区实际上有数据要清除,那么您将忽略协议(protocol)违规,这是您永远不想忽略的事情。可靠的串口通信需要一个协议(protocol)。用于验证消息完整性的校验和和用于从数据损坏中恢复的ACK/NAK握手。查看RFC916中描述的RATP协议

c++ - 以编程方式告诉 Windows XP 待机

如何使用C/C++native代码以编程方式告诉WindowsXP切换到待机模式? 最佳答案 Win32API中的一个可能函数是SetSuspendState:SetSuspendState(TRUE,FALSE,FALSE);发件人:http://msdn.microsoft.com/en-us/library/aa373201(VS.85).aspx 关于c++-以编程方式告诉WindowsXP待机,我们在StackOverflow上找到一个类似的问题:

windows - 具有重复键的 INI 文件

假设我有一个像这样的INI文件:[123]name=Ryanname=Joe如何使用API调用(例如GetPrivateProfileSection)检索“name=Ryan\nname=Joe”和GetPrivateProfileString? 最佳答案 是的,GetPrivateProfileSection会返回它。GetPrivateProfileString()显然只能检索“Ryan”。你不会像你想要的那样得到传递给你的字符串,名称/值对由零分隔。列表的末尾由两个零表示。您在解析它时需要考虑到这一点。

c++ - 在没有注册表的情况下存储应用程序数据/设置的方法?

我需要一些从文件存储和获取数据的方法(在WIN32apic++应用程序中,而不是MFC或.NET)例如关闭窗口时保存窗口的x、y、宽度和高度,并在打开窗口时加载数据。我试过.ini文件,带有函数——WritePrivateProfileString和ReadPrivateProfileString/Int,但是在MSDN上它说“提供此功能只是为了与基于Windows的16位应用程序兼容。应用程序应将初始化信息存储在注册表中。”当我尝试在我的Windows764位机器上读取ini文件时,我遇到了蓝屏!(在visualstudio的Debug模式下)O.O我注意到大多数其他应用程序使用XM

c# - 获取窗口开始菜单项/快捷方式文件的 "friendly"名称

这很奇怪,一些开始菜单项似乎解析为实际.lnk文件中未包含的“友好”名称。例如:“c:\ProgramData\Microsoft\Windows\StartMenu\Programs\Accessories\SystemTools\dfrgui.lnk”在资源管理器中显示为“磁盘碎片整理程序”,实际的快捷方式文件也不包含真实名称,但链接到exe"C:\Windows\system32\dfrgui.exe""这是Win32API的东西还是有更简单的方法来获取文件/开始菜单项的“友好”名称? 最佳答案 该文件夹中有一个名为deskt

windows - GetMessage 是否需要 GUI

很多年前,我了解到要使用GetMessage,您需要某种形式的GUI。没有它,Windows就不会创建消息队列。我是不是学错了?编辑:MSDN说:因为系统将消息定向到应用程序中的各个窗口,所以线程在开始其消息循环之前必须至少创建一个窗口。看来我是被教的很好,还是有更多? 最佳答案 你在这里混淆了一些东西。首先,您可以使用GetMessage,而无需在线程中创建实时窗口。OTOH默认情况下,操作系统不会为新创建的线程创建消息队列。因此-对新创建线程的调用(如PostThreadMessage)可能会失败。要强制创建消息队列,您需要从该

c++ - 将 VK_CODE 转换为可显示的字符串

在编写Windows应用程序时,文档指出某些VK_CODE是可显示字符,例如VK_OEM1是“owithanumlaut”。如何从非ASCII字符的WPARAM转换为可显示的字符串?我正在使用UTF-16。 最佳答案 也许您正在寻找GetKeyNameTextFunction它检索表示键名的字符串。 关于c++-将VK_CODE转换为可显示的字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu