wince c# 创建桌面快捷方式 自动启动 只运行一次 全屏显示

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;

namespace SingleXZ
{
    class FullScreenClass
    {
        public static string CodePath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;//获取当前应用程序完整路径
        public const int SPI_SETWORKAREA = 47;
        public const int SPI_GETWORKAREA = 48;
        public const int SW_HIDE = 0x00;
        public const int SW_SHOW = 0x0001;
        public const int SPIF_UPDATEINIFILE = 0x01;
        public const int WM_CLOSE = 0x10;
        [DllImport("coredll.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindow(string lpWindowName, string lpClassName);
        [DllImport("coredll.dll", EntryPoint = "ShowWindow")]
        private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
        [DllImport("coredll.dll", EntryPoint = "SystemParametersInfo")]
        private static extern int SystemParametersInfo(int uAction, int uParam, ref Rectangle lpvParam, int fuWinIni);
        [DllImport("coredll.dll", EntryPoint = "SystemParametersInfo")]
        private static extern bool IsWindowVisible(IntPtr hwnd);
        [DllImport("coredll.dll", EntryPoint = "PostMessage")]
        public static extern int PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
        [DllImport("coredll.dll", EntryPoint = "CreateMutex", SetLastError = true)]
        public static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, bool InitialOwner, string MutexName);

        [DllImport("coredll.dll", EntryPoint = "ReleaseMutex", SetLastError = true)]
        public static extern bool ReleaseMutex(IntPtr hMutex);

        private const int ERROR_ALREADY_EXISTS = 0183;
        /// <summary>
        /// 设置全屏或取消全屏
        /// </summary>
        /// <param name="fullscreen">true:全屏 false:恢复</param>
        /// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>
        /// <returns>设置结果</returns>
        public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)
        {
            IntPtr Hwnd = FindWindow("HHTaskBar", null);
            if (Hwnd == IntPtr.Zero) return false;
            if (fullscreen)
            {
                ShowWindow(Hwnd, SW_HIDE);
                Rectangle rectFull = Screen.PrimaryScreen.Bounds;
                SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get
                SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//set
            }
            else
            {
                ShowWindow(Hwnd, SW_SHOW);
                SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);
            }
            return true;
        }

        //public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)
        //{
        //    IntPtr Hwnd = FindWindow("HHTaskBar", null);
        //    if (Hwnd == IntPtr.Zero) return false;
        //    if (fullscreen)
        //    {
        //        ShowWindow(Hwnd, SW_HIDE);
        //    }
        //    else
        //    {
        //        ShowWindow(Hwnd, SW_SHOW);
        //    }
        //    return true;
        //}

        public static void KillMessageBox(string sCaption)
        {
            IntPtr ptr = FindWindow(null, sCaption);
            if (ptr != IntPtr.Zero)
                PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
        }

        //程序只能运行一次
        public static bool IsExist()
        {
            string strAppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            IntPtr hMutex = CreateMutex(IntPtr.Zero, true, strAppName);
            if (hMutex == IntPtr.Zero)
                throw new ApplicationException("Failure creating mutex: " + Marshal.GetLastWin32Error().ToString("X"));

            if (Marshal.GetLastWin32Error() == ERROR_ALREADY_EXISTS)
            {
                ReleaseMutex(hMutex);
                return true;
            }
            return false;
        }

        public static void AutoRun()
        {
            using (RegistryKey key = Registry.LocalMachine.OpenSubKey("init", true))
            {
                key.SetValue("Launch70", CodePath);
            }
        }

        public static void DesktopLink()
        {
            string PathGPRSTrue = @"/Windows/Desktop/app.exe.lnk";
            if (!File.Exists(PathGPRSTrue))
            {
                //File.Copy(PathGPRS, PathGPRSTrue, true);
                try
                {

                    string text = (CodePath.Length + 2).ToString() + "#\"" + CodePath + "\"";
                    byte[] buf = new byte[text.Length];
                    buf = System.Text.Encoding.GetEncoding(936).GetBytes(text.Substring(0, text.Length));
                    FileStream fs = new FileStream(PathGPRSTrue, FileMode.CreateNew);
                    fs.Write(buf, 0, buf.Length);
                    fs.Close();
                    fs = null;
                }
                catch (System.Exception ex)
                {

                }
            }
        }
    }
}

  

时间: 2024-09-30 09:50:26

wince c# 创建桌面快捷方式 自动启动 只运行一次 全屏显示的相关文章

