vixclass.cs//定义开机、关机等函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using VixCOM; namespace dome
{
class vixclass
{
public VixCOM.IVixLib IvixLib;
public ulong m_vixError;
public VixCOM.IHost m_hostHandle;
public VixCOM.IVM m_vmHandle;
// public VixCOM.IJob jobHandle; public vixclass()
{
IvixLib = new VixCOM.VixLibClass();
m_vixError=;
m_hostHandle = null;
m_vmHandle = null;
//jobHandle = null; } public ulong GetError()
{
return m_vixError; } /// <summary>
/// 创建链接
/// </summary>
public bool Connect(string _hostname,string _username, string _password)
{
int hostType = VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_WORKSTATION; int vixVersion = VixCOM.Constants.VIX_API_VERSION;
vixVersion = -; int[] propertyIds = new int[] { VixCOM.Constants.VIX_PROPERTY_JOB_RESULT_HANDLE }; object results = new object(); IJob jobHandle = IvixLib.Connect(vixVersion, hostType, _hostname, , _username, _password, , null, null); //jobHandle = IvixLib.Connect(vixVersion, hostType, hostname, 0, user, password, 0, null, null); m_vixError = jobHandle.Wait(propertyIds, ref results); if (m_vixError == VixCOM.Constants.VIX_OK)
{
object[] objectArray = (object[])results;
m_hostHandle = (VixCOM.IHost)objectArray[];
return true;
} return false;
} /// <summary>
///打开vmxPath的虚拟机
/// </summary> public bool OpenVm(string vmxPath)
{
IJob jobHandle = m_hostHandle.OpenVM(vmxPath, null); int[] propertyIds = new int[] { VixCOM.Constants.VIX_PROPERTY_JOB_RESULT_HANDLE };
object results = new object(); m_vixError = jobHandle.Wait(propertyIds, ref results); if (m_vixError == VixCOM.Constants.VIX_OK)
{
object[] objectArray = (object[])results;
m_vmHandle = (VixCOM.IVM)objectArray[];
return true;
} return false;
} /// <summary>
/// 启动虚拟机
/// </summary>
public bool PowerOn()
{
IJob jobHandle = m_vmHandle.PowerOn(VixCOM.Constants.VIX_VMPOWEROP_LAUNCH_GUI, null, null);
m_vixError = jobHandle.WaitWithoutResults(); if (m_vixError == VixCOM.Constants.VIX_OK)
{
// jobHandle = m_vmHandle.WaitForToolsInGuest(300, null); m_vixError = jobHandle.WaitWithoutResults();
} return (m_vixError == VixCOM.Constants.VIX_OK);
} /// <summary>
/// 关闭虚拟机
/// </summary> public bool PowerOff()
{
IJob jobHandle = m_vmHandle.PowerOff(VixCOM.Constants.VIX_VMPOWEROP_NORMAL, null); m_vixError = jobHandle.WaitWithoutResults(); return (m_vixError == VixCOM.Constants.VIX_OK);
} /// <summary>
/// 重启虚拟机
/// </summary> public bool Restart()
{ IJob jobHandle = m_vmHandle.Reset(VixCOM.Constants.VIX_VMPOWEROP_NORMAL, null); m_vixError = jobHandle.WaitWithoutResults(); return (m_vixError == VixCOM.Constants.VIX_OK); }
}
}

  

Form1.cs//主窗体,

textbox1//记录选择的虚拟机的路径

btnselect//选择路径

btnstart//打开虚拟机

btnclose//关闭虚拟机

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace dome
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btnselect_Click(object sender, EventArgs e)
{
OpenFileDialog loSaveFile = new OpenFileDialog();
loSaveFile.Filter = ".vmx文件(*.vmx)|*.vmx";
if (loSaveFile.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = loSaveFile.FileName;
}
} private void btnstart_Click(object sender, EventArgs e)
{
try
{
vixclass vix = new vixclass();
string vmxpath = textBox1.Text;
vix.Connect(null, "Administrator", null);
vix.OpenVm(@vmxpath);
vix.PowerOn();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString()); } } private void btnclose_Click(object sender, EventArgs e)
{
try
{
vixclass vix = new vixclass();
string vmxpath = textBox1.Text;
vix.Connect(null , "Administrator", null);
vix.OpenVm(@vmxpath);
vix.PowerOff();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
} } private void Form1_Load(object sender, EventArgs e)
{ }
}
}

注:添加引用:VixCOM.DLL

