如何在后台使用C++WINAPI将文件从我的程序拖放到其他程序。我的程序必须在没有用户操作的情况下以编程方式执行此操作,没有可见效果,背景平滑。我对拖放技术不是很熟悉,到目前为止我明白我需要使用OLE拖放操作。 最佳答案 您可以查看此代码链接http://blogs.msdn.com/b/oldnewthing/archive/2004/12/06/275659.aspx然后要使用此代码,您可以在visualstudio中使用COMActiveX,如下所示//声明DropTarget类的单个实例CDropSourcecodrop;B
喂我正在尝试做的是一种通过进程ID找到窗口的方法,获取该窗口的名称并将其更改为我想要的名称。我发现了一些关于它的东西:(代码1)intWINAPIGetWindowText(_In_HWNDhWnd,_Out_LPTSTRlpString,_In_intnMaxCount);这个:(代码2)CWnd*pWnd=GetDlgItem();GetDlgItpWnd->SetWindowText(_T("WindowName"));CStringstr;pWnd->GetWindowText(str);ASSERT(str==_T("WindowName"));还有这个(代码3)HWNDWi
有没有办法注册一个处理程序,以便在我的应用程序的窗口根据操作系统(或其他任何人)更改可见性时收到通知,直接通过带有SW_HIDE的ShowWindow()等访问HWND? 最佳答案 假设您的应用程序是基于WinForms的。是的,这应该可以通过覆盖主Form的WndProc来实现。请参阅WndProcMSDNdocumentation了解详情。 关于c#-检测HWND可见性变化,我们在StackOverflow上找到一个类似的问题: https://stack
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ValidateHWNDusingWin32API如果HWND的窗口仍然存在,我该如何确定?我有一个窗口的HWND。该窗口存在于另一个进程中。我想知道窗口是否仍然“活着”。做这个的最好方式是什么?
我有一个Game类,在某个时候它的私有(private)HWND成员m_hWnd会获得一个值:m_hWnd=CreateWindowEx(NULL,"WindowClass","Game",//ReplacewithgameNameWS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst,this);稍后,创建一个D2DResources对象,其中必须传递游戏的m_hWnd。voidGame::CreateRessources(HINSTANCEhInst){C
我试过这个:#includeLRESULTCALLBACKWndProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam){switch(msg){caseWM_CLOSE:DestroyWindow(hwnd);break;caseWM_DESTROY:PostQuitMessage(0);break;caseWM_SIZE:caseWM_MOVE:caseWM_PAINT:{PAINTSTRUCTps;BeginPaint(hwnd,&ps);EndPaint(hwnd,&ps);return0;}caseWM_CTLCOLORSTATIC:{
诚然,这个问题含糊不清,但我正在努力避免陷入设计困境。我听说在一个应用程序中创建数百个按钮和其他控件的性能不如我自己编写无窗口控件并自行处理鼠标单击/移动/跟踪/捕获逻辑。我只想说我的偏好是使用基于HWND的控件,因为我不必重新发明轮子,但如果应用程序变得无法使用则不需要。 最佳答案 根据我对HWND密集型应用程序的体验,我认为您不会遇到严重的一般性能问题。但是,如果您疯狂地创建O/S窗口,则需要确保您没有超过每个进程和每个session的句柄限制(whichdefaultto10,000foraprocessand32,768fo
我有一个第3方ActiveX控件,我想在其他表示技术(Direct3D和WPF)中呈现。为此,我需要ActiveX渲染到系统内存位图而不是屏幕。我知道有办法做到这一点,但不知道从哪里开始。我不害怕做任何native方法Hook,但我不确定从哪里开始。我在想BeginPaint(...)可能是热门票...有没有人这样做过或看到过周围的例子/sample?顺便说一句,我不想做WM_PRINT类型的解决方案。我宁愿此代码是被动的,而不是主动的并强制hwnd重新绘制。编辑:两个答案对我来说都是正确的,所以我给了每个答案+1。我希望有一个较低级别的解决方案来更加灵活,但目前这已经足够了。
我有一个线程调用::PostMessage(hWnd,[...]);向主线程发送一条消息,提醒它注意异步操作的结果。但是,我担心如果线程需要特别长的时间来完成它的操作,当调用PostMessage时hWnd可能不存在(用户可能已经关闭了窗口)。MSDNDocumentation如果hWnd无效,则不会说明任何结果。如果hWnd无效,您是否从经验或其他文档中知道我会发生什么? 最佳答案 RaymondChen写道:http://blogs.msdn.com/b/oldnewthing/archive/2007/07/16/388547
我正在编写的应用程序正在使用虚拟键盘。要显示、隐藏、调整大小或移动虚拟键盘,我首先需要通过调用FindWindow函数获取它的句柄,然后通过PostMessage向它发送一些消息。由于我没有使用winapi的经验,我的问题是我是否需要以某种方式释放这个句柄,或者我可以在完成后忘记它吗?虚拟键盘是一个独立的进程,其生命周期比我的应用程序长。 最佳答案 您不需要完成此句柄。它由创建窗口的进程拥有,该进程还负责销毁它。与内核句柄(文件句柄、事件句柄、互斥句柄等)不同,窗口句柄不进行引用计数。您调用FindWindow,然后对窗口句柄执行需