NetAutoGUI.Windows/DynamicMenuItem.cs
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using Vanara.PInvoke;
using static Vanara.PInvoke.User32;
namespace NetAutoGUI.Windows;
public class DynamicMenuItem : DynamicObject
{
private HWND hwnd;
private HMENU menu;
private uint menuId;
public DynamicMenuItem(HWND hwnd, HMENU menu, uint menuId)
{
this.hwnd = hwnd;
this.menu = menu;
this.menuId = menuId;
}
public override bool TryGetMember(GetMemberBinder binder, out object? result)
{
DynamicMenuItem? menuItem = MenuHelpers.FindMenuItem(hwnd, menu, binder.Name);
if (menuItem != null)
{
result = menuItem;
return true;
}
return base.TryGetMember(binder, out result);
}
/// <summary>
/// asynchronously click
/// </summary>
public void Click()
{
User32.PostMessage(hwnd, (uint)WindowMessage.WM_COMMAND, new IntPtr(this.menuId), IntPtr.Zero);
}
/// <summary>
/// synchronously click
/// </summary>
public void ClickAndWait()
{
User32.SendMessage(hwnd, (uint)WindowMessage.WM_COMMAND, new IntPtr(this.menuId), IntPtr.Zero);
}
/// <summary>
/// synchronous
/// </summary>
/// <param name="binder"></param>
/// <param name="args"></param>
/// <param name="result"></param>
/// <returns></returns>
public override bool TryInvokeMember(InvokeMemberBinder binder, object?[]? args, out object? result)
{
DynamicMenuItem? menuItem = MenuHelpers.FindMenuItem(hwnd, menu, binder.Name);
if (menuItem != null)
{
result = menuItem;
后面还有 11 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。