Articles of 消息

批量执行文件并继续运行

我有这个代码: @echo off Taskkill /f /im wscript.exe 2>> Log.txt If exist "%Temp%\done.vbs" ( Attrib -R -S -H "%Temp%\done.vbs" del /F /Q "%Temp%\done.vbs" If exist "%Temp%\done.vbs" ( Echo Could not delete file "%Temp%\done.vbs" Pause ) ) > "%Temp%\done.vbs" ECHO x=msgbox("stage 1" ,6, "Chip-set") "%Temp%\done.vbs" DEL "%Temp%\done.vbs" echo done 该代码创build一个消息框。 代码的问题在于,当消息框打开时它会暂停,因此会暂停脚本。 即使在消息框打开的情况下,如何使其继续运行代码。 谢谢你的帮助。

WM_ERASEBKGND不跟随WM_PAINT

我的应用程序正在获取一个WM_ERASEBKGND消息, 不跟随WM_PAINT消息。 自然,我的应用程序擦除背景,然后坐在那里一个空白的窗口。 我在Vista下运行,但也发生在XP下。 我非常肯定这是我的错,但是我能做些什么,让Windows不行? 我对使用Spy ++观看的消息相当肯定。 这是在MSVC 2008下编译的C应用程序。

如何在两个C ++ MFC插件之间进行通信?

我有一个c + + MFC应用程序的插件。 我正在与另一个插件的开发人员一起工作,试图在我的代码中获取事件通知。 这两个插件都是c ++ dll的forms。 我怎样才能将消息从我的插件传递给他的插件? 该解决scheme需要对我们两个插件的不匹配版本以及主机应用程序的健壮性。 通知在控制点移动期间,每秒几次。 我可以设置一个callback机制,在加载时他的插件使用函数指针调用我的插件中的函数。 我们不保证任何加载顺序,但我们可能只是定期检查。 我知道Win32有一个消息系统,但我不确定它是如何工作的,真的。 我们可以添加一个钩子,并且可以发送消息,但是我们如何同步消息标识或者我所说的其他任何细节,我都有些模糊。 任何其他想法如何做到这一点?

将消息发送到由不同的Windows用户会话启动的应用程序

桌面应用程序(用Delphi编写)由用户A启动。我们称之为“实例A”。 用户A做一个“切换用户”和用户Blogin。 用户B运行相同的应用程序。 我们称之为“实例B” 我现在想要的是实例B向实例A发送消息的一种方式。 我尝试了以下内容:实例A将其句柄写入文件,因此实例B可以打开该文件,读取句柄,并使用它将消息发布到实例A,但它不起作用 – 可能出于安全原因Windows不允许一个用户访问另一个用户正在运行的进程的句柄。 一个“坏”的方法是让实例A每隔几秒钟检查一个特定的文件或registry位置,所以实例B可以在那里写一些东西,实例A会得到它……但这显然是一个繁重和不合理的解决scheme。 相反,我需要的是用户B的实例B向用户A的实例A发送无害消息的方式,之后,实例A醒来并决定如何去做。 感谢您的任何build议!

如何挂钩特定的Windows消息没有子类化?

有没有一种方法来钩住一个特定的Windows消息,而无需inheritance窗口。 有WH_GETMESSAGE,但似乎造成性能问题。 除了这些不会影响性能的其他解决scheme吗?

如何将消息路由到控件的标准WNDPROC

