📄 form1.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 + -