草庐IT

WinAPI-RedBlue

全部标签

windows - 学习低级 WinAPI 编程是否仍然有意义?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。拥有所有C#管理的幸福,回到Petzold的编程窗口并尝试使用纯WinAPI生成代码是否有意义?可以从中学到什么?是不是太过时了,没有用了?

winapi - 如何使用 'C' 在 Windows 中查找可用的 TCP 端口

我想要两个Windows应用程序,它们使用Windows套接字通过TCP/IP进行通信。在此,我希望我的程序自动选择可用的空闲端口来建立连接。有没有办法使用C或C++程序找到可用的TCP端口?准确地说,我想自动检测服务器端的空闲端口并让客户端知道相同的端口(以连接到服务器)。感谢您的宝贵时间! 最佳答案 I'dliketoautomaticallydetectafreeportontheServerside简单地bind()将您的监听TCP套接字连接到端口0。操作系统将为您选择一个可用端口。然后,您可以使用getsockname()

winapi - 以编程方式确定 Win32 上 TCP 连接的数据包丢失

我有一个使用winsock创建TCPIP套接字的win32应用程序。这很好,除了在某些情况下我想知道实际套接字的统计信息。发送的数据包、接收的数据包、发送的总字节数等。但我想看到的最重要的数据是数据包丢失。我一直无法找到获取此类数据的正确调用,我查看了getsockopt,但找不到获取此类数据的好方法。有没有办法在WindowsAPI上获取TCP套接字的底层统计信息?作为引用,我使用的是Windows7(64位版本)谢谢! 最佳答案 你可以试试GetTcpStatisticsEx.它返回MIB_TCPSTATS结构,其中包含重传计数

winapi - 具有重叠 I/O 的 TCP 连接

是否可以在Windows中发起具有重叠I/O的TCP连接请求,并在连接完成之前取消它?我需要至少支持WindowsXPSP2。 最佳答案 ConnectEx允许重叠连接尝试。要取消这个需要使用CancelIo像传递HANDLE一样传递SOCKET(确实如此)。但是这必须从调用ConnectEx的同一个线程完成。管理事物以实现线程特异性不太容易。XP/2003(即Vista/2008/8/2008R2)之后你可以使用CancelIoEx来自不同的线程(OVERLAPPED实例用于完全识别IO操作)。

winapi - 如何在 Windows 上检测已安装的 Sun/Oracle JRE?

我试着用谷歌搜索答案,但我发现的只是关于如何从浏览器检测Java的提示,或者只是启动Java并查看它是否运行的非常通用的方法,这可能会在我的应用程序中引入很长的延迟。(第一次在我的机器上启动时大约两秒钟)如果有以下限制,我希望有更快的方法:仅Sun/OracleJRE或JDK仅1.6及更高版本仅限Windows平台不是来自浏览器,而是来自普通的旧Win32可执行文件此检测不适用于公共(public)应用程序,仅供在Windows平台上内部使用。是否有我可以读取的注册表路径或我可以解析的配置文件? 最佳答案 HKEY_LOCAL_MA

c# - WinApi - GetLastError 与 Marshal.GetLastWin32Error

我测试了很多。但我没有发现这两个的缺点!但是请参阅已接受的答案。我读了here在托管代码中调用GetLastError是不安全的,因为框架可能会在内部“覆盖”最后一个错误。GetLastError我从来没有遇到过任何明显的问题,而且在我看来,.NETFramework足够聪明,不会覆盖它。因此,我有几个关于该主题的问题:在[DllImport("kernel32.dll",SetLastError=true)]中SetLastError属性是否使框架存储使用的错误代码编码(marshal).GetLastWin32Error()?是否有普通GetLastError无法给出正确结果的示例

winapi - 如何在golang中从windows `syscall`加载图片资源?

我正在使用go-bindata编写一个golang程序嵌入图片资源,使用Asset(string)([]byte,error)函数访问资源。但是我现有的库代码是这样的:funcNewIconFromFile(filePathstring)(uintptr,error){absFilePath,err:=filepath.Abs(filePath)iferr!=nil{return0,err}hicon,_,_:=LoadImage.Call(0,uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(absFilePath))),IMAGE_IC

winapi - 调用windows函数(获取字体目录)

我试图找出Windows安装上的字体文件夹。AFAICS建议的方法是调用Shell32.dll中的SHGetKnownFolderPath,并将KNOWNFOLDERID设置为FOLDERID_Fonts。我不知道要将什么传递给下面代码中的Call函数:packagemainimport("syscall")funcmain(){//HRESULTSHGetKnownFolderPath(//_In_REFKNOWNFOLDERIDrfid,//_In_DWORDdwFlags,//_In_opt_HANDLEhToken,//_Out_PWSTR*ppszPath//);var(sh

c++ - 有什么理由更喜欢 memset/ZeroMemory 而不是 WinAPI 结构的值初始化?

在Win32编程中使用了一些POD结构。这些结构通常需要在使用前清零。这可以通过调用memset()/ZeroMemory()来完成STRUCTtheStruct;ZeroMemory(&theStruct,sizeof(theStruct));或按值初始化:STRUCTtheStruct={};虽然thetwovariantsabovearenotequivalentingeneral:以不同的方式处理填充区别对待非POD成员变量如果是在Win32中使用的POD结构,它们看起来是等效的。在任何情况下应该使用memset()/ZeroMemory()而不是Win32POD结构的值初始化

winapi获取鼠标指向当前元素

        最近接到这么个需求,要求获取windows下鼠标当前位置的所在应用。代码如下:intmain(){ POINTpoint; Sleep(1000); GetCursorPos(&point);//获取鼠标当前坐标 HWNDh=WindowFromPoint(point);//根据坐标获取所在窗口句柄 printf("handle:%d\n",(int)h); printf("x=%d,y=%d\n",point.x,point.y); printf("windowtext:"); chars[400]={0}; booleanres=GetWindowText(h,s,400)