当一个标准的窗口控件(例如一个"EDIT"控件)被创build时,它的WNDPROC被定义为窗口类的一部分(即"EDIT"有一个特定的WNDPROC ,用来使窗口显示和performance为一个编辑控件)。 MFC允许你通过它们的包装类与这样的控件进行交互,例如CEdit包装"EDIT"窗口控件的专用消息。 MFC进一步允许你将一个"EDIT"窗口的实例绑定到CEdit的一个C ++子类,比如一个CMyEdit ,你可以在其中覆盖inheritance的CEdit和CWnd虚函数,并且你可以定义一个消息表来获得访问/覆盖消息发送到窗口实例本身。 有CWnd :: Default() ,它调用this-> DefWndProc与当前的消息参数。 这似乎查找与其关联的HWND的WNDPROC 。 所以这是正确的答案:调用DefWndProc()(或同样,默认()),将它交给Windows控件的WNDPROC ? 显然,这是不同于其他消息表处理程序可以返回FALSE以指示它们不处理该消息,MFC将自动路由到类inheritance层次结构的消息到此消息的下一个消息处理程序,或者,我假设,默认() WNDPROC生WNDPROC处理? 如果我定义了一个任意的消息处理程序,对WM_SETTEXT说,将这个消息传递给"EDIT" WNDPROC的正确方法是什么? 我也很想知道是否有办法将消息传递给超类(C ++类层次结构)进行处理? 许多OnXXX风格的处理程序确实有办法这样做,但有没有一种机制适用于ON_MESSAGE处理程序? class CDynamicMenuControlEdit : public CEdit { … LRESULT OnSetText(WPARAM wParam, LPARAM lParam); … } BEGIN_MESSAGE_MAP(CDynamicMenuControlEdit, CEdit) … ON_MESSAGE(WM_SETTEXT, OnSetText) … END_MESSAGE_MAP() LRESULT CDynamicMenuControlEdit::OnSetText( WPARAM wParam, // not used; must be zero LPARAM lParam […]

键盘input犹豫时,按住?

有谁知道为什么有一些犹豫,当你按下键盘键,并尝试处理它? 我在我的WinProc(…)中调用了一个函数,当一个键被按下时,这个函数将在屏幕上移动一个图像(OpenGL)。 我按它,得到一个单一的响应,然后大约.5秒没有任何,然后它的行为正常(每WinMain循环移动1像素)。 我想知道是否Windows消息被推迟某种function,因为我需要禁用? 这是我的代码: int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int nshowcmd) { bool quit = false; MSG msg; createWindow(hinstance, SCRW, SCRH, SCRD, WINDOWED); // Main loop while (!quit) { if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) { if (msg.message == WM_QUIT) quit = true; TranslateMessage(&msg); DispatchMessage(&msg); } renderFrame(); // processes graphics SwapBuffers(hdc); […]

PostMessage:访问被拒绝

应用程序将接收来自系统所有进程的消息。 消息使用PostMessage调用发送,它返回一个错误(5,拒绝访问)。 该代码可以在Windows XP SP2上正常工作,但Windows 7应用程序只接收来自其本身的消息,应该从每个应用程序获取消息。 阅读PostMessage的文档,我可以阅读: 当消息被UIPI阻塞时,用GetLastError检索的最后一个错误被设置为5(拒绝访问)。 但实际上并没有说如何解决这个“UIPI”。 我如何?

令人沮丧的处理窗口消息(WM_XX)

我试图让自己使用纯WinAPI的GUI库。 但是我发现处理窗口消息确实令人沮丧。 例如,我可以看到,当我将鼠标移到窗口上时,WM_NCHITTEST将在WM_MOUSEMOVE之前发送给我。 但是,如果我按下左边的button,移动,然后释放左边的button。 之后我只收到WM_MOUSEMOVE。 可能是因为我在调用SetFocus(HWND),SetCapture(HWND)时收到WM_LBUTTONDOWN和ReleaseCapture(HWND)时收到WM_LBUTTONUP 这些不同的行为对我来说似乎是一团糟。 我不知道是否有任何文档/文章解释这些窗口消息的细节。 至less,告诉我应该注意些什么。 (查尔斯的“Programming Windows”对我来说不起作用,因为它只是介绍这些消息的基础,而不是像我提到WM_NCHITTEST / WM_MOUSEMOVE那样告诉我陷阱)

使用消息控制Windows中的写字板

我试图find一个可靠的方式来控制Windows的写字板,我成功地将其embedded到应用程序中作为子窗口。 打印文档之后要执行的一个命令是“打印预览”。 PostMessage似乎是一个很好的工具,但我很努力地find一个没有成功的写字板接受命令的参考,更不用说在WindowsXP机器以及Windows Vista 7和8上运行的命令。 我特别感兴趣的命令列表是: 打印 打印预览 closures而不保存(以比杀死进程更优雅的方式) 有人可以分享一些使用消息控制写字板的提示,或者可能以不同的方式?