程序控制托盘图标行为仅显示通知

程序控制托盘图标行为仅显示通知,第1张

序控制托盘图标行为,仅显示通知,可以通衡肆过以下步骤实现:

1、在程序代码中,要使用新代源手码创建一个托盘图标对象。

2、把设置托盘图标的菜单改为空菜单雹拦嫌,即不显示菜单项。

3、定义通知的标题和内容,并使用这个新代码显示通知。

我的电脑显示使用了windows应用程序控制来阻止此应解决方法如下。

1、需要在电脑桌面的左下角找到菜单按钮,然后用自己的鼠标右击菜单按钮,接着在接下来d出来的下拉菜单中的下方,找到并敬则点击名称为设置按钮。

2、接着需要在电脑Windows设置窗口里右下角,找到并点击名称为更新和安全按钮。

3、然后需要在接下来d出的页面框中选择Windows更新选搜陵项世稿戚,找到并点击其右方的高级选项按钮。

4、最后只需要将自动下载更新关闭即可解决组织使用了WindowsDefender应用程序控制来阻止问题。

目的是为了显示Console.Write()信息以便调试(VS的output窗口是可以显示的,但是,实际情况是,脱离了VS的, 远程调试?forget it!反帆亏正是脱离了啦)

发现,其实win32 是提供了“为进程分配控制台”这样的方法的,这就是:

/// <summary>

/// Allocates a new console for the calling process

/// </summary>

/// <returns>If the function succeeds, return true</returns>

[DllImport("kernel32")]

static extern bool AllocConsole()

调用该方法的进程的标准输入流和输出流都铅盯将默认地与这个方法创建的控制台关联起来,也就是说调用Console.xxx()方法都将是针对这个控制台了槐轿和。

OK,简单地包装一下:

public class ConsoleWindow2

{

public static IntPtr CreateConsole()

{

var console = new ConsoleWindow2()

return console.Hwnd

}

public IntPtr Hwnd { getprivate set}

public ConsoleWindow2()

{

Initialize()

}

public void Initialize()

{

Hwnd = GetConsoleWindow()

// Console app

if (Hwnd != IntPtr.Zero)

{

return

}

// Windows app

AllocConsole()

Hwnd = GetConsoleWindow()

}

#region Win32

[DllImport("kernel32")]

static extern IntPtr GetConsoleWindow()

[DllImport("kernel32")]

static extern bool AllocConsole()

#endregion

}

试验一下:

如果需要更多的控制,可以参考下面这些和控制台相关的API:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12414668.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存