jjzjj

java - 用 JNA 替换 WndProc 失败并出现异常

我尝试使用JNA注入(inject)我自己的WndProc方法来捕获Java程序中的Windows消息。由于我只对几种消息类型感兴趣,因此我必须将消息转发到之前的WndProc。在我的测试中(Java1.7.0_03,64位,在Windows7上),一旦我将鼠标移到创建的窗口上,此转发似乎就会失败,并出现以下异常:com.sun.jna.LastErrorException:[2]Thesystemcannotfindthefilespecified.atcom.sun.jna.Native.invokeLong(NativeMethod)atcom.sun.jna.Function.

windows - 将 Win32 API WndProc Key 消息从一个窗口传输到另一个窗口

我正在使用C++为WindowsMobile开发,但我遇到了一个问题-我添加了我的窗口类,在其中我使用WndProc实现进行键盘输入。问题是我得到了错误的代码,并且错误地识别了诸如func键之类的键,更糟糕的是,我得到的值(WM_KEYDOWN的wParam>消息)作为我在这里测试的两部手机之间的不同值-谁知道其他手机会发生什么。在玩了很久之后,我发现如果我只从预定义的“EDIT”类,我实际上确实得到了正确的输入(就字母/键而言)。所以问题一定不是出在手机上,而是出在接收消息的方式上(win32有点小白,知识匮乏请见谅)。我尝试使用输入模式,但使用EM_NUMBERS等向我的窗口发送消

c++ - 来自 HWND 引用的关闭回调或 WM_CLOSE

我正在调用HtmlHelpAwinapi方法来显示我的应用程序的.chm。此方法立即返回一个HWND,并且帮助窗口显示为一个单独的窗口。除了窗口,我还为这个hwnd设置了一个计时器。我的问题是我需要知道此窗口何时关闭以终止计时器。我的第一个方法是尝试注册WndProc回调,但我不能这样做,因为我没有创建窗口,我只有对hwnd的引用。然后我尝试使用Hook(SetWindowsHookEx),但HOOKPROC不会将HWND作为参数传递给回调。此外,我需要知道这个hwnd的线程。有什么方法可以在HWND关闭或让WndProc等待WM_CLOSE消息时注册回调?

c# - RegisterPowerSettingsNotification C# pinvoke

我正在尝试检测笔记本电脑盖子何时打开和关闭,应该非常简单。我似乎可以正确注册该事件,但是当我关闭笔记本电脑窗口时我没有收到通知。这是DLL导入(动态链接库代码:http://www.pinvoke.net/default.aspx/user32/registerpowersettingnotification.html)(GUID_LIDCLOSE_ACTION:http://social.msdn.microsoft.com/Forums/en-US/tabletandtouch/thread/0bbf90be-9322-47fb-bfa4-016b57211b3a)[DllImpo

C++ Windows : LRESULT CALLBACK and WNDPROC

我有一个类:classSomeClass{public:voidInit();private:LRESULTCALLBACKWndProc(HWNDwnd,UINTmsg,WPARAMwparam,LPARAMlparam);};此外,在另一个文件中我有一个函数:voidMakeWindow(WNDPROCwnd_proc,DWORDstyle,HICONlg_icon,...);第一个参数应该将LRESULTCALLBACK函数作为输入。在某处我也有Init函数的定义:voidSomeClass::Init(){MakeWindow(this->WndProc,WM_POPUP,NU

windows - OpenGL -> wglCreateContext,WndProc 的 WM_CREATE 中的 wglMakeCurrent 使渲染失败

操作系统:Windows7,64位VisualStudio2010,调试,32位我正在尝试一个简单的Windows程序来开始使用openGL:所有程序应该做的就是用glClear(GL_COLOR_BUFFER_BIT)清除颜色缓冲区。在我在网上找到的教程中,我发现人们在创建窗口期间(因此在处理WM_CREATE消息期间)创建和设置openGL上下文。不知何故,我发现这对我的代码不起作用,而且我似乎无法弄清楚。所以,如果有人能指出我正确的方向。请在下文中找到我期望它如何根据教程工作的代码:#include#include#include#include"Application.h"HW

c++ - 在 Windows 7 64 位中未收到 WM_WTSSESSION_CHANGE

我一直在编写一个DLL,并试图获得有关用户锁定屏幕的通知。我发现WM_WTSSESSION_CHANGE将适合我的需要,但我无法在我的图书馆中阅读此消息,此外,当我用spyxx.exe监视应用程序时我可以看到WM_WTSSESSION_CHANGE消息已发布。任何人都可以看看并说出我做错了什么吗?一些基本list:设置WndProc回调:HHOOKhook=SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)__monitor,hInstance,GetCurrentThreadId());注册事件通知:WTSRegisterSessionNotific

c++ - Windows 消息异常

可能只是某种粗略的疏忽,但我在消息循环中没有收到任何WM_SIZE消息。但是,我确实在WndProc中收到了它们。我认为Windows循环将消息发送给WndProc?LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){switch(message){//thismessageisreadwhenthewindowisclosedcaseWM_DESTROY:{//closetheapplicationentirelyPostQuitMessage(0);return0;}break;caseWM_

c++ - 获取 Windows 句柄的 WNDPROC

是否存在任何Windowsapi函数来检索Windows句柄的WNDPROC?提前致谢。 最佳答案 使用GetWindowLongPtr(hwnd,GWLP_WNDPROC)。警告:对于32位系统,GetWindowLongPtr实际上是#defined到GetWindowLong,因此为了将它导入Delphi,您可能需要改用GetWindowLong。同样,GetWindowLongPtr本身是#defined到GetWindowLongPtrA或GetWindowLongPtrW(对于非unicode和unicode目标),因此

windows - 查找 WndProc 地址

如何找到WndProc的地址(另一个进程的窗口)。即使我注入(inject)一个DLL并尝试使用GetClassInfoEx()或GetWindowLong()或GetWindowLongPtr()找到它,我总是得到类似0xffff08ed的值,这绝对不是可执行地址。根据MSDN:“...窗口过程的地址,或表示窗口过程地址的句柄。”不幸的是,这对我来说不够好,我需要实际地址。Spy++大部分时间都能正确完成工作(但有时也会失败)。所以应该是可以的。谢谢。[编辑:]感谢ChrisBecke为我的小问题提供了超快、正确的解决方案! 最佳答案