コード例 #1
0
        private void SendMessage(object sender, EventArgs e)
        {
            var session = new PuzzelLibrary.Terminal.Explorer().FindSession(new PuzzelLibrary.Terminal.Explorer().GetRemoteServer(hostName), selectedSessionID);

            session.MessageBox(richTextBoxContents.Text, textBoxTitleValue.Text);
            this.Close();
        }
コード例 #2
0
ファイル: ExplorerForm.cs プロジェクト: lewsa17/Puzzel
        public void GetSessionsToDataGridView()
        {
            try
            {
                if (DataGridView != null)
                {
                    DataGridView.Rows.Clear();
                }

                var Server   = new PuzzelLibrary.Terminal.Explorer().GetRemoteServer(HostName);
                var sessions = new PuzzelLibrary.Terminal.Explorer().FindSessions(Server);
                foreach (ITerminalServicesSession session in sessions)
                {
                    if (session.UserAccount != null)
                    {
                        DataGridView.BeginInvoke(new Action(() =>
                                                            DataGridView.Rows.Add(
                                                                session.Server.ServerName,
                                                                session.UserName,
                                                                session.WindowStationName,
                                                                session.SessionId,
                                                                session.ConnectionState,
                                                                session.IdleTime,
                                                                session.LoginTime)));
                    }
                }
                labelSessionCount.BeginInvoke(new Action(() => labelSessionCount.Text = "Aktywne sesje: " + DataGridView.RowCount));
            }
            catch (Win32Exception)
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                }, "Brak dostępu", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
コード例 #3
0
ファイル: ExplorerForm.cs プロジェクト: lewsa17/Puzzel
        private void ContextMenus(object sender, EventArgs e)
        {
            int          selectedSessionID = 0;
            DataGridView datagridview      = null;
            int          selectedRowIndex  = 0;

            if (tabControl.SelectedTab.Name != "dynaStatusTab")
            {
                var tabpage = tabControl.SelectedTab;
                datagridview      = (DataGridView)tabpage.Controls.Find("DataGridView", true)[0];
                selectedRowIndex  = datagridview.SelectedRows[0].Index;
                selectedSessionID = Convert.ToInt16(datagridview.Rows[selectedRowIndex].Cells[3].Value);
            }
            else
            {
                selectedSessionID = Convert.ToInt16(IDSessionLabel.Text);
            }

            try
            {
                using (ITerminalServer server = new PuzzelLibrary.Terminal.Explorer().GetRemoteServer(HostName))
                {
                    server.Open();
                    ITerminalServicesSession session = server.GetSession(selectedSessionID);
                    if (sender is ToolStripMenuItem)
                    {
                        switch (((ToolStripMenuItem)sender).Name)
                        {
                        case nameof(menuItemSessionDisconnect):
                        {
                            session.Disconnect();
                            MessageBox.Show(new Form()
                                {
                                    TopMost = true
                                }, "Sesja została rozłączona", "Rozłączanie sesji", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            BtnRefresh_Click(sender, e);
                            break;
                        }

                        case nameof(menuItemSessionSendMessage):
                        {
                            using (var terms = new ExplorerFormSendMessage(HostName, selectedSessionID))
                            {
                                terms.ShowDialog();
                                MessageBox.Show("Wiadomość wysłano", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            break;
                        }

                        case nameof(menuItemSessionRemoteControl):
                        {
                            var    ADCompResult      = PuzzelLibrary.AD.Computer.Search.ByComputerName(HostName, "operatingSystemVersion");
                            var    osVersionComplete = ADCompResult[0].GetDirectoryEntry().Properties["operatingSystemVersion"].Value.ToString().Split(" ");
                            double osVersion         = Convert.ToDouble(osVersionComplete[0].Replace('.', ','));
                            if (osVersion > 6.1)
                            {
                                PuzzelLibrary.ProcessExecutable.ProcExec.StartSimpleProcess("mstsc.exe", "/v:" + HostName + " /shadow:" + selectedSessionID + " /control /NoConsentPrompt");
                            }
                            else
                            {
                                PuzzelLibrary.Terminal.TerminalExplorer Term = new PuzzelLibrary.Terminal.TerminalExplorer();
                                Term.ConnectToSession(HostName, selectedSessionID);
                            }
                            break;
                        }

                        case nameof(menuItemSessionLogoff):
                        {
                            session.Logoff();
                            MessageBox.Show(new Form()
                                {
                                    TopMost = true
                                }, "Sesja została wylogowana", "Wylogowywanie sesji", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            BtnRefresh_Click(sender, e);
                            break;
                        }

                        case nameof(menuItemSessionStatus):
                        {
                            DynaStatusTab(session, selectedSessionID);
                            break;
                        }

                        case nameof(menuItemSessionProcesses):
                        {
                            DynaProcessTab(server, session, selectedSessionID);
                            break;
                        }

                        case "KillProcess":
                        {
                            var processId = Convert.ToInt16(datagridview.Rows[selectedRowIndex].Cells[4].Value);
                            var process   = server.GetProcess(processId);
                            process.Kill();
                            RefreshProcesses(sender, server, session, selectedSessionID);
                            MessageBox.Show("Zabito aplikację");
                            break;
                        }
                        }
                    }
                    else
                    {
                        switch (((Button)sender).Name)
                        {
                        case nameof(btnRefreshNow):
                        {
                            if (tabControl.SelectedTab.Name == "dynaProcesTab")
                            {
                                RefreshProcesses(sender, server, session, selectedSessionID);
                                break;
                            }

                            if (tabControl.SelectedTab.Name == "dynaStatusTab")
                            {
                                RefreshStatus(session, selectedSessionID);
                                break;
                            }
                            break;
                        }
                        }
                    }

                    server.Close();
                }
            }
            catch (Exception ex)
            {
                PuzzelLibrary.Debug.LogsCollector.GetLogs(ex, HostName);
            }
        }