我有一个窗口的HWND,使用GetWindowThreadProcessId我得到它的进程的pid,通过GetModuleFileNameEx我得到了可执行路径(我使用PathFindFileName来获取可执行名称)。但是,我似乎找不到任何方法(如果有的话)来获取程序的名称。例如,对于可执行文件chrome.exe,我想获取名称“GoogleChrome”。你能帮帮我吗?编辑:谢谢大家!使用您推荐的引用资料,我想出了这个:CStringcsProductName;DWORDcbFileVersionInfo=GetFileVersionInfoSize(pszProcessPath,
我正在寻找一种方法来获取与给定HWND关联的工具提示控件(如果有)。工具提示控件的文本也足够了。我找到的最接近的是TTM_GETTEXT消息,但它意味着要发送到工具提示控件本身,而不是与其关联的工具。虽然我没有工具提示控件的句柄。有人知道怎么做吗?所有这些都是使用C++中的普通WindowsAPI完成的。 最佳答案 似乎没有从控件获取提示或其文本的特定消息,但这是MFC的CWnd类实现OnToolHitTest()的方式,您应该能够适应Win32:INT_PTRSomeFunction(HWNDhWndChild,TOOLINFO*
我想使用OpenGL在C++中创建屏幕保护程序。发送到我的应用程序以在小窗口中预览屏幕保护程序的命令行包含一个数字,它是屏幕保护程序控制面板小程序中的小监视器窗口的hwnd。如何将此字符串转换为有效的hwnd? 最佳答案 来自INFO:ScreenSaverCommandLineArguments:isaHWNDpresentedonthecommandlineasanunsigneddecimalnumber.因此,将十进制数转换为unsignedint然后转换为HWND.例如:(HWND)atoi(argv[n])哪里argv[
我正在处理的对话框未显示,使用:CWnd::CreateDlgIndirect(LPCDLGTEMPLATElpDialogTemplate,CWnd*pParentWnd,HINSTANCEhInst)对CreateDlgIndirect的调用是在lon-used基类中进行的,它有效地获取了资源文件中对话框模板的IDD-它适用于许多其他对话框,但我看不出我的对话框有什么不同。当以更正常的方式创建时,我的对话框工作正常,但我必须使用基类,因为它内置了许多其他功能。我在dlgcore.cpp中搜索CWnd::CreateDlgIndirect时发现,普通的Win32API调用失败了:hW
我有一个int我打算从根广播(rank==(FIELD=0))。intwinnerif(rank==FIELD){winner=something;}MPI_Barrier(MPI_COMM_WORLD);MPI_Bcast(&winner,1,MPI_INT,FIELD,MPI_COMM_WORLD);MPI_Barrier(MPI_COMM_WORLD);if(rank!=FIELD){cout但看来我明白了[JM:6892]***AnerroroccurredinMPI_Bcast[JM:6892]***oncommunicatorMPI_COMM_WORLD[JM:6892]*
条件变量通常用于在互斥量下修改它们所指的状态。然而,当状态只是一个单一的只设置标志时,就不需要互斥锁来阻止同时执行。所以有人可能想做这样的事情:flag=1;pthread_cond_broadcast(&cvar);然而,这只有在pthread_cond_broadcast暗示写内存屏障时才是安全的;否则,等待线程可能会在标志写入之前看到条件变量广播。也就是说,等待线程可能会唤醒,消耗cvar信号,但看到标志仍然是0。所以,我的问题是:pthread_cond_broadcast和pthread_cond_signal调用是否意味着写入内存屏障?如果是这样,这在相关的POSIX(或其
我使用ShellExecute从我当前的应用程序创建一个新的应用程序实例。我想获取该应用程序的HWND。是否可以从HINSTANCE获取HWND或者我需要使用EnumWindows? 最佳答案 你是对的,你需要枚举你的窗口thisquestionwillhelpyoufurther 关于c++-HWND的HINSTANCE,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/51925
我有一种情况,当我收到一条消息时,我必须从hWnd中删除一个窗口。我虽然这一定是可能的,因为CreateWindowEx通过返回HWND创建了一个对象,但我必须能够删除一个对象。注意:hWnd位于其他进程中。 最佳答案 正确的方式是发送WM_CLOSE向相关窗口发送消息或直接调用DestroyWindow这将发送WM_DESTROY消息到窗口。线程不能使用DestroyWindow来销毁由不同线程创建的窗口。WM_CLOSE和WM_DESTROY的区别:发送WM_CLOSE后,目标应用程序可以在销毁窗口之前提示用户确认,方法是处理W
我在一个创建hwnd及其相应的WndProcLRESULTCALLBACK的IDE中工作。我需要将WndProc更改为自定义的。我读过SetWindowLong可以完成这项工作,但我找不到任何工作示例。例如:HWNDhwnd;//我的窗口SetWindowLong(hwnd,GWL_WNDPROC,myNewWndProc);SetWindowLong的第三个参数是一个Long,正如函数的名称一样。如何从我的WndProc函数引用一个Long?我的WndProc:LRESULTCALLBACKWndProcedure(HWNDhwnd,UINTuMsg,WPARAMwParam,LPA
我有一个出现在系统托盘中的C#WinForms应用程序。应用程序在加载时隐藏主窗体:privatevoidMainForm_Load(objectsender,System.EventArgse){Hide();}对于相同的主窗体,我覆盖了WndProc以捕获自定义窗口消息(该消息已通过RegisterWindowMessageWin32API调用注册到Windows)。protectedoverridevoidWndProc(refMessagem){if(m.Msg==WM_MYCUSTOM_MESSAGE){//Handlecustommessage}}我从外部C++应用程序使用