C#窗体实现打开关闭VM虚拟机
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虚拟机的更多相关文章
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...
- winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体
winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...
- WinForm------如何打开子窗体的同时关闭父窗体
方法: 如何打开子窗体的同时关闭父窗体 this.Hide(); new Frm_Management().ShowDialog(); this.Close();
- C#控制台打开VM虚拟机
添加引用->VixCOM.dll (在vix文件夹下) VixWrapper.cs using System; using System.Collections.Generic; using S ...
- VM虚拟机安装苹果雪豹操作系统
1.win xp虚拟机安装Mac OSX 一.用VM8安装mac os x10.6 ,然后升级到的10.6.8,如何安装vm大家自己百度吧.这里指列出了如何安装雪豹操作系统. DMG是mac os x ...
- VM虚拟机扩展硬盘容量
VM虚拟机扩展硬盘容量 第一步,关闭系统,给虚拟机硬盘增加空间. 第二步,启动系统.查看硬盘大小和分区情况. 第三步,分区. 第四步,格式化分区. 第五步,挂载. 第六步,开机自动挂载. 第一步: 当 ...
- [Windows]Win10下VM虚拟机桥接模式无法上网的解决办法
Win10出来了,赶紧尝尝鲜.既然是预览版,肯定会出现以前没有过的问题.这不,问题马上就来了.我的VM虚拟机本来在Win8.1下使用桥接模式是可以上网的,但是现在不可以了.重置了好几次虚拟网络,NAT ...
- VM虚拟机不能上网的问题解决
VM虚拟机不能上网的问题解决 说在前面的话:很多网友看了我的文章后,虚拟机还是不能上网,就联系我帮忙,结果帮他们给弄好后,都说怪自己太粗心,没有仔细看文章.我不是怕网友麻烦我,我是真诚的希望各位要首先 ...
- VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
VM虚拟机安装:(昨天已经安装好了VM了,按照提示安装就好,很简单) 1.安装centos7虚拟机,现在磁盘里面新建文件夹作为安装文件夹 2.找到centos7的iso文件,打开vm-新建虚拟机-按照 ...
随机推荐
- 硬盘可以支持140万小时(也就是159年)的MTBF(硬盘只是一次性的投入)
1.硬盘的的确确是一个一次性投入: 最普通的家用硬盘寿命都可以到达平均5年以上:企业级的硬盘的寿命更是长的离谱,如这个西数为数据中心提供的硬盘: WD Re:页面上说明该种硬盘可以支持140万小时(也 ...
- Delphi 的RTTI机制浅探3(超长,很不错)
转自:http://blog.sina.com.cn/s/blog_53d1e9210100uke4.html 目录========================================== ...
- _stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l 比较函数
https://msdn.microsoft.com/en-us/library/k59z8dwe.aspx
- 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...
- delphi android 录像(使用了JMediaRecorder,MediaRecorder的使用方法可参考网上java的相关说明)
delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...
- face='Webdings' 的字体对照表
刚才研究动网论坛代码,发现一个页面提示标记 i 感觉很神奇,看了半天才明白原来是一种叫“Webdings”的字体,其实很简单,只需要<font face='webdings' size=&quo ...
- 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站
这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...
- Laravel --- Laravel 5.3 发送邮件配置
版本:laravel 5.3 发送邮箱:QQ邮箱 根据官网以及别人的教程配置邮件发送,并且对配置过程中遇到的坑进行填补,做一总结,留待参考. 一.开启stmp 进入QQ邮箱,设置-服务,开启smtp. ...
- 打包成war包之后如何读取配置文件
今天工作开发中遇到一个问题:在idea运行的项目读取配置文件没有问题,打包成war包之后就会报错java.io.FileNotFoundException: class path resource 原 ...
- Hyperledger Fabric1.4环境搭建过程
简单记录一下fabric版本1.4的环境搭建,运行环境为Ubuntu18.04,其中一些内容是根据官方文档整理的,如有错误欢迎批评指正. 本文只介绍最简单的环境搭建方法,具体的环境搭建解析在这里深入解 ...