⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 在Mobile上用本程序提供的方法可以调用其它可执行文件
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Vicson.Mobile.VMRunExe
{
    public partial class Form1 : Form
    {
        private string sSystemDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());

        public Form1()
        {
            InitializeComponent();
        }

        private void btRun_Click(object sender, EventArgs e)
        {
            try
            {

                //ShellExecute.Start( @"\windows\JBlend_AMS.exe" );
                //ShellExecute.Start(sSystemDir + @"\" + tbName.Text.Trim());
                ShellExecute.Start(sSystemDir + @"\jmm.exe");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        #region 执行外部程序
        public class ShellExecute
        {
            public static void Start(string fileName, string parameters)
            {
                int nSize;
                SHELLEXECUTEEX see;
                IntPtr pFile;
                IntPtr pParams;

                see = new SHELLEXECUTEEX();

                nSize = fileName.Length * 2 + 2;
                pFile = localAlloc(MemoryAllocFlags.LPtr, nSize);
                Marshal.Copy(Encoding.Unicode.GetBytes(fileName), 0, pFile, nSize - 2);

                nSize = parameters.Length * 2 + 2;
                pParams = localAlloc(MemoryAllocFlags.LPtr, nSize);
                Marshal.Copy(Encoding.Unicode.GetBytes(parameters), 0, pParams, nSize - 2);

                see.lpFile = pFile;
                see.lpParameters = pParams;

                ShellExecuteEx(see);

                LocalFree(pFile);
                LocalFree(pParams);
                //return see.hProcess;
            }

            public static void Start(string fileName)
            {
                Start(fileName, "");
            }

            #region localAlloc MemoryAllocFlags

            private static IntPtr localAlloc(MemoryAllocFlags uFlags, int uBytes)
            {
                const int GMEM_FIXED = 0x0000;
                const int LMEM_ZEROINIT = 0x0040;
                const int LPTR = (GMEM_FIXED | LMEM_ZEROINIT);

                IntPtr ptr = LocalAlloc(LPTR, (uint)uBytes);
                if (ptr == IntPtr.Zero)
                    throw new Exception("Out of memory!");
                return ptr;
            }

            private enum MemoryAllocFlags : int
            {
                Fixed = 0x00,
                ZeroInit = 0x40,
                LPtr = ZeroInit | Fixed
            }

            #endregion

            #region APIs
            [DllImport("coredll.dll")]
            private static extern IntPtr LocalAlloc(uint uFlags, uint Bytes);

            [DllImport("coredll")]
            private static extern IntPtr LocalFree(IntPtr hMem);

            [DllImport("coredll")]
            private extern static int ShellExecuteEx(SHELLEXECUTEEX ex);

            private class SHELLEXECUTEEX
            {
                public UInt32 cbSize = 60;
                public UInt32 fMask = 0;
                public IntPtr hwnd = IntPtr.Zero;
                public IntPtr lpVerb = IntPtr.Zero;
                public IntPtr lpFile = IntPtr.Zero;
                public IntPtr lpParameters = IntPtr.Zero;
                public IntPtr lpDirectory = IntPtr.Zero;
                public int nShow = 0;
                public IntPtr hInstApp = IntPtr.Zero;
                public IntPtr lpIDList = IntPtr.Zero;
                public IntPtr lpClass = IntPtr.Zero;
                public IntPtr hkeyClass = IntPtr.Zero;
                public UInt32 dwHotKey = 0;
                public IntPtr hIcon = IntPtr.Zero;
                public IntPtr hProcess = IntPtr.Zero;
            }
            #endregion
        }
        #endregion

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -