Для модулей, включая debug, вызываемых в цикле (то есть with_items), будет отображаться значение элемента на каждой итерации. Я не знаю, как это сделать. Если вы хотите, чтобы вы уменьшили свой результат, вы можете попробовать переключиться на использование параметра msg в модуль отладки , который принимает шаблонную строку jinja. Вы можете сделать что-то вроде этого, явно регулируя регулярное выражение, чтобы соответствовать выходу systemctl.
- name: show values
debug: msg="{{ item.stdout_lines | replace_regex('^(.*).service.*Active: (.*).$', \\\1 \\\2) }}"
with_items: out.results
Если вы не хотите использовать функцию replace_regex, вы можете рассмотреть возможность создания собственного фильтра , чтобы форматировать данные так, как вам нравится.
В общем, недоступные для прослушивания книги - это отличное место для отображения информации о статусе, собранной с помощью регистрационных данных, фактов и т. д. Выход в плей-лист больше ориентирован на состояние задачи.
Технически, это возможно. Диалоговое окно оболочки, используемое FolderBrowseDialog, имеет способность возвратить и файлы и папки. К сожалению, та возможность не выставляется в.NET. Даже отражение не может ввести необходимый флаг опции по абсолютному адресу.
, Чтобы заставить его работать, Вы имели бы к P/Invoke SHBrowseForFolder () с флагом BIF_BROWSEINCLUDEFILES включенный в BROWSEINFO.ulFlags (значение = 0x4000). P/Invoke является песчаным, лучше копировать и вставлять код от другой источник или сам класс FolderBrowseDialog со справкой Отражателя.
Это было сделано. Можно использовать FolderBrowserDialogEx - допускающая повторное использование производная встроенного FolderBrowserDialog. Этот позволяет Вам вводить в пути, даже пути UNC. Можно просмотреть для папок или files+folders. Можно просмотреть для компьютеров или принтеров с ним. На основе встроенного FBD, но... лучше. Более гибкий. При нажатии на папку в GUI путь появляется в текстовом поле. Если Вы вводите путь, папка получает activatied. Большому количеству опций встроенное диалоговое окно недостает.
Полный Исходный код. Свободный. Общедоступная MS лицензия.
Код для использования его:
var dlg1 = new Ionic.Utils.FolderBrowserDialogEx();
dlg1.Description = "Select a folder to extract to:";
dlg1.ShowNewFolderButton = true;
dlg1.ShowEditBox = true;
//dlg1.NewStyle = false;
dlg1.SelectedPath = txtExtractDirectory.Text;
dlg1.ShowFullPathInEditBox = true;
dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer;
// Show the FolderBrowserDialog.
DialogResult result = dlg1.ShowDialog();
if (result == DialogResult.OK)
{
txtExtractDirectory.Text = dlg1.SelectedPath;
}
На основе вышеупомянутых подсказок я нашел некоторый рабочий код, который использует стандартное диалоговое окно Браузера Папки в следующем местоположении: http://topic.csdn.net/t/20020703/05/845468.html
Класс для расширенного Диалогового окна Браузера Папки
Imports System
Imports System.Text
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Public Class DirectoryDialog
Public Structure BROWSEINFO
Public hWndOwner As IntPtr
Public pIDLRoot As Integer
Public pszDisplayName As String
Public lpszTitle As String
Public ulFlags As Integer
Public lpfnCallback As Integer
Public lParam As Integer
Public iImage As Integer
End Structure
Const MAX_PATH As Integer = 260
Public Enum BrowseForTypes As Integer
Computers = 4096
Directories = 1
FilesAndDirectories = 16384
FileSystemAncestors = 8
End Enum
Declare Function CoTaskMemFree Lib "ole32" Alias "CoTaskMemFree" (ByVal hMem As IntPtr) As Integer
Declare Function lstrcat Lib "kernel32" Alias "lstrcat" (ByVal lpString1 As String, ByVal lpString2 As String) As IntPtr
Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolder" (ByRef lpbi As BROWSEINFO) As IntPtr
Declare Function SHGetPathFromIDList Lib "shell32" Alias "SHGetPathFromIDList" (ByVal pidList As IntPtr, ByVal lpBuffer As StringBuilder) As Integer
Protected Function RunDialog(ByVal hWndOwner As IntPtr) As Boolean
Dim udtBI As BROWSEINFO = New BROWSEINFO()
Dim lpIDList As IntPtr
Dim hTitle As GCHandle = GCHandle.Alloc(Title, GCHandleType.Pinned)
udtBI.hWndOwner = hWndOwner
udtBI.lpszTitle = Title
udtBI.ulFlags = BrowseFor
Dim buffer As StringBuilder = New StringBuilder(MAX_PATH)
buffer.Length = MAX_PATH
udtBI.pszDisplayName = buffer.ToString()
lpIDList = SHBrowseForFolder(udtBI)
hTitle.Free()
If lpIDList.ToInt64() <> 0 Then
If BrowseFor = BrowseForTypes.Computers Then
m_Selected = udtBI.pszDisplayName.Trim()
Else
Dim path As StringBuilder = New StringBuilder(MAX_PATH)
SHGetPathFromIDList(lpIDList, path)
m_Selected = path.ToString()
End If
CoTaskMemFree(lpIDList)
Else
Return False
End If
Return True
End Function
Public Function ShowDialog() As DialogResult
Return ShowDialog(Nothing)
End Function
Public Function ShowDialog(ByVal owner As IWin32Window) As DialogResult
Dim handle As IntPtr
If Not owner Is Nothing Then
handle = owner.Handle
Else
handle = IntPtr.Zero
End If
If RunDialog(handle) Then
Return DialogResult.OK
Else
Return DialogResult.Cancel
End If
End Function
Public Property Title() As String
Get
Return m_Title
End Get
Set(ByVal Value As String)
If Value Is DBNull.Value Then
Throw New ArgumentNullException()
End If
m_Title = Value
End Set
End Property
Public ReadOnly Property Selected() As String
Get
Return m_Selected
End Get
End Property
Public Property BrowseFor() As BrowseForTypes
Get
Return m_BrowseFor
End Get
Set(ByVal Value As BrowseForTypes)
m_BrowseFor = Value
End Set
End Property
Private m_BrowseFor As BrowseForTypes = BrowseForTypes.Directories
Private m_Title As String = ""
Private m_Selected As String = ""
Public Sub New()
End Sub
End Class
код для реализации расширенного диалогового окна
Sub Button1Click(ByVal sender As Object, ByVal e As EventArgs)
Dim frmd As DirectoryDialog = New DirectoryDialog()
' frmd.BrowseFor = DirectoryDialog.BrowseForTypes.Directories
' frmd.BrowseFor = DirectoryDialog.BrowseForTypes.Computers
frmd.BrowseFor = DirectoryDialog.BrowseForTypes.FilesAndDirectories
frmd.Title = "Select a file or a folder"
If frmd.ShowDialog(Me) = DialogResult.OK Then
MsgBox(frmd.Selected)
End If
End Sub
Все созданные в диалоговых окнах используют оболочку API, которые соответствуют их действию, PrintDialog, OpenFileDialog, SaveFileDialog, и т.д.
необходимо было бы, скорее всего, вручную создать эту функциональность.
AFAIK, нет ничего в платформе.NET, которая делает это из поля.
диалоговые окна файла.NET происходят от CommonDialog:
Наследованные классы требуются, чтобы реализовывать RunDialog путем вызова ShowDialog для создания определенного поля стандартного диалога. Наследованные классы могут переопределить HookProc для реализации определенной функциональности рычага диалогового окна.
Если требуется отобразить только определенные типы файлов, следующий , статья (с исходным кодом в C#) может помочь Вам:
Это также объясняет другие опции, которые доступны для "настройки" диалогового окна FolderBrowser,
Вы можете использовать стандартный OpenFileDialog для выбора папки.