コード例 #1
0
ファイル: ProcessHandle.cs プロジェクト: Dekken/buildatron
        public ProcessHandle(ProcessCaller caller)
        {
            this.caller = caller;

            this.cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total" );
            this.ram = new PerformanceCounter("Memory", "Available MBytes", String.Empty );
        }
コード例 #2
0
        void pc_Completed(object sender, EventArgs e)
        {
            ProcessCaller pc = (ProcessCaller)sender;

            Server s = FindServer(pc);

            if (s == null)
            {
                if (MessageReceived != null)
                {
                    MessageReceived(this, new MessageEventArgs(MessageType.Completed, ServerType.None, pc.FileName, "Server Completed"));
                }
                return;
            }

            s.FinishedTime = DateTime.Now.Ticks;
            s.IsRunning    = false;

            if (MessageReceived != null)
            {
                MessageReceived(this, new MessageEventArgs(MessageType.Completed, s.type, s.args, "Server Completed"));
            }
        }
コード例 #3
0
        void pc_Failed(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            ProcessCaller pc = (ProcessCaller)sender;

            Server s = FindServer(pc);

            s.FinishedTime = DateTime.Now.Ticks;
            s.IsRunning    = false;
            s.IsCrashed    = true;

            if (s == null)
            {
                if (MessageReceived != null)
                {
                    MessageReceived(this, new MessageEventArgs(MessageType.Failed, ServerType.None, pc.FileName, e.Exception.Message));
                }
                return;
            }

            if (MessageReceived != null)
            {
                MessageReceived(this, new MessageEventArgs(MessageType.Failed, s.type, s.args, e.Exception.Message));
            }
        }
コード例 #4
0
 private void CommandPrompt_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(VanScript.CMD);
 }
コード例 #5
0
 private void PowershellBtn_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(VanScript.Powershell);
 }
コード例 #6
0
 private void TaskManagerbtn_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpen(VanScript.TaskManager);
 }
コード例 #7
0
 private void OpenExpolerbtn_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(MainForm.ExploerPlusPath + VanScript.ExplorePlus);
 }
コード例 #8
0
 private void OpenCorefigbtn_Click(object sender, EventArgs e)
 {
     logger.Debug("open corefig path:" + MainForm.CorefigPath + VanScript.Corefig);
     ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.Corefig);
 }
コード例 #9
0
 private void corefigToolStripMenuItem_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.Corefig);
 }
コード例 #10
0
 public Server(ProcessCaller pc)
 {
     // TODO: Complete member initialization
     Process = pc;
 }