C#窗体实现打开关闭VM虚拟机的更多相关文章

  1. 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务

    windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...

  2. winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

    winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...

  3. WinForm------如何打开子窗体的同时关闭父窗体

    方法: 如何打开子窗体的同时关闭父窗体 this.Hide(); new Frm_Management().ShowDialog(); this.Close();

  4. C#控制台打开VM虚拟机

    添加引用->VixCOM.dll (在vix文件夹下) VixWrapper.cs using System; using System.Collections.Generic; using S ...

  5. VM虚拟机安装苹果雪豹操作系统

    1.win xp虚拟机安装Mac OSX 一.用VM8安装mac os x10.6 ,然后升级到的10.6.8,如何安装vm大家自己百度吧.这里指列出了如何安装雪豹操作系统. DMG是mac os x ...

  6. VM虚拟机扩展硬盘容量

    VM虚拟机扩展硬盘容量 第一步,关闭系统,给虚拟机硬盘增加空间. 第二步,启动系统.查看硬盘大小和分区情况. 第三步,分区. 第四步,格式化分区. 第五步,挂载. 第六步,开机自动挂载. 第一步: 当 ...

  7. [Windows]Win10下VM虚拟机桥接模式无法上网的解决办法

    Win10出来了,赶紧尝尝鲜.既然是预览版,肯定会出现以前没有过的问题.这不,问题马上就来了.我的VM虚拟机本来在Win8.1下使用桥接模式是可以上网的,但是现在不可以了.重置了好几次虚拟网络,NAT ...

  8. VM虚拟机不能上网的问题解决

    VM虚拟机不能上网的问题解决 说在前面的话:很多网友看了我的文章后,虚拟机还是不能上网,就联系我帮忙,结果帮他们给弄好后,都说怪自己太粗心,没有仔细看文章.我不是怕网友麻烦我,我是真诚的希望各位要首先 ...

  9. VM虚拟机安装 常用Linux命令 网卡配置 (第二天)

    VM虚拟机安装:(昨天已经安装好了VM了,按照提示安装就好,很简单) 1.安装centos7虚拟机,现在磁盘里面新建文件夹作为安装文件夹 2.找到centos7的iso文件,打开vm-新建虚拟机-按照 ...

随机推荐

  1. ORACLE RAC+OGG配置

    实验环境主机名   IP地址rac01     192.168.56.10rac02     192.168.56.20rac-scan 192.168.56.30 目标库:ora-ogg  192. ...

  2. MySQL操作详解

    创建并使用数据库 查看服务器上的数据库:SHOW DATABASES; 创建数据库:CREATE DATABASE <数据库名>; 指明使用何数据库:USE <数据库名> 创建 ...

  3. windows Service 之调试过程(附加到进程里调试,而且启动时间不能超过30秒)

    最近第一次用C#写了一个windows service ,其实实现的内容比较简单.就是启动remoting 连接,但是调试相对初次写windws service 的我来说,比较烦.没有经验,而且没办法 ...

  4. Qt浅谈之二:钟表(时分秒针)

    一.简介 QT编写的模拟时钟,demo里的时钟只有时针和分针,在其基础上添加了秒针,构成了一个完整的时钟.能对2D绘图中坐标系统.平移变换(translate).比例变换(scale).旋转变换(ro ...

  5. Google C++测试框架系列入门篇:第三章 基本概念

    上一篇:Google C++测试框架系列入门篇:第二章 开始一个新项目 原始链接:Basic Concepts 词汇表 版本号:v_0.1 基本概念 使用GTest你肯定会接触到断言这个概念.断言是用 ...

  6. EF Power Tool 代码生成器 反向生成

    大致来说,这个工具有这样几个功能: 1) 按照现有数据库结构,生成Code First POCO class.DbContext class和相应的mapping class. 2) 以designe ...

  7. HTML连载7-表单练习

    昨天因为晚上有事情,未更新,但是今天中午发也不晚,因为是同一天只是时间早晚而已,因此今日傍晚还将更新一次,废话不多说. 1.表单的综合练习,我们要创建一个综合的注册页面.运用到我们前面所学的所有知识. ...

  8. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上

    前言 大家好,我最近在想如何提交代码的时候自动的打包 NuGet 然后发布到 AzureDevOps 中的 Artifacts,在这个过程中踩了很多坑,也走了很多弯路,所以这次篇文章就是将我探索的结果 ...

  9. 《linux内核设计与实现》阅读笔记-进程与调度

      一.进程 process: executing program code(text section) data section containing global variables open f ...

  10. 你所忽略的,覆盖equals时需要注意的事项《effective java》

    我们都知道Object的equals的比较其实就是==的比较,其实是内存中的存放地址的比较.正常逻辑上:类的每个实例本质上都是唯一的. 在工作中我们实际的业务逻辑往往有可能出现一些相对特殊的需求需要对 ...