如何在表单的标题栏中最小化,最大化和关闭按钮旁边绘制自定义按钮?
我知道您需要使用Win32 API调用并覆盖WndProc过程,但我无法找到一个正常的解决方案.
有谁知道如何做到这一点?更具体地说,有没有人知道在Vista中有效的方法?
如何在C#代码中获取WM_NCHITTEST消息的坐标?
我很想获得最快的方式,因为性能是必需的.
我正在尝试用Java编写一个简单的应用程序,它将与USB设备通信.USB设备由我使用Microchip微控制器制造.通信相当简单,因为USB设备来自HID类,所以在计算机和设备之间交换64字节的数组.我的程序根据产品ID和供应商ID查找设备,可以写入和读取64个字节,但现在我想检测设备何时连接或断开与计算机的连接.
正如我在Microchip提供的C#程序中看到的那样,WndProc方法被覆盖并处理WM_DEVICECHANGE消息.我的问题是如何使用JNA在Java中完成,我如何覆盖WindowProc方法并处理消息,如果可能的话:),但我希望它是:D
提前谢谢你的答案.
的Gabor.
我有一种情况,我在表单上处理单击和双击鼠标事件.在这两种情况下都必须加载某些内容,但是当发生双击时,我不希望执行附加到单击事件的代码.
有没有办法拦截鼠标点击并检查是否双重或单一,然后适当地执行正确的事件?
也许通过拦截窗户的WndProc或什么?
Microsoft不建议使用DirectInput进行键盘和鼠标输入.因此,我编写了一个输入管理器类,它使用SetWindowsHookEx挂钩到WndProc和GetMsg.我认为钩子设置得恰当,但它们看起来是各种问题的原因.
我的WndProc和GetMsg挂钩都不会收到实际WndProc正在接收的任何消息.我的输入管理器永远不会收到它需要的WM_INPUT,WM_ BUTTON,WM_MOUSEWHEEL和WM_KEY*消息.
是什么赋予了?
部分标题:
namespace InputManager
{
class CInputManager
{
HWND m_Window;
HHOOK m_WndProcHook;
HHOOK m_GetMessageHook;
static LRESULT CALLBACK WindowsProcedureHookProcedure(int Code, WPARAM WParameter, LPARAM LParameter);
static LRESULT CALLBACK GetMessageHookProcedure(int Code, WPARAM WParameter, LPARAM LParameter);
static LRESULT CALLBACK MessageHandler(HWND Window, UINT Message, WPARAM wParameter, LPARAM lParameter);
};
}
Run Code Online (Sandbox Code Playgroud)
部分来源:
namespace InputManager
{
bool CInputManager::Initialize(HWND Window)
{
m_Window = Window;
// Hook into the sent messages of the target window to intercept input messages.
m_WndProcHook = SetWindowsHookEx(WH_CALLWNDPROC, &(WindowsProcedureHookProcedure), NULL, GetCurrentThreadId()); …Run Code Online (Sandbox Code Playgroud) 虽然网上有一些资源可以解决这个粗略的话题,但我仍然没有找到适合我的答案.
我希望在我的VB.net进程和我的C++进程之间进行完全的通信.我希望能够将一个字符串发送到并从C++的过程,但暂时我需要实现:
将字符串发送到C++进程并进行处理.
这创造了一些我不确定的要点,但我会尽量保持这个简单......
在VB中使用以下函数声明;
Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
ByVal hWnd As IntPtr, _
ByVal Msg As UInteger, _
ByVal wParam As IntPtr, _
ByVal lParam As String _
) As Boolean
Run Code Online (Sandbox Code Playgroud)
并发送这样的消息;
PostMessage(hWnd, SM_PING, Nothing, "schlampe")
Run Code Online (Sandbox Code Playgroud)
使用以下方法声明来捕获C++中的消息;
LRESULT CALLBACK newWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Run Code Online (Sandbox Code Playgroud)
并测试我是否可以使用;
char buffer[50];
sprintf(buffer, "Received: %s", (char *)lParam);
MsgBox(buffer);
Run Code Online (Sandbox Code Playgroud)
我浏览了许多我认为没必要的细节,但是请问并将它给予你.
我的问题是消息 …
我目前正在为Microsoft Outlook开发C#.NET加载项. 加载项的目标是从Outlook即时搜索中捕获搜索输入,并在自定义窗格中显示我自己的搜索结果.
它运行得很好,并且通过使用本机窗口将Outlook窗口子类化,我得到了搜索字符串,它已经将它传递到我的面板中.
现在的问题是,当您关闭加载项时(通过" 文件 - >选项 - >加载项 - > COM加载项 ",而不是窗格中的X),加载项立即终止我不能searchboxWindow.ReleaseHandle()事先打电话 来恢复我的WndProc链.Outlook只是崩溃而没有任何明显的错误.
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch ((uint)m.Msg)
{
case WindowMessages.WM_DESTROY:
case WindowMessages.WM_QUIT:
case WindowMessages.WM_NCDESTROY:
this.ReleaseHandle();
return;
case WindowMessages.WM_KEYUP:
case WindowMessages.WM_LBUTTONDOWN:
case WindowMessages.WM_RBUTTONDOWN:
OnKeyUp();
break;
case WindowMessages.WM_EXITSIZEMOVE:
OnResize();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试收听一些应该在加载项关闭时调用的窗口消息,但这些消息仅在我以正常方式关闭Outlook时出现.
此外,主外接源文件中的事件,如AppDomain.CurrentDomain.ProcessExit,this.Shutdown或((Outlook.ApplicationEvents_10_Event)this.Application).Quit不会被调用.
当加载项终止时,我可以听到什么事件(可靠地)被触发?有一些吗?如果没有,我有什么替代方案来解决我的问题?
在我的Win32应用程序中,子窗口由第三方SDK创建.窗口创建过程是透明的,我无法将WndProc方法与子窗口关联.我希望能够在父窗口中捕获子窗口消息.我怎样才能做到这一点?任何帮助将受到高度赞赏.
制作一个简单的应用程序,因此当用户退出Windows时,它当然会关闭应用程序.我们正在制作一个简单的USB警报应用程序,如果在用户注销时检测到USB,STOPS将关闭
到目前为止这是代码.
public Form1()
{
InitializeComponent();
}
private static int WM_QUERYENDSESSION = 0x11;
private static bool systemShutdown = false;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
//MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot");
systemShutdown = true;
m.Result = (IntPtr)0;
}
// If this is WM_QUERYENDSESSION, the closing event should be
// raised in the base WndProc.
m.Result = (IntPtr)0;
base.WndProc(ref m);
} //WndProc
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (systemShutdown)
{
systemShutdown …Run Code Online (Sandbox Code Playgroud) 我正在调试wpf中的拖动错误并订阅了wndproc.我的消息ID为49619,wparam = 0,lparam = 0.我已经筋疲力尽了谷歌的努力,并且无法揭开这个窗口消息的名称.
如果你知道,那很好.如果您可以在其窗口消息列表中提供包含它的网站,那就更好了.
十六进制值= 0xC1D3
wndproc ×10
c# ×4
winapi ×3
winforms ×3
vb.net ×2
c++ ×1
childwindow ×1
hook ×1
java ×1
jna ×1
messages ×1
mfc ×1
mouseevent ×1
nativewindow ×1
outlook ×1
param ×1
parent-child ×1
titlebar ×1
windows ×1