草庐IT

c++ - 将 WPARAM 传递到 DragQueryFile 不兼容?

我有点困惑。当一个文件被拖到一个带有WS_EX_ACCEPTFILES标记的窗口上时,它会将一个PostMessage放入WndProc函数中,该函数将UINT消息设置为WM_DROPFILES,并且根据https://msdn.microsoft.com/en-us/library/windows/desktop/bb774303(v=vs.85).aspxWPARAM=(WPARAM)(HDROP)hDrop;所以我是否错误地假设我可以使用WPARAM来初始化HDROP或只是将它传递到DragQueryFile??LRESULTCALLBACKWndProc(HWNDhwnd,UI

windows - 堆栈缓冲区溢出(Windows、C++): how can I detect the culprit?

Windows上是否有任何工具/库可以帮助我找到罪魁祸首?这是一个相当大的代码库,具有多个线程。我主要为Linux编写代码;Windows是一个陌生的领域。感谢您的输入。 最佳答案 对于堆栈缓冲区,使用/GS编译,参见CompilerSecurityChecksInDepth对于堆缓冲区,您可以尝试使用堆gflag,参见GFlagsandPageHeap,但需要小心,因为所有分配,无论大小,都会有自己的页面。 关于windows-堆栈缓冲区溢出(Windows、C++):howcanId

c# - 复制大型 (120+GB) 文件时速度变慢

我有一个C#应用程序,正在使用FileStream类通过千兆局域网从*EDIT*isilon存储单元(映射到z驱动器)读取一个120GB的文件。我从获得45兆字节/秒的读取速度开始,但在大约20GB的范围内,我的读取速度急剧下降并稳定到大约9兆字节/秒。是否有人对可能导致放缓的原因有任何想法?服务器是WindowsServer2008EnterpriseR264位、16GBRAM、双四核CPU,我的应用程序是64位.NETFramework4.0控制台应用程序。这是我的代码:byte[]buffer=newbyte[16777216];intcount;longtotalBytes=0

C Windows 缓冲区大小

假设我在Windows中使用recv函数从套接字接收数据。我很好奇最佳缓冲区有多大?我可以将其设置为1024字节,也可以将其设置为51200字节或更大。我想知道哪个对性能更好。这不仅适用于recv函数,假设我正在读取一个大文本文件,我需要一个非常大的缓冲区还是一个较小的缓冲区? 最佳答案 操作系统执行自己的缓冲,因此缓冲区的大小并不重要。性能损失在于函数调用:1字节缓冲区将是低效的,因为它需要对recv()的调用太多。缓冲区太大只是浪费空间。最佳大小大约是您希望在单个recv()调用中接收或处理的数据大小的两倍,下限约为1或2tcp

c++ - 如何进入和读取控制台程序?

对于我想编写的程序,我必须向控制台程序输入命令并从中读取命令,但我不知道该怎么做。为了便于理解,以下示例的解决方案可能会有所帮助:我想编写一个程序,将所有自然数平方到100,并将结果保存到文本文件中。假设我不知道如何计算平方数,因此使用具有以下(不可用)源代码的可执行文件square_x.exe:#includeusingnamespacestd;intmain(){doublein;cout>in){cout(253)/*²*/那么我必须如何添加到以下代码片段?(建议,在“不知何故”指示的地方):#includeusingnamespacestd;ofstreamfile;voidw

c++ - GetCurrentDirectory 缓冲区未返回正确的值

我对GetCurrentDirectory()有疑问,我不太明白为什么。我不明白的是它适用于XP但不适用于7(或至少在我的计算机上)。这是我的代码:chardir_name[1024];//asaglobalvariableintget_files(){//...DWORDdwRet;dwRet=GetCurrentDirectory(MAX_PATH,dir_name);printf("%s\n",dir_name);printf("%d\n",dwRet);//...}此代码将返回:printf("%s\n",dir_name);->return"c"printf("%d\n",d

c - 策略在终止时刷新文件输出

我有一个监控高速通信链路并将日志写入文件(通过标准C文件IO)的应用程序。对到达链接的消息的响应时间很重要,因此我有意不在每条消息处fflush文件,因为这会减慢我的响应时间。然而,在某些情况下,我的应用程序会“暴力”终止(例如,通过终止进程),并且在这些情况下,最后几条日志消息不会被写入(即使通信链路已经安静了一段时间)。我可以使用哪些技术/策略来确保我的大部分数据都已刷新,同时又不影响响应速度?编辑:应用程序在Windows上运行 最佳答案 使用线程是对此的标准解决方案。让您的数据收集代码将数据写入线程安全队列,并使用信号量向写

c - 带有部分窗口标题的 FindWindow (Windows, C)

是否有类似于FindWindow()但按部分标题搜索窗口的API?原因是我需要一个窗口的句柄,该窗口的标题有固定部分,但另一部分不断变化。因此,例如窗口标题可以是:数据库读取:XYDB或数据库读取:WZDB在示例中,修复部分是“DataBaseread:”代码赞赏。谢谢 最佳答案 一个使用EnumWindows的例子:BOOLCALLBACKWorkerProc(HWNDhwnd,LPARAMlParam){staticTCHARbuffer[50];GetWindowText(hwnd,buffer,50);if(_tcsstr(

c++ - 它会导致内存泄漏吗?

我写了这段代码:stringgetWinTitle(HWNDhwnd){constintMAX_LENGTH=1000;wchar_ttitle[MAX_LENGTH];ZeroMemory(title,MAX_LENGTH);GetWindowText(hwnd,(LPWSTR)title,MAX_LENGTH);char*buffer=newchar[MAX_LENGTH];wcstombs(buffer,title,MAX_LENGTH);stringres=buffer;returnres;}这里有内存泄漏吗?我需要释放ZeroMemory分配的内存吗?我是否需要显式释放分配给

c - 在 win32 api 中的文本文件末尾追加文本

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我试图打开一个文本文件,向其中写入一些数据,然后在已写入文件的数据末尾追加一些数据,但这不起作用。任何人都可以帮我找出我的代码的问题吗?代码片段:charbuffer[]="Writethistexttofile";DWORDdwWritten;//numberofbyteswrittentofileHANDLEhFile;hFile=CreateFile