精华内容
下载资源
问答
  • Mac如何隐藏程序

    千次阅读 2019-11-12 14:14:36
    那么我们如何隐藏呢? 工具/原料 苹果电脑一台 方法/步骤 1.打开“系统偏好设置”,如图所示 2.找到“程序坞”,进入,如图所示图标 3.进入“程序坞”后,看到如下页面,找到“自动显示与隐藏程序坞”,...

    你们的程序坞会自动隐藏吗?在 macOS 系统中,有一些隐藏功能,这些功能默认未被开启。通过有选择性地开启这些隐藏功能,可以方便我们的对 Mac 的使用。那么我们如何隐藏呢?

    工具/原料

    苹果电脑一台

    方法/步骤

    1.打开“系统偏好设置”,如图所示

    2.找到“程序坞”,进入,如图所示图标

    3.进入“程序坞”后,看到如下页面,找到“自动显示与隐藏程序坞”,勾选上

    4.这时候,我们发现显示的程序坞已经隐藏了

    5.如果我们要调整“程序坞”图标的大小,在如图所示区域,调整大小

    6.退出去后,我们发现需要把光标移动到屏幕底部,程序坞才会弹出来,其余时候都是隐藏的,设置成功

    展开全文
  • 如何隐藏你的程序

    2015-01-29 00:44:52
    手把手帮助教菜鸟如何更好的隐藏自己深爱的程序,而不被那些2B的人找到。
  • Android 如何隐藏应用程序的图标
                   

    如果你的应用需要隐藏图标,那么这篇文章接下来的段落对你可能有所帮助。

     

    在找到本文之前,你也许已经尝试过诸如以下的解决方案:

    1,AndroidManifest.xml文件中在入口Activity的intent-filter里去掉<category android:name=”android.intent.category.LAUNCHER” />,或者将LAUNCHER改为DEFAULT

    2,在程序中加入下面的代码

    显示图片:

    1. PackageManager p = getPackageManager();
    2. p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

    隐藏图标:

    1. PackageManager p = getPackageManager();
    2. p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

    PackageManager.COMPONENT_ENABLED_STATE_ENABLED //显示应用图标

    PackageManager.COMPONENT_ENABLED_STATE_DISABLED //隐藏应用图标

    我用这俩个值来显示和隐藏应用图标有问题,隐藏以后就无法在显示应用图标了,在设置里的所有应用里也找不到了;

    PackageManager.COMPONENT_ENABLED_STATE_DEFAULT //显示应用图标

    PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER  // 隐藏应用图标

    将参数值该成这两个值就没有问题了,建议使用这两个值,

    3,去掉android:icon=”@drawable/ic_launcher”中的资源啊,等等等等。。。

    但是试过了每一种方法之后你都发现起到了作用但是却产生了其他的问题

    这里先一个一个的解释下,

    如果去掉<category android:name=”android.intent.category.LAUNCHER” />,就表示app没有启动入口了,这样子确实是解决了不显示图标的效果,但是那样的话我们的应用也运行不了了。头疼~~~

    第二种 ,我们来看看android developer 上的说明:

    public static final int COMPONENT_ENABLED_STATE_DISABLED

    Flag for setApplicationEnabledSetting(String, int, int) and setComponentEnabledSetting(ComponentName, int, int): This component or application has been explicitly disabled, regardless of what it has specified in its manifest.

    意思是,即使你在manifest中声明了这个component或application,当你设置为COMPONENT_ENABLED_STATE_DISABLED时,他们都是不可用的。也就是说,如果你在MainActivity中这样设置了,那么应用图标不会显示,应用也不会运行。

    那么,这也是不可行的~~~

    第三种就不说了,我觉得是狗急跳墙的做法。

     

    ———————————分割线—————————————

     

    接下来我要说的这种方法可以隐藏图标,同是也可以正常启动运行。

    在manifest的入口activity里面intent-filter中设置<data></data>元素。

    比如:

    <data android:host=”AuthActivity” android:scheme=”com.android.example” />

    注意,android:scheme是大小写敏感的,必须以小写字母开头

    也就是这个MainActivity可以响应Uri为com.android.example://AuthActivity的特定 Intent

    但是为什么加入这个之后app就不显示图标了呢?

    因为我们把app的入口Activity申明为由接收隐士的Intent来启动,这样自然也就不会显示图标了。

    好了,如果需要显示图标的话而且也必须响应上述Uri的话,那么我们可以在该Activity中再加入一个intent-filter标签,将data元素移到新建的标签中。这样应用既可以显示图标又可以响应特定的Uri了。

     

    参考文章:

    http://developer.android.com/guide/topics/manifest/intent-filter-element.html

    http://wikidroid.sinaapp.com/AndroidManifest.xml_data

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧!第一版 将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就...

    群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧!

    第一版

    将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就用最简单的方式,实现隐藏执行。

    demo 执行时,不会显示任何窗体,但是过10秒,会弹出对话框证明程序在运行。

    1. 按照常规思路,在窗体初始化完成之后,调整窗体参数。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    
            //不要显示在任务栏
            this.ShowInTaskbar = false;
            //隐藏窗体
            this.Visible = false;
            //窗体宽度调整为0
            this.Width = 0;
            //窗体高度调整为0
            this.Height = 0;
            //窗体最左边设置成-10000,保证在屏幕外边
            this.Left = -10000;
            //窗体最顶部设置成-10000,保证在屏幕外边
            this.Top = -10000;
        }
    }
    
    1. Form1_Load 方法里新启动一个线程,弹出对话框试试。

    private void Form1_Load(object sender, EventArgs e)
    {
        new Thread(new ThreadStart(() =>
        {
            Thread.Sleep(10 * 1000);
            MessageBox.Show("我在后台执行哟...");
        })).Start();
    }
    

    运行起来发现还是有显示,而且左边和顶边的位置没有设置成功。如图:

    1. 还有一个 opacity,窗体透明度的属性,设置成0。如下:

    this.Opacity = 0;
    
    1. 现在就好了,看不见窗体,达到了隐藏的目的,简单粗暴,但是还凑合实用。

    不足之处:窗体虽然是隐藏了,但只是调整了透明度(心里有点不爽,明明它是存在的,肉眼看不见而已)。

    第二版

    经过第一个 demo,我们简单的实现了一个隐藏运行的应用程序,那么还有什么方式能隐藏执行呢?

    细心的同学发现,这里在 Program.cs 文件 Main 方法中运行了一个 new Form1(),那么有什么办法能不执行这一句,应用程序还能运行呢?

    我们把这一句注释掉,看到 Application 类提供了一个 Run 方法,不带任何参数。我们试着删掉没用的 Form1 这个窗体,把代码改成下面这样执行一下试试。

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    //Application.Run(new Form1());
    Application.Run();
    

    prefect!程序照常可以运行,任务管理器中可以看到 HiddenApp2.exe 这个进程,也不用费心隐藏窗体,何乐不为?

    PS: 某些想法不良的同学,可能想到了隐藏起来干点坏事,记住:法网恢恢、疏而不漏!

    再来改造一下,让他实现上面的功能,10秒后弹出一个对话框,证明程序确实在运行。

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    //Application.Run(new Form1());
    new Thread(new ThreadStart(() =>
    {
        Thread.Sleep(10 * 1000);
        MessageBox.Show("我在后台执行哟...");
    })).Start();
    Application.Run();
    

    代码很简单,就是启动一个线程延迟10秒后弹窗,有的同学可能要问了,为啥 new Thread 不放在 Application.Run() 方法之后?因为 Application.Run() 会使应用程序主进程阻塞执行,所以后面的代码不会执行。

    扩展

    这一节里,我们使用第二步里使用的方法来干一点坏事(PS:我喜欢),做一个 剪切板尾巴

    最终效果:他会在你复制的文本后面缀上设置好的文字,然后放进剪切板。

    迅雷的监视剪切板,就是监视了剪切板中是否有 Html 格式的文本,从中间解析 URL,实现下载。

    winform 使用 Clipboard 这个密封类实现剪切板的一些基本用法,来看下定义:

    namespace System.Windows.Forms
    {
        public sealed class Clipboard
        {
            public static void Clear();
            public static bool ContainsAudio();
            public static bool ContainsData(string format);
            public static bool ContainsFileDropList();
            public static bool ContainsImage();
            public static bool ContainsText(TextDataFormat format);
            public static bool ContainsText();
            public static Stream GetAudioStream();
            public static object GetData(string format);
            public static IDataObject GetDataObject();
            public static StringCollection GetFileDropList();
            public static Image GetImage();
            public static string GetText();
            public static string GetText(TextDataFormat format);
            public static void SetAudio(Stream audioStream);
            public static void SetAudio(byte[] audioBytes);
            public static void SetData(string format, object data);
            public static void SetDataObject(object data);
            public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay);
            public static void SetDataObject(object data, bool copy);
            public static void SetFileDropList(StringCollection filePaths);
            public static void SetImage(Image image);
            public static void SetText(string text);
            public static void SetText(string text, TextDataFormat format);
        }
    }
    
    

    这一节主要是使用 public static string GetText(); 这个方法,来盗取用户剪切的内容,并在其后边追加一个尾巴来恶搞一下。

    原理:使用后台线程,定时的把剪切板内容复制下来,然后追加一些文字,再写回剪切板。废话不多说,直接上核心代码:

    var text = Clipboard.GetText();
    //不要问我为啥不用 String.IsNullOrEmpty(),因为我用的 .Net Framework 3.5
    if (text != null && text.Length > 0)
    {
        if (!text.EndsWith(TAIL))
        {
            Clipboard.SetText(text + TAIL);
            Debug.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] successful catch text【{text}】changed to【{Clipboard.GetText()}】");
        }
    }
    

    代码很短,但是很恶搞。

    有趣的问题,看下面的代码:

    private static void MemoryBomb()
    {
        Clipboard.SetDataObject(new MemoryStream(new byte[1024000000 * 2L]));
        var data = Clipboard.GetDataObject()?.GetData(typeof(MemoryStream));
        var thread = new Thread(new ThreadStart(() =>
        {
            Thread.Sleep(3000);
            //1
            data = null;
            GC.Collect();
            Clipboard.SetDataObject(new MemoryStream(new byte[0]));
            data = Clipboard.GetDataObject()?.GetData(typeof(MemoryStream));
            //2
            data = null;
            GC.Collect();
        }));
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }
    

    看到剪切板 Clipboard.SetDataObject 方法可以接受一个 object 参数,我好奇的弄了一个很大的 byte[] 放了进去,结果发现在 GetData() 方法调用后内存剧增(完全算得上内存炸弹),大小是2倍的 byte[] 大小字节,我又重启一个线程来,再次调用 SetDataObject() 方法设置剪切板内容,发现内存不会释放。

    加了第一个 GC.Collect(); 之后,内存会降一半,我猜想 data 变量被释放,但是剪切板内容没释放,2倍大小的字节应该是 data 变量占用 2G,剪切板占用 2G。如图:

    刚启动
    GC.Collect();

    紧接着执行完毕这段代码之后:

    data = null;
    GC.Collect();
    Clipboard.SetDataObject(new MemoryStream(new byte[0]));
    data = Clipboard.GetDataObject()?.GetData(typeof(MemoryStream));
    

    有趣的是占用的2G内存,不会释放。为什么上面的 GetData 会使内存剧增,而这一句不会使内存变小呢?如图:

    2G

    紧接着执行第二个 GC.Collect(); 执行之后,内存会被回收,但是还是比最初的大了一些,没有完全释放。如图:

    奇思妙想:可以用 Clipboard 申请一些内存,然后在内存中执行一些代码,会不会对系统造成威胁?有能力的大牛可以尝试一下。

    完整代码:

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Threading;
    using System.Windows.Forms;
    
    namespace HiddenApp3
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //MemoryBomb();
                RunClipboardTail();
                Application.Run();
            }
    
            private static void MemoryBomb()
            {
                Clipboard.SetDataObject(new MemoryStream(new byte[1024000000 * 2L]));
                var data = Clipboard.GetDataObject()?.GetData(typeof(MemoryStream));
    
                var thread = new Thread(new ThreadStart(() =>
                {
                    Thread.Sleep(3000);
                    //1
                    data = null;
                    GC.Collect();
                    Clipboard.SetDataObject(new MemoryStream(new byte[1]));
                    data = Clipboard.GetDataObject()?.GetData(typeof(MemoryStream));
                    //2
                    data = null;
                    GC.Collect();
                }));
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
            }
    
            private const string TAIL = "你需要关注《开发者精选资讯》公众号";
            private static void RunClipboardTail()
            {
                var thread = new Thread(new ThreadStart(() =>
                {
                    while (true)
                    {
                        try
                        {
                            var text = Clipboard.GetText();
                            if (text != null && text.Length > 0)
                            {
                                if (!text.EndsWith(TAIL))
                                {
                                    Clipboard.SetText(text + TAIL);
                                    Debug.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] successful catch text【{text}】changed to【{Clipboard.GetText()}】");
                                }
                            }
                        }
                        catch { }
                        Thread.Sleep(10000);
                    }
                }))
                {
                    IsBackground = true
                };
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
            }
        }
    }
    

    github:

    https://github.com/mrhuo/HiddenAppDemo

    推荐阅读:

    开发者精选资讯
     每日为您推荐开发精选资讯

    长按二维码
    关注 「开发者精选资讯」 公众号

    好文章,我在看 ❤️ 

    展开全文
  • VC++ 如何隐藏控制台程序窗口 2010-02-07 10:16:38 分类: C/C++ 大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候...
    VC++ 如何隐藏控制台程序窗口
    2010-02-07 10:16:38
    

    分类: C/C++

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口 .

    因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).

    首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下:
    /subsystem:{console|efi_application|efi_boot_service_driver|
    efi_rom|efi_runtime_driver|native|posix|windows|windowsce}
    [,major[.minor]]

    这个链接选项告诉操作系统如何运行可执行文件

    console:  win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似dos窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序.

    extensible firmware interface 和cpu具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.
    如果对此有兴趣的可以访问intel主页来查看相关内容

    native;设备驱动器选项,如果/driver:wdm选项被设定的话,该链接选项(native)就为默认选项

    posix: 在windows nt 种运行在posix子系统上的应用程序

    windows:该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之
    就是一个标准的win32 application,其入口地址为winmain()函数或者wwinmain()函数的地址
    如果你在应用程序种定义的主函数为winmain或者wwinmain,在默认情况下该应用程序就是一个
    win32 application !

    windowsce:运行在windows ce上的应用程序

    major and minor (optional):主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数
    从上面可以看出如果我们建立一个win32 console application的话,linker的/subsystem选项应该为
    console,可以在vc开发环境的project->setting->link->project option中看到!

    接下来我们再看看应用程序是如何运行的!

    我们知道用vc编写的程序,运行的时候是需要 cc 运行库支持的.当我们运行一个c/c 程序的时候链接器会首先寻找应用程序的启动函数,例如:

    如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式
    /subsystem:console /entry:maincrtstartup (ansi)
    /subsystem:console /entry:wmaincrtstartuup (unicode)

    如果你建立了一个win32 application,编译器得链接开关则会是一下形式
    /subsystem:windows /entry:winmain (ansi)
    /sbusystem:windows /entry:wwinmain (uincode)

    上面的两种形式可以再project->setting->link->project option中看到,上面的subsystem和entry并不需要都设置,如果你只设置了/subsystem:console的话,那么默认的entry开关在默认情况下应为/entry:maincrtstartup.反之,如果你在应用程序中定义了main函数的话,默认情况下,你/subsystem开关应该为/system:console.

    在默认情况下/subsystem 和/entry开关是匹配的,也就是console对应maincrtstartup或者wmaincrtstartup.windows对应winmain或者wwinmain.但是我们也可以通过手动改动的方式使他们不匹配.例如我们可以这样改动

    #pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) // 设置入口地址
    int main(int argc, char* argv[])
    {
        messagebox(null, hello, notice, mb_ok);
    return 0;
    }

    在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找winmain或者wwinmain
    但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!

    上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的
    project->setting->link->project option中手工改动!

    总结如下:
    1:如果console程序已经写好了,不能改了,也可以。写一个API程序,不要画窗口,然后用CreateProcess调用写好的console程序,把属性设成SW_HIDE即可。
    2:不能用控制台来写(CONSLOE),要用WINMAIN做入口就可以了,不画窗口,别人就都看不见了. 你只用想想办法把你的进程在任务栏里面隐藏住就可以.
    3:如果是console程序,用API函数GetStdHandle()获得控制台程序的窗口句柄,然后在隐藏窗口
    4://这一句隐藏控制台
    #pragma   comment(linker,   "/subsystem:\"windows\"   /entry:\"mainCRTStartup\""   )
    你要写控制台程序就用这个.在控制台程序中隐藏控制台窗口!

    展开全文
  • 如何找到后台运行的隐藏程序

    千次阅读 2018-05-30 11:39:23
    如何找到后台运行的隐藏程序 并非所有程序都可见地显示在您计算机的任务栏上。其他程序有意隐藏,因为它们充当有效的后台服务或进程,不需要通过任务栏进行持续访问。一些程序即使在关闭它们之后仍保持打开这是一种...
  • Android如何隐藏应用程序的图标

    千次阅读 2016-10-16 11:48:45
    Android隐藏应用程序的图标
  • xp如何一直隐藏运行的程序Earlier this week we covered the process of rolling back a device driver in XP. One step we can take to help verify the driver we download will work is to use a little known XP...
  • android 如何隐藏应用程序图标

    千次阅读 2014-09-17 19:06:55
    实际开发中遇到这种需求,要求应用安装后隐藏应用程序图标,同时能够正常启动。在manifest的入口activity里面intent-filter中设置<data></data>元素。
  • 简单说:我会隐藏记事本,但不会隐藏记事本的'另存为'窗口,我可以在另存为的窗口显示之后再将其隐藏,但这样很难看,不是我想要的。我希望可以一直让记事本的所有功能都在后台完成。 我做了一个python的例子。 ...
  • //隐藏控制台窗口 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"") int _tmain(int argc, _TCHAR* argv) {  return 0 }
  • 请问如何隐藏应用程序中的软键盘? InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(notes.getWindowToken(), 0);
  • 隐藏标题栏的方法其实非常简单,打开MainActivity,在onCreate()方法中添加如下代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window....
  • ShellExecute( hWnd: HWND; {指定父窗口句柄} ... {指定要打开的文件或程序} Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil} Directory: PChar; {缺省目录} ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,694
精华内容 1,877
关键字:

如何隐藏程序