ubuntu12.4创建桌面快捷方式(三种方法)

ubuntu12.4创建桌面快捷方式(三种方法) ubuntu12.4 不能在桌面"右键-->创建启动器" ,所以要另寻方法来创建桌面快捷图标. 1.方法一: 在文件系统  /usr/share/applications  存放着ubuntu 自动安装软件的快捷方式: 如:直接右键 "终端"然后复制到桌面: 双击就可以打开,这下不需用快捷键  Ctrl+Alt+T  了: 2.方法二: 鼠标按住图标往桌面拉,同时按住 Alt  键: 拖到桌面的时候会看到有几个

ubuntu创建桌面快捷方式

ubuntu11.04之前的版本,鼠标在桌面右键可以有更方便的创建快捷方式的方法,之后就没有了. 1.创建一个文件,将下面的代码拷贝进去 这里我们只需要关注3个地方,分别为Exec=软件执行文件的路径,Icon=快捷方式图标(如果有的话),Name=快捷方式名称.根据自己软件按转的位置修改代码,保存之后关闭文件.下面以eclipse为例. [Desktop Entry] Categories=Development; Comment[zh_CN]= Comment= Exec=/home/owe

解决Inno Setup制作安装包无法创建桌面快捷方式的问题

转自:http://yedward.net/?id=104 昨天想把个java程序做成exe安装软件,然后就去下载了Inno Setup这个软件安装包制作软件,Inno Setup这个软件确实非常好用,但是由于我下载的中文汉化版,根据向导一步步来就是不创建桌面快捷方式,折腾了很久,终于找到了解决方法. 下面是我使用Inno Setup打包软件后自动生成的一段代码: 1 2 3 [Tasks] Name: "desktopicon"; Description: "{cm:Cre

(转)Inno Setup入门(四)——为程序创建桌面快捷方式

本文转载自:http://blog.csdn.net/augusdi/article/details/8564810 Icons这一可选段定义所有创建在开始菜单和\或其它位置 (比如桌面) 的快捷方式.一个例子如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TEST" AppVersion=1.0 [files] Source: "F:\desktop\ipmsg.exe"

手把手教你在ubuntu下创建桌面快捷方式

习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式,就OK了.对于ubuntu下该怎样创建桌面快捷方式呢?下面以创建eclipse的快捷方式为例,简单介绍一下. 环境: 1)系统版本:Ubuntu 14.04 2)桌面环境:Unity 3)已经下载并解压eclipse(免安装)到/opt目录下 详细步骤: 1)新建文件eclipse.desktop,命令如下: sudo vim /usr/share/applications/ec

多次单击快捷方式,只运行一个程序实例

在应用程序安装之后,单击一次快捷方式,就运行一个程序实例,对于资源独占型程序来说,这样是不可以的,比如该程序使用了当前系统的某个端口,当同样的程序再次运行,再次试图占用同一个端口次,会提示"端口已经被占用的"异常.如此,必须在启动应用程序时,必须判断该程序是否已经有一个实例在运行.下面这个类中先判断该程序的实例有没有在运行,使用线程同步类EventWaitHandle(Boolean, EventResetMode, String)及注册正在等待 WaitHandle 的委托方法Reg

ios 创建桌面快捷方式

iOS上创建桌面快捷方式 应用场景: 在iOS设备桌面创建app内某一个模块或页面的快捷方式,通过该快捷方式可以直接进入相应模块或页面.目前app内有该功能的有高德一键导航,360安全卫士的小火箭. 技术原理: 在iOS开发中可以使用openUrl的方式打开一个网页,并通过Safari浏览器的发送到主屏幕从而创建一个网页的快捷方式,这篇文章就是利用这个方法来创建一个app的桌面快捷方式.首先在app内部开启一个轻量级的HttpServer,利用openurl:127.0.0.1 的方式打开本地页

为eclipse创建桌面快捷方式

为eclipse创建桌面快捷方式 在linux桌面空白处,点击鼠标右键,弹出一个对话框,选择"create Launcher"(中文是"新建启动器"),在"Create Launcher"(中文"创建快捷方式")对话框中选择Application(中文"应用程序"),输入名字:eclipse ,在Command(中文"命令")找到eclipse的启动程序(比如我的是:/opt/eclip

WPF 创建桌面快捷方式

#region 创建桌面快捷方式 string deskTop = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop); string dirPath = System.Environment.CurrentDirectory; string exePath = Assembly.GetExecutingAssembly().Location; System.Diagnostics.FileVers