草庐IT

c - execvp 的阻塞版本 (windows)

这题与Non-blockingversionofsystem()正好相反我想用另一个进程替换当前进程(而不是创建另一个进程)。我想启动(例如)notepad,但是以阻塞方式(我不想在notepad关闭之前得到提示。在Windowsshell中我只是这样做cmd/cnotepad(notepad如果没有cmd/c前缀,则自动从提示中分离)在C中,使用system我只是这样做system("notepad");但这是在幕后fork。我想用记事本替换当前进程,并且我希望它是阻塞的。我试过:#include#includeintmain(intargc,char**argv){char*con

c++ - 在 Windows 任务对话框中替换文本 “OK”、 “Cancel”、 “Yes”、 “No”

在Win32上TaskDialog标准按钮的文本“确定”、“取消”、"is"、“否”等会自动以系统语言显示。如果软件的语言与系统的语言不同,这可能会成为问题。例如,如果客户在英文Windows上安装我们软件的法文版本,任务对话框的内容将是法文,但任务对话框底部的标准按钮无论如何都是英文的。有谁知道我该如何更改这些文本。这个问题类似于thisSOquestion这是处理属性表。更新:我尝试从CTaskDialog派生一个类并覆盖OnInit()方法以获取CTaskDialog的m_hWnd并采用类似的方法比前面提到的问题要多,但不幸的是CTaskDialog::m_hWnd是私有(pri

windows - WinAPI 文档在哪里?

例如我搜索“JetCommitTransaction”,搜索结果为https://msdn.microsoft.com/en-us/library/gg269191(v=exchg.10).aspx重定向到https://learn.microsoft.com/en-us/previous-versions/该API适用于从Win2000到最新的Win10的所有Windows版本,甚至适用于Windows10UWP应用,https://learn.microsoft.com/en-us/uwp/win32-and-com/win32-apis#apis-from-esentdll所以它

c# - 在多个显示器上使用 SetWindowPos

使用user32.dll和C#我写了你在下面看到的方法。使用窗口的进程句柄,它将在提供的(x,y)处设置窗口位置。地点。但是,在多监视器环境中,下面的代码仅将窗口位置设置为主监视器。我也希望能够选择哪个显示器。有人可以解释一下如何使用SetWindowPos来实现这一点吗?或者可能与另一个user32.dll的组合功能?[DllImport("user32.dll",SetLastError=true)]staticexternboolSetWindowPos(IntPtrhWnd,IntPtrhWndInsertAfter,intX,intY,intcx,intcy,intuFlag

c++ - 将 Microsoft 的源代码注释语言 (SAL) 与 Doxygen 一起使用?

我正在尝试使用Doxygen记录一些使用MicrosoftSource-CodeAnnotationLanguage(SAL)的C++代码.但是,Doxygen不解析某些注释宏,例如_Success_,正确。对于示例函数注释,_Success_,Doxygen错误地将此宏解释为函数头/原型(prototype)。以下面包含函数注解标记的例子为例:/***@file*Examplewithfunctionannotation.*/#include#include/***@briefThisisafunction.*@paramiarandomvariable*@returnTRUEone

c++ - WM_CREATE 中的 InvalidateRect 不起作用

我想在窗口创建时使它无效。我怎样才能做到这一点?在WM_CREATE期间调用InvalidateRect无效。问题是我在WM_CREATE中调用SetWindowLongPtr并设置GWLP_USERDATA。WM_PAINT在USER_DATA中寻找一些指针,但我第一次收到WM_PAINT时,数据显然不在那里,所以它不会绘制我的东西。也试过这个:#defineMyDefinedMsg(WM_APP+1)//...//caseWM_CREATE://...//SetWindowLongPtr(hWnd,GWLP_USERDATA,ptr);PostMessage(hWnd,MyDefi

c - 提前以编程方式确定文件 "size on disk"

在写入之前,我需要知道给定的内存缓冲区作为磁盘(U盘)文件有多大。我知道除非大小落在block大小边界上,否则它可能会被四舍五入,例如一个1字节的文件在磁盘上占用4096字节。我目前正在使用GetDiskFreeSpace()来计算磁盘block大小,然后使用它来计算磁盘大小,如下所示:GetDiskFreeSpace(szDrive,&dwSectorsPerCluster,&dwBytesPerSector,NULL,NULL);dwBlockSize=dwSectorsPerCuster*dwBytesPerSector;if(dwInMemorySize%dwBlockSize

c++ - 计算C++中相同运行进程的总数

我正在寻找一种方法来检测具有相同进程名称的正在运行的进程数。例如,我运行了3次记事本。记事本.exe记事本记事本所以它会返回3。我目前有这些代码来检测正在运行的进程,但不计算其正在运行的进程数量。#include#include#include#includeboolIsProcessRunning(constchar*ProcessName);intmain(){char*notepadRunning=(IsProcessRunning("notepad.exe"))?"Yes":"No";std::cout任何形式的帮助将不胜感激:)谢谢。 最佳答案

CreateProcessWithLogonW 和 AssignProcessToJobObject

我有一个Windows服务(在WinXPSP2下),在LocalSystem帐户下运行,它使用CreateProcessWithLogonW启动进程。为了清理子进程,我尝试使用作业对象和TerminateJobObject。MSDN声明作业句柄必须具有JOB_OBJECT_ASSIGN_PROCESS访问权限,因为它是通过CreateJobObject创建的。进程句柄必须具有PROCESS_SET_QUOTA和PROCESS_TERMINATE权限。我认为它有它们,因为TerminateProcess和SetProcessWorkingSetSize都没有错误地返回。但是,Assign

windows - Windows 可以检测到显示器、鼠标、键盘何时断开连接吗?

Windows能否检测到显示器、鼠标或键盘何时与计算机断开连接?如果是这样,为此使用什么Win32API? 最佳答案 不确定显示器,但断开连接的键盘和鼠标应该会触发WM_DEVICECHANGE消息(如果它们是USB设备)。有关详细信息,请参阅此链接:WM_DEVICECHANGE在这个forum上对WM_DEVICECHANGE有很好的讨论,与HID设备(鼠标/键盘等)的使用有关要获得更详细的通知,您可以使用RegisterDeviceNotification函数RegisterDeviceNotification