Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在另一个应用程序中禁用或隐藏按钮_C#_Api - Fatal编程技术网

C# 在另一个应用程序中禁用或隐藏按钮

C# 在另一个应用程序中禁用或隐藏按钮,c#,api,C#,Api,我正在尝试禁用或隐藏另一个应用程序中的按钮 我得到按钮的hndl,但当我调用SendMessage [DllImport("user32.dll", SetLastError = true)] public static extern bool SendMessage(IntPtr hWnd, uint Msg, int wParam, bool lParam); bool x = SendMessage(hndl, TB_HIDEBUTTON, 0, false); 什么都没有发生,

我正在尝试禁用或隐藏另一个应用程序中的按钮

我得到按钮的hndl,但当我调用
SendMessage

[DllImport("user32.dll", SetLastError = true)]
public static extern bool SendMessage(IntPtr hWnd, uint Msg, int wParam,
   bool lParam);

bool x = SendMessage(hndl, TB_HIDEBUTTON, 0, false);

什么都没有发生,x总是返回false。我还尝试了
TB\u delete按钮

您发送了错误的消息。获取按钮的句柄,并调用
enablebown(hndl,FALSE)(或者如果要隐藏它,请尝试
ShowWindow(hndl,SW_hide);

TB_HIDEBUTTON是一条窗口消息,用于隐藏工具栏中的按钮。
如果要执行此操作,代码有问题,必须提供按钮标识作为SendMessage的第三个参数,请转到以供参考。

以下是Internet Explorer 11的示例(从注入iexplore的dll调用):

每个人都说要使用“DestroyWindow”或“EnableWindow”之类的。如果我正确解释“inspect”和“spyxx_amd64”输出,则这些按钮不是窗口

活动:

职能:

但是ImageList_uu函数不能正常工作。就像我所说的“ImageList_Remove”:

但当我把鼠标悬停在按钮上时,按钮仍然可见,尽管看起来坏了。但事实是:

SendMessage(AddressbarRight, TB_DELETEBUTTON, 0, 0);
完全删除图标。永远。此外,如果使用事件,则不需要链接到“comctl32”


删除按钮时要小心!索引减少,因此删除索引0,索引1采用其索引(变为0)。因此,当删除几个按钮时,请从最高索引开始向后移动。

您是如何使其正常工作的?如果我的建议是正确的,那么你能接受我的回答吗?这里只提一件事。除非程序表达了一个API来禁用或隐藏该按钮,否则处理它通常是一个非常糟糕的主意。如果你运气好,程序会正常运行,但如果你运气不好,它可能会崩溃。。。或者更糟。
HIMAGELIST mlist=(HIMAGELIST)::SendMessage(AddressbarRight, TB_GETIMAGELIST, 0, 0);

ImageList_Remove(mlist, 0);
SendMessage(AddressbarRight, TB_DELETEBUTTON, 0, 0);