草庐IT

c++ - 以编程方式将 LAN 计算机名称解析为完全限定名称?

我正在编写一个C++应用程序,它从外部世界接收LAN计算机名称作为输入(例如\\PCNAME123,我可以通过在Windows运行提示符或IE地址栏中键入来访问它)并且需要获取一些基于该名称的数据,例如通过使用它调用gethostbyname()函数。问题是我需要一个完全限定的名称(例如PCNAME123.domainname.net)我已经对其进行了测试,gethostbyname()可以正常工作,但不能用于“PCNAME123”或“\\PCNAME123”。如何获取该网络计算机的完全限定名称(请注意,它不是针对本地主机,而是针对本地网络上的其他计算机)?

c++ - 是否可以创建一个不会通过枚举找到的 win32 消息传递窗口?

我正在尝试使用以下代码枚举所有win32窗口:EnumChildWindows(GetDesktopWindow(),WindowManager::enumChildWindows,reinterpret_cast(this));BOOLCALLBACKWindowManager::enumChildWindows(HWNDhwnd,LPARAMlParam){WindowManager*manager=reinterpret_cast(lParam);////Dostuffwithchildwindowhandle(hwnd)////ReturnTRUEtocontinueenume

c++ - 我应该使用 AcceptEx() 还是 WSAAccept()?

我正在使用OverlappedIO,我想使用阻塞调用来接受客户端连接,就像我使用普通accept()一样。我不确定,但我认为AcceptEx()不会阻塞,而WSAAccept()会阻塞。那么WSAAccept()是否类似于accept()? 最佳答案 accept()和WSAAccept()都会阻塞,除非您使用ioctlsocket将监听器设置为非阻塞模式。因此,您可以使用其中任何一个在阻塞时接受客户端。但是,如果您使用WSAEventSelect在您的监听器上针对FD_ACCEPT注册一个事件,您将获得更多控制权。当客户端准备好被

c++ - WINAPI_FAMILY_PARTITION 有什么作用?

我正在阅读头文件winapifamily.h的定义并注意到WINAPI_FAMILY_PARTITION的以下定义:#defineWINAPI_FAMILY_PARTITION(Partitions)(Partitions)宏的一般用法(作为示例)如下:#ifWINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)现在一头雾水,好像就相当于#ifWINAPI_PARTITION_APP#ifWINAPI_FAMILY_PARTITION(...)有什么意义?这是winapifamily.h头文件的相关部分:/**HeaderfilesusetheWIN

c++ - CComboBox 下拉时不选择 CurSel

我在对话框中有一个按字母顺序排序的组合框。这个组合包含多个字符串,但有些字符串在不同情况下是重复的。即我们有一个“开”和一个“开”,一个“关”和一个“关”。这似乎是多余的,但这是有原因的,尽管现在这并不重要。重复项显然在列表中一个接一个出现,大写字符串在前。即:OFFOffONOn当用户选择“On”(小写)时,正确的索引设置为CurSel并显示正确的字符串。但是,当我单击组合框的箭头以下拉列表时,它不会突出显示CurSel,而是突出显示它前面的大写字符串。请参见下图。这是在下拉列表中选择的:这是展开下拉列表时在组合框中选择的内容。我已经捕获了ON_CBN_DROPDOWN消息,并检查了

c++ - WinAPI:正确地将 HBITMAP 复制到剪贴板

我在尝试将HBITMAP复制到剪贴板时遇到了一些困难。我的HBITMAP是从COLORREF数组创建的,我能够正确显示它。这是它的创建方式:COLORREF*colors=newCOLORREF[imageSize[0]*imageSize[1]];for(inti=0;i为了将我的位图复制到剪贴板,我使用了这段小代码:OpenClipboard(hWnd);EmptyClipboard();SetClipboardData(CF_BITMAP,hBitmap);CloseClipboard();当我执行我的应用程序时,我可以复制位图并将其粘贴到某个地方,例如在MSPaint中。但是如

c++ - 将生成的进程标准输出捕获为 unicode

在我的C++/WinAPI代码中,我想运行一些命令并捕获它们的输出。为了测试非ASCII输出,我将我的网络连接重命名为EthérnétאבגБбИгДд并运行ipconfig。在命令提示符下运行时,输出正确(使用CourierNew等支持字体时可见):C:\>ipconfigWindowsIPConfigurationEthernetadapterEthérnétאבגБбГгДд:(...)我尝试将输出重定向到管道,跟随theexampleinthisanswer.但是从ReadFile()返回的字节数组不是unicode-它是在CP_OEMCP(在我的例子中是CP437)中编码的,

c++ - _InterlockedCompareExchange 文档中 "The sign is ignored"的含义

_InterlockedCompareExchange的文档对每个参数说Thesignisignored.这是否意味着像0xffff和0x7fff(对于16位版本)这样的数字将被_InterlockedCompareExchange16等视为相等其他宽度内在函数?或者这是否意味着内在函数接受有符号和无符号整数?还是别的?如果这不是文档中的错误,它至少看起来是模棱两可的。 最佳答案 符号位不会被忽略,就像其他位一样进行比较。..CompareExchange..函数只关心位的相等性,不以任何特殊方式解释它们。在基于x86的系统上,它们

c++ - GetThreadContext() 返回 87

我正在尝试获取暂停写字板的线程上下文。但是,无论我对代码进行什么更改,它都返回87。STARTUPINFOsi={0};PROCESS_INFORMATIONpi={0};CONTEXTctx;if(CreateProcess(L"C:\\Windows\\write.exe",NULL,NULL,NULL,false,CREATE_SUSPENDED,NULL,NULL,&si,&pi)){coutSuccessSuccess 最佳答案 CONTEXT结构包含特定于处理器的寄存器数据。所以它的定义取决于目标架构。为x86和amd6

c++ - 我可以将从相机获取的单 channel 图像输出到 winAppi 窗口吗?

我有一个指向使用第三方SDK从相机获取的图像的指针。图像是一个波段(Mono8)。我想将它作为位图输出到winAppi窗口中。我做的是HBITMAPhBitmap=NULL;BITMAPINFOHEADERbmih;bmih.biSize=sizeof(BITMAPINFOHEADER);bmih.biWidth=1280;bmih.biHeight=960;bmih.biPlanes=1;bmih.biBitCount=8;bmih.biCompression=BI_RGB;bmih.biSizeImage=0;bmih.biXPelsPerMeter=0;bmih.biYPelsP