如何使 Xamarin.Mac 应用程序“登录时打开”?

2024-03-17

我有一个 Xamarin.Mac 应用程序需要在登录时自动打开。 如何让我的应用程序获得此设置而无需手动单击它?


我可以给你一个如何以编程方式完成的提示。

对于这种方法,您需要通过以下方式调用本机库DllImport.

以下代码将让您了解如何继续:

//needed library
const string DllName = "/System/Library/Frameworks/ApplicationServices.framework/ApplicationServices";


static LSSharedFileList ()
{
    dllHandle = Dlfcn.dlopen (DllName, 0);

    kLSSharedFileListSessionLoginItems = Dlfcn.GetStringConstant (dllHandle, "kLSSharedFileListSessionLoginItems");
    kLSSharedFileListItemLast = Dlfcn.GetStringConstant (dllHandle, "kLSSharedFileListItemLast");
}


[DllImport(DllName)]
public static extern IntPtr LSSharedFileListCreate (
        IntPtr inAllocator,
        IntPtr inListType,
        IntPtr listOptions);

[DllImport(DllName, CharSet=CharSet.Unicode)]
public static extern void CFRelease (
    IntPtr cf
);


[DllImport(DllName)]
public extern static IntPtr LSSharedFileListInsertItemURL (
    IntPtr inList,
    IntPtr insertAfterThisItem,
    IntPtr inDisplayName,
    IntPtr inIconRef,
    IntPtr inURL,
    IntPtr inPropertiesToSet,
    IntPtr inPropertiesToClear);

这里是实际的片段:

public static void EnableLogInItem ()
{
    IntPtr pFileList = IntPtr.Zero;
    IntPtr pItem = IntPtr.Zero;
    try
    {
        pFileList = LSSharedFileListCreate (
             IntPtr.Zero,
             kLSSharedFileListSessionLoginItems,
             IntPtr.Zero);

        pItem = LSSharedFileListInsertItemURL (
            pFileList,
            kLSSharedFileListItemLast,
            IntPtr.Zero,
            IntPtr.Zero,
            NSBundle.MainBundle.BundleUrl.Handle,
            IntPtr.Zero,
            IntPtr.Zero);

    }
    finally
    {
        CFRelease (pItem);
        CFRelease (pFileList);
    }
}

请记住,这不是完整的解决方案,它只是将应用程序放入登录项列表中的一个片段。当然,您必须处理错误,在每次调用后检查 IntPtr.Zero 等,但这应该让您了解它是如何工作的。

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Xamarin.Mac 应用程序“登录时打开”? 的相关文章