コード例 #11
0
        private void goButton_Click(object sender, EventArgs e)
        {
            if(!goButton.Enabled)  return;
            goButton.Enabled = false;
            List<ProcessCaller> pcs = new List<ProcessCaller>();

            foreach (DirectoryDataGridViewRow directoryDataGridViewRow in this.operationControlCommandsDataGridView.Rows){

                if (directoryDataGridViewRow.Cells[2] is DataGridViewCheckBoxCell){
                    if (!(bool)((DataGridViewCheckBoxCell)directoryDataGridViewRow.Cells[2]).EditedFormattedValue){
                        continue;
                    }
                }
                ProcessCaller pc = new ProcessCaller("cmd.exe");

                if (directoryDataGridViewRow.Cells[0] is DirectoryDataGridViewTextBoxCell){
                    pc.setDirectory(((DirectoryDataGridViewTextBoxCell)directoryDataGridViewRow.Cells[0]).getDirectory());
                }
                if (directoryDataGridViewRow.Cells[1] is DataGridViewComboBoxCell){

                    pc.setCmd(PreloadedConfigurationGetterService.getInstance().getCommand(this.configFile, ((string)((DataGridViewComboBoxCell)directoryDataGridViewRow.Cells[1]).Value).Trim() ));
                }

                if (directoryDataGridViewRow.Cells[3] is DataGridViewCheckBoxCell){ //display

                    pc.setPrefix((bool)((DataGridViewCheckBoxCell)directoryDataGridViewRow.Cells[3]).EditedFormattedValue ? "/k" : "/c");
                }

                if (directoryDataGridViewRow.Cells[4] is DataGridViewCheckBoxCell){ //autoexit
                    if ((bool)((DataGridViewCheckBoxCell)directoryDataGridViewRow.Cells[4]).EditedFormattedValue){
                        pc.setAutoExit();
                    }
                }
                if (directoryDataGridViewRow.Cells[5] is DataGridViewCheckBoxCell){ //wait for exit
                    if ((bool)((DataGridViewCheckBoxCell)directoryDataGridViewRow.Cells[5]).EditedFormattedValue
                        || !(bool)((DataGridViewCheckBoxCell)directoryDataGridViewRow.Cells[5]).Visible){
                        pc.setWaitForExit();
                    }
                }

                pc.setSpecial("");
                pcs.Add(pc);
                //string text3 = "/c " + directory.ToCharArray()[0] + ": && cd " + directory + " && " + directory;
                //Console.WriteLine(text3);
            }

            //ProcessThreadHandler
            Cursor.Current = Cursors.WaitCursor;
            try{
                ProcessHandle blocker = null;
                foreach (ProcessCaller pc in pcs){
                    if (pc.echo()){
                        cmdTextBox.Text = pc.getCmd();
                    }
                    ProcessHandle ph			= new ProcessHandle(pc);
                    ProcessThreadHandler pht	= new ProcessThreadHandler(ph);

                    Thread handleCommand = new Thread(new ThreadStart(pht.Handle));
                    handleCommand.Start();

                    if(pc.waitForExit()){
                        ph.setBlockedBy(blocker);
                    }

                    blocker = ph;

                    ((UserControlForm)this.Parent).addNewProcessHandleToQueueAndBottom(ph);
                }
            }
            finally { Cursor.Current = Cursors.Default; }
            goButton.Enabled = true;
        }
コード例 #12
0
        void SetupModule(CheckModule moduleName)
        {
            switch (moduleName)
            {
            case CheckModule.EnableRDP:
                ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.RemoteDesktop);
                break;

            case CheckModule.EnableWinRM:
                ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.WINRM);
                break;

            case CheckModule.IPconfig:
                ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.IpSettings);
                break;

            case CheckModule.GPUFeature:
                this.InstallGpuFeature();
                break;

            case CheckModule.HyperVFeature:
            case CheckModule.ClusterFeature:
                MessageBox.Show("After install those feature. You need reboot.");
                ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.Roles);
                break;

            case CheckModule.ISCSiConnection:
                List <ISCSiInfo> info = GetISCSiInfo();
                if (info.Count > 0)
                {
                    iscsiForm = new iSCSIForm(info);
                    iscsiForm.Show(this);
                }
                else
                {
                    ProcessCaller.ProcessOpen(VanScript.IscsiUI);
                }
                break;

            case CheckModule.JoinDomain:
                ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.JoinDomainAndRename);
                break;

            case CheckModule.EnableRemoteControle:
                EnableRemoteControl();
                break;

            case CheckModule.CreateCluster:
                MainForm.clusterForm.Show(this);
                break;

            case CheckModule.CreateVM:
                MainForm.Open59Manager();
                break;

            case CheckModule.CreateVirtualSwitch:
                vSwitchForm = new CreateVirtualSwitchForm();
                vSwitchForm.Show(this);
                break;

            default:
                MessageBox.Show("Not ready");
                break;
            }
        }
コード例 #13
0
 private void UpdateBtn_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(MainForm.CorefigPath + VanScript.WindowsUpdate);
 }
コード例 #14
0
 private void RunIscsiUI_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpen(VanScript.IscsiUI);
 }
コード例 #15
0
 private void ISCSIConnector_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpenByPowershell(VanScript.IscsiUI);
 }
コード例 #16
0
 private void pshvm30btn_Click(object sender, EventArgs e)
 {
     ProcessCaller.ProcessOpen(MainForm.pshvm30 + VanScript.pshvm30);
 }
コード例 #17
0
        private void OpenExcel_CsvFile()
        {
            var proc = new ProcessCaller(this) { FileName = GetExcelFileName() };

            if (proc.FileName.Length == 0)
                return;

            var param = new StringBuilder();
            param.Append(" \"");
            param.Append(textBox_CSV_FilePath.Text);
            param.Append("\"");
            proc.Arguments = param.ToString();
            proc.Start();
        }