【问题标题】:User32 Windows UI Api on Universal Windows Platform通用 Windows 平台上的 User32 Windows UI Api
【发布时间】:2018-09-30 13:53:35
【问题描述】:

我在 UWP 编程方面没有太多经验,并且我构建了一个应用程序在蓝牙上做一些事情。现在我必须通过 API 传递一些信息。但不知何故“SendMessage”不起作用。这是我正在使用的代码

public static class ApiComm
{
    [DllImport("User32.dll")]
    public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

    [DllImport("User32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, int lParam);

    public static string DelphiFormClassName = "TFrmMain";//"wsdk_delphi_api_test";
    public static string DelphiFormCaptionName = "Deneme";

    private static IntPtr FindDelphiForm(string delphiFormClassName, string delphiFormCaptionName)
    {
        return FindWindow(delphiFormClassName, delphiFormCaptionName);
    }
    private static IntPtr FindDelphiForm()
    {
        return FindDelphiForm(DelphiFormClassName, DelphiFormCaptionName);
    }

    public static int TextToID(string text)
    {
        int mu = (text == null ? 0 : text.Length);
        int result = 0;
        for (int i = 0; i < mu; i++)
            result = result + (((i + 1) * 256) + (byte)(text[i]));

        return result;
    }

    private const int WM_COMMAND = 0x0111;
    private const int StartFrom = 500;

    private static int EventID(RemoteDeviceUpdate anEvent)
    {
        return StartFrom + (int)anEvent;
    }

    public static void SendInfo(int remoteID, RemoteDeviceUpdate anEvent)
    {
        IntPtr wP = FindDelphiForm();
        if (wP != null && wP != IntPtr.Zero)
        {
            int eID = EventID(anEvent);
            SendMessage(wP, WM_COMMAND, eID, remoteID);
        }
    }
    public static void SendInfo(string remoteID, RemoteDeviceUpdate anEvent)
    {
        SendInfo(TextToID(remoteID), anEvent);
    }
}

当我尝试将 SendInfo 用于另一个 .net 项目时,它工作得很好,但在 UWP 中却没有(而且它也没有给出任何错误)

我必须在我的项目中添加包或其他东西吗..

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: api uwp


    【解决方案1】:

    派生自此case,您需要检查 API 是否可用于 Windows 运行时应用。

    应用可以调用与应用包一起部署的 DLL。 DLL 将在应用程序的上下文中运行,并具有与应用程序本身相同的 API 访问权限。有关可用于 Windows 运行时应用的 Win32 API 的概述,请参阅 Win32 和 COM API。

    如果您只是想构建一个应用程序,请在蓝牙上做一些事情。你可以用 uwp 做这一切 蓝牙接口。这是official document。对于RFFCOMM,这是您可以参考的 uwp code sample

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 2016-01-10
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2021-09-28
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多