随机推荐

  • 使用 Jquery 首次单击时禁用提交按钮

    我目前有一个附加到提交按钮的灯箱弹出窗口 仅在第一次单击提交按钮时显示 基本上 在有人提交表单之前 我们希望他们在点击提交按钮时看到这个弹出窗口 一切工作正常 但现在我需要将其设置为第一次单击时表单不提交 处理的位置 但是 在第一次单击后
  • 为插入语句生成uuid

    我想像这样生成uuide58ed763 928c 4155 bee9 fdbaaadc15f3当数据插入表中时 CREATE TABLE IF NOT EXISTS bin lists id uuid NOT NULL bin intege
  • 如何将 astro 组件渲染为 HTML 字符串?

    我希望能够在 Astro 中拥有一个动态页面来呈现 Astro 组件 我深入研究了文档和代码 但找不到像下面这样的函数 Astro render 理想情况下 我可以将属性传递给它 我正在寻找类似的东西react renderToString
  • Android 上有哪些角色可用?

    我想在我的 Android 应用程序中显示一些特殊的 Unicode 字符 这些字符未在 droidfonts com 上列出 但它们在模拟器和我的手机上正确显示 但想确定是否所有 Android 平台都支持它们 它记录在某处吗 谢谢 ED
  • 将 Flutter Row 的子级拉伸到最大*自然*高度

    override Widget build BuildContext context return Scaffold appBar AppBar title Text title body ListView children
  • Scrapy 不会抓取所有页面

    这是我的工作代码 from scrapy item import Item Field class Test2Item Item title Field from scrapy http import Request from scrapy
  • 如果 kNN 没有训练阶段,当我们将 .fit() 方法应用于 Scikit-learn 中的 kNN 模型时会发生什么?

    由于 kNN 在 RAM 级别处理训练和预测 并且不需要显式的训练过程 那么当拟合 knn 模型时到底会发生什么 我认为这一步与训练模型有关 谢谢 这是如果我跳过拟合步骤将会得到的错误 NotFittedError This KNeighb
  • 如何在 Spring 中管理对象池?

    据我了解 在 Spring 中 所有对象默认都被视为单例 如果 singleton 设置为 false 则每个请求都会提供一个新对象 但是如果我想池化对象怎么办 假设设置范围从最少 1 到最多 10 个实例 使用 Spring 可以吗 池化
  • 我的 AndroidManifest.xml 中声明的活动的 ActivityNotFoundException

    我有一个启动的 Android 应用程序 大部分时间都运行良好 然而 在大约 1000 多次运行中 有 1 次我收到 android content ActivityNotFoundException 无法找到显式活动类异常 该活动已在我的
  • 将所有“\n”替换为“,”

    我有一个文本区域 我想将其值中的 n 替换为 var valuetxtarr txtarr val var valuetxtarrs valuetxtarr replace n g alert valuetxtarrs 但它不起作用 为什么
  • 是否可以在 PYTHON 的一个命令中对多个字符串使用 .count ?

    我想知道是否可以使用 count 函数对多个字符串进行计数 string abcdefg string count or 当我使用 or 命令时 它只给出 1 个变量的计数 但我想要总数 如何将它组合起来 使其计入 2 个字符串 而不将其拆
  • 自定义 Lint 检查未运行

    我目前正在尝试编写我正在处理的自定义 lint 检查 我创建了一个单独的 java 项目并将其作为 jar 包含在内 我的问题是 无论如何 在分析我的代码库时 似乎我的自定义检查没有运行 我已经包含了一个注册表 class MyIssueR
  • 检测堆栈溢出

    操作系统如何检测用户空间程序的堆栈溢出 然后将 SIGTERM 或 SIGSEGV 发送到这些用户空间程序 防护页 当操作系统为程序创建堆栈时 它将分配比指定的多一点的空间 内存按页分配 通常每页 4KB 并且额外的页将进行设置 以便任何访
  • 从 CGImage 获取像素格式

    我非常了解位图布局和像素格式主题 但在处理通过加载的 png jpeg 图像时遇到问题NSImage 我无法弄清楚我得到的是预期行为还是错误 let nsImage NSImage NSImage byReferencingURL let
  • Pylint 无法与 OS X 上的 Emacs GUI 一起使用;从命令行工作

    从命令行运行时 emacs filename py flymake 和 pylint 完美配合 错误被正确突出显示 尽管我无法通过工具提示悬停来获取错误详细信息 因为它是文本模式 当从 GUI Carbon Emacs 运行时 Flymak
  • 如何防止TouchEvent滚动

    我有一个自定义视图 其中具有触摸事件 滑动等 的功能 现在 这个自定义视图可能会在一个ScrollableLayout 那么问题是 当用户在我的自定义视图内滑动时 父级 可滚动布局 也将处理滑动手势 因此它会滚动 但它不应该滚动 我需要类似
  • 如何一次在目录中的多个文本文件中搜索文本字符串

    我有一个列表框 其中包含一定数量的项目 对于列表框中的每个项目 文件目录中都存在一个相应的文本文件 我需要在每个文本文件 基于列表框中的内容 中搜索人名 每个文本文件可能包含名称 也可能不包含名称 然后我想要返回包含该名称的文本文件 我尝试
  • 检测 powershell 中的注销和登录

    如何使用powershell检测用户是否从windows系统 最好是win7 vista或XP 登录或注销 我想注册每次登录和注销机器的日期和时间 先感谢您 您可以从事件日志中获取此信息 Get EventLog System Source
  • 签署程序集 - 基础知识

    签署集会意味着什么 为什么这样做 最简单的签名方法是什么 snk 文件有什么用 其他两个答案都很好 但还有一点 证书 签名和 强名称 签名很容易混淆 正如 Stefan Steinegger 所说 强名称签名的目的是 让您的客户确定他们认为
  • 如何使 Xamarin.Mac 应用程序“登录时打开”?

    我有一个 Xamarin Mac 应用程序需要在登录时自动打开 如何让我的应用程序获得此设置而无需手动单击它 我可以给你一个如何以编程方式完成的提示 对于这种方法 您需要通过以下方式调用本机库DllImport 以下代码将让您了解如何继续