- Offizieller Beitrag
Auf WMIC bin ich in diesem Thread gestoßen. Wer ab und an mit WMI gearbeitet hat, wird das Tool (voller Name: Windows Management Instrumentation Console) sicher mögen. Der Zugriff auf die Systemkomponenten ist durch Aliase deutlich verständlicher als bei WMI.
Hier mal noch die wenigen nützlichen Links dazu:
- https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmic
- https://www.cs.cmu.edu/~tgp/scsadmins…MIC_Queries.txt
- http://mcse.xn--krbel-jua.at/links/290/wmi/wmic.htm
- https://xn--apfelbck-s4a.de/wmic-wmi-console/
Ich habe die Informationen mal auf einer Oberfläche zusammengebracht, von der aus auch gleich Befehle ausgeführt werden können. Somit kann man sich Beschreibung und Syntaxinformation ausserhalb der Konsole anzeigen lassen.
Da der "Run" Button als Pushbutton erstellt ist, ist also ein normaler Befehlsstart mit ENTER möglich. Ich lese sowohl Ergebnisse als auch Fehler aus und schreibe sie in die Pseudokonsole.
EDIT:
Unter Windows 10 wurde Syntax nicht erkannt - heißt dort USAGE (Danke an UEZ fürs Finden).
Vertikale Scrollbar für Combos hinzugefügt.
EDIT_2:
Leider ist Windows 10 da nicht konsistent. In anderer Version steht statt USAGE wieder SYNTAX, habe das jetzt nicht über die Build-Version geregelt.
NEU: Fileopendialog um eventuelle Ausgabedatei zu öffnen.
EDIT_3:
Jetzt hats mich gepackt.
NEU:
- optional können Werte aus den ComboBoxen bei Auswahl in die Befehlszeile übernommen werden
- einige Bsp. stehen in einer ComboBox zur Auswahl (Ansicht oder Ausführung) bereit
;-- TIME_STAMP 2021-06-06 13:36:24 v 0.5
#cs
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmic
https://www.cs.cmu.edu/~tgp/scsadmins/winadmin/WMIC_Queries.txt
https://xn--apfelbck-s4a.de/wmic-wmi-console/
http://mcse.xn--krbel-jua.at/links/290/wmi/wmic.htm
Bsp. Dateiausgabe HTML-Format:
WMIC /OUTPUT:processAu3.htm process WHERE "name='autoit3.exe'" GET /FORMAT:htable
#ce
#include <GuiEdit.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Global $aParam[][2] = [ _
['/APPEND' ,'Bestimmt den Ausgabeumleitungsmodus.'], _
['/AGGREGATE' ,'Setzt oder setzt den Aggregatsmodus zurück.'], _
['/AUTHLEVEL' ,'Clientauthentifizierungsebene.'], _
['/AUTHORITY' ,'Gibt den <Autoritätstyp> für die Verbindung an.'], _
['/FAILFAST' ,'Setzt den FailFast-Modus oder setzt ihn zurück.'], _
['/IMPLEVEL' ,'Client-Identitätswechselebene.'], _
['/INTERACTIVE','Setzt oder setzt den interaktiven Modus zurück.'], _
['/LOCALE' ,'Sprachkennung, die der Client verwenden soll.'], _
['/NAMESPACE' ,'Pfad des Namespaces, auf dem der Alias ausgeführt wird.'], _
['/NODE' ,'Server, auf denen der Alias ausgeführt wird.'], _
['/OUTPUT' ,'Bestimmt den Ausgabeumleitungsmodus.'], _
['/PASSWORD' ,'Kennwort für die Sitzungsanmeldung.'], _
['/PRIVILEGES' ,'Aktiviert oder deaktiviert alle Berechtigungen.'], _
['/RECORD' ,'Protokolliert alle Eingabebefehle und die Ausgabe.'], _
['/ROLE' ,'Pfad für die Funktion, die die Aliasdefinitionen enthält.'], _
['/TRACE' ,'Gibt die Debuginformationen nach stderr aus.'], _
['/USER' ,'Benutzer für die Sitzung.']]
;~ /?[:<BRIEF|FULL>] Zeigt die Syntaxinformationen an.
Global $aAliase[][2] = [ _
['ALIAS' , 'Zugriff auf die auf dem lokalen System verfügbaren Aliase'], _
['BASEBOARD' , 'Hauptplatinenverwaltung (auch Motherboard oder Systemkarte genannt).'], _
['BIOS' , 'BIOS-Verwaltung.'], _
['BOOTCONFIG' , 'Startkonfigurationsverwaltung.'], _
['CDROM' , 'CD-Verwaltung.'], _
['COMPUTERSYSTEM' , 'Computersystemverwaltung.'], _
['CPU' , 'CPU-Verwaltung.'], _
['CSPRODUCT' , 'Computersystem-Produktinformationen von SMBIOS.'], _
['DATAFILE' , 'Datendatei-Verwaltung.'], _
['DCOMAPP' , 'DCOM-Anwendungsverwaltung.'], _
['DESKTOP' , 'Benutzerdesktopverwaltung.'], _
['DESKTOPMONITOR' , 'Desktopbildschirmverwaltung.'], _
['DEVICEMEMORYADDRESS', 'Gerätespeicheradress-Verwaltung.'], _
['DISKDRIVE' , 'Verwaltung des physikalischen Laufwerks.'], _
['DISKQUOTA' , 'Datenträgerspeicherplatz-Nutzung für NTFS-Volumes.'], _
['DMACHANNEL' , 'DMA-Kanalverwaltung.'], _
['ENVIRONMENT' , 'Systemumgebungs-Einstellungsverwaltung.'], _
['FSDIR' , 'Dateisystem-Verzeichniseintragsverwaltung.'], _
['GROUP' , 'Gruppenkontenverwaltung.'], _
['IDECONTROLLER' , 'IDE-Controllerverwaltung.'], _
['IRQ' , 'IRQ-Verwaltung.'], _
['JOB' , 'Bietet Zugriff auf mit dem Zeitplandienst geplante Aufträge.'], _
['LOADORDER' , 'Verwaltung von Systemdiensten, die Ausführungsabhängigkeiten definieren.'], _
['LOGICALDISK' , 'Verwaltung des lokalen Speichergeräts.'], _
['LOGON' , 'Anmeldesitzungen.'], _
['MEMCACHE' , 'Cacheverwaltung.'], _
['MEMORYCHIP' , 'Speicherchipinformationen.'], _
['MEMPHYSICAL' , 'Verwaltung des physikalischen Speichers des Computers.'], _
['NETCLIENT' , 'Netzwerkclientverwaltung.'], _
['NETLOGIN' , 'Verwaltung der Netzwerkanmeldeinformationen (eines bestimmten Benutzers).'], _
['NETPROTOCOL' , 'Protokollverwaltung (und die Verwaltung der Protokollnetzwerkeigenschaften).'], _
['NETUSE' , 'Verwaltung der aktiven Netzwerkverbindung.'], _
['NIC' , 'NIC-Verwaltung.'], _
['NICCONFIG' , 'Netzwerkadapterverwaltung.'], _
['NTDOMAIN' , 'NT-Domänenverwaltung.'], _
['NTEVENT' , 'Enträge im NT-Ereignisprotokoll.'], _
['NTEVENTLOG' , 'NT-Ereignisprotokoll-Dateiverwaltung.'], _
['ONBOARDDEVICE' , 'Verwaltung der in der Hauptplatine eingebauten Standardadapter (Systemkarte).'], _
['OS' , 'Verwaltung der installierten Betriebssysteme.'], _
['PAGEFILE' , 'Verwaltung des virtuellen Speichers für den Dateiaustausch.'], _
['PAGEFILESET' , 'Auslagerungsdatei-Einstellungsverwaltung.'], _
['PARTITION' , 'Verwaltung von partitionierten Bereichen des physikalischen Datenträgers.'], _
['PORT' , 'E/A-Anschlussverwaltung.'], _
['PORTCONNECTOR' , 'Verwaltung von physikalischen Verbindungsanschlüssen.'], _
['PRINTER' , 'Druckerverwaltung.'], _
['PRINTERCONFIG' , 'Druckerkonfigurationsverwaltung.'], _
['PRINTJOB' , 'Druckauftragsverwaltung.'], _
['PROCESS' , 'Prozessverwaltung.'], _
['PRODUCT' , 'Installationspaket-Aufgabenverwaltung.'], _
['QFE' , 'QFE (Quick Fix Engineering).'], _
['QUOTASETTING' , 'Setzt Informationen für Datenträgerkontingente auf einem Volume.'], _
['RDACCOUNT' , 'Remotedesktopverbindungs-Berechtigungsverwaltung'], _
['RDNIC' , 'Remotedesktopverbindungs-Verwaltung auf einem bestimmten Netzwerkadapter'], _
['RDPERMISSIONS' , 'Berechtigungen für eine bestimmte Remotedesktopverbindung'], _
['RDTOGGLE' , 'Remotedesktoplistener wird remote ein- und ausgeschaltet.'], _
['RECOVEROS' , 'Informationen, die aus dem Speicher beim Fehlschlagen des Betriebssystems zusammengestellt werden.'], _
['REGISTRY' , 'Computersystemregistrierungsverwaltung.'], _
['SCSICONTROLLER' , 'SCSI-Controllerverwaltung.'], _
['SERVER' , 'Serverinformationsverwaltung.'], _
['SERVICE' , 'Dienstanwendungsverwaltung.'], _
['SHADOWCOPY' , 'Schattenkopieverwaltung.'], _
['SHADOWSTORAGE' , 'Schattenkopiespeicherverwaltung.'], _
['SHARE' , 'Verwaltung von gemeinsam genutzten Ressourcen.'], _
['SOFTWAREELEMENT' , 'Verwaltung der auf dem System installierten Softwareproduktelemente.'], _
['SOFTWAREFEATURE' , 'Verwaltung von Softwareprodukten, die untergeordnete Sätze von "SoftwareElement".'], _
['SOUNDDEV' , 'Audiogeräteverwaltung.'], _
['STARTUP' , 'Verwaltung von Befehlen, die automatisch bei der Benutzeranmeldung am System ausgeführt werden.'], _
['SYSACCOUNT' , 'Systemkontenverwaltung.'], _
['SYSDRIVER' , 'Verwaltung von einem Systemtreiber für einen Basisdienst.'], _
['SYSTEMENCLOSURE' , 'Systemgehäuseverwaltung.'], _
['SYSTEMSLOT' , 'Verwaltung von physikalischen Verbindungspunkten, einschließlich Anschlüssen, Steckplätzen und Peripheriegeräten, und proprietären Verbindungspunkten.'], _
['TAPEDRIVE' , 'Bandlaufwerkverwaltung.'], _
['TEMPERATURE' , 'Datenverwaltung eines Temperatursensors (elektronisches Thermometer).'], _
['TIMEZONE' , 'Zeitzonen-Datenverwaltung.'], _
['UPS' , 'Verwaltung der unterbrechungsfreien Stromversorgung (USV).'], _
['USERACCOUNT' , 'Benutzerkontenverwaltung.'], _
['VOLTAGE' , 'Spannungssensor-Datenverwaltung.'], _
['VOLUME' , 'Verwaltung des lokalen Speichervolumes.'], _
['VOLUMEQUOTASETTING' , 'Assoziiert die Datenträgerkontingentseinstellung auf ein bestimmtes Volume.'], _
['VOLUMEUSERQUOTA' , 'Verwaltung des Speichervolumekontingents je Benutzer.'], _
['WMISET' , 'Verwaltung für die optionalen WMI-Dienstparameter.']]
Global $aGlobal[][2] = [ _
['CLASS' , 'Wechselt zum vollständigen WMI-Schema.'], _
['CONTEXT', 'Zeigt den Status aller globalen Parameter an.'], _
['PATH' , 'Wechselt zu vollständigen WMI-Objektpfaden.' & @CRLF & 'z.B.: "wmic PATH Win32_Processor get loadpercentage"' & @CRLF & 'statt: "wmic cpu get loadpercentage"']]
;~ QUIT/EXIT - Beendet das Programm.
Global $aCmd[][2] = [ _
['CALL' , 'Über CALL können Methoden (Befehle) an Klassenobjekte gesendet werden:' & @CRLF & 'zB: den PC rebooten oder Programme ausführen'], _
['CREATE', 'Meist zum erstellen von Systemvariablen verwendet'], _
['GET' , 'Zeigt alle oder einzelne Eigenschaften einer Klasse an,' & @CRLF & 'z.B.: GET /Value (alle) oder GET Name,SID (nur benannte)'], _
['LIST' , 'Alle oder eine vordefinierte Anzahl von Eigenschaften anzeigen:' & @CRLF & '"LIST Full" (vollständig) bzw. "LIST Brief" (kurz, nicht so flexibel wie GET)'], _
['SET' , 'Einige (nicht alle) Klassen lassen das Ändern von einigen Eigenschaften zu' & @CRLF & '(z.B. Prozesspriorität auf hoch setzen)']]
Global $aSyntaxElements[][2] = [ _
['/EVERY:n' , 'Auftrag alle n Sekunden wiederholen. Funktioniert mit GET & LIST' & @CRLF & 'z.B.: wmic os get FreePhysicalMemory /every:30'], _
['/FORMAT:hform' , 'Ausgabeformat als HTML-Tabelle oder HTML-Report (eigentlich nur sinnvoll mit dem Umleiten in eine Datei (/OUTPUT)'], _
['/FORMAT:htable', 'Ausgabeformat als HTML-Tabelle oder HTML-Report (eigentlich nur sinnvoll mit dem Umleiten in eine Datei (/OUTPUT)'], _
['LIKE' , 'Neben "=" "<" ">" "<>" ein weiterer logischer WHERE-Operator' & @CRLF & 'z.B.: wmic process where "name LIKE ''%xplore%''" call terminate'], _
['WHERE' , "Dient zum Filtern bzw. zum Auswählen einer Instanz" & @CRLF & "z.B.: wmic process where ""name='iexplore.exe'"" call terminate" & @CRLF & 'Anführungszeichen beachten!']]
Global $aTemplate[][2] = [ _
['Output BIOS in Datei' , 'BIOS > myBIOS.txt'], _
['Output BIOS in Clipboard', '/OUTPUT:CLIPBOARD BIOS'], _
['Output OS in Datei' , 'OS >> myOS.txt'], _
['Output Netzwerk' , '/OUTPUT:nicconfig.txt NICCONFIG LIST Brief'], _
['Prozeß AutoIt List Brief', 'PROCESS WHERE "Name=''autoit3.exe''" LIST Brief'], _
['Prozeß AutoIt List Full' , 'PROCESS WHERE "Name=''autoit3.exe''" LIST Full'], _
['Taschenrechner Starten' , 'PROCESS CALL Create "calc.exe"'], _
['Taschenrechner Beenden' , 'PROCESS WHERE Name="calc.exe" CALL Terminate']]
Global $hGui = GUICreate('WMIC - Interface by @BugFix', 1000, 800)
GUISetFont(9, 400, Default, 'Consolas')
GUICtrlCreateGroup('', 10, 10, 980, 70)
GUICtrlCreateLabel('Parameter', 20, 25)
Global $coParam = GUICtrlCreateCombo('', 20, 40, 184, 20, BitOR(0x00200000,0x0003))
GUICtrlCreateLabel('Aliase', 214, 25)
Global $coAliase = GUICtrlCreateCombo('', 214, 40, 184, 20, BitOR(0x00200000,0x0003))
GUICtrlCreateLabel('Global', 408, 25)
Global $coGlobal = GUICtrlCreateCombo('', 408, 40, 184, 20, BitOR(0x00200000,0x0003))
GUICtrlCreateLabel('Befehle', 602, 25)
Global $coCommand = GUICtrlCreateCombo('', 602, 40, 184, 20, BitOR(0x00200000,0x0003))
GUICtrlCreateLabel('Syntaxelemente', 796, 25)
Global $coSyntax = GUICtrlCreateCombo('', 796, 40, 184, 20, BitOR(0x00200000,0x0003))
Global $edHelp = GUICtrlCreateEdit('', 10, 90, 980, 200, BitOR($WS_VSCROLL,$WS_HSCROLL,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetBkColor(-1, 0xFFFFAA)
GUICtrlSetColor(-1, 0x030303)
Global $inWMIC = GUICtrlCreateInput('', 10, 310, 980, 20)
GUICtrlSetColor(-1, 0x000080)
_GUICtrlEdit_SetCueBanner(GUICtrlGetHandle($inWMIC), 'Befehlszeile eingeben (führendes "WMIC" nicht zwingend, wird automatisch ergänzt)', True)
Global $cbInsert = GUICtrlCreateCheckbox(' Wert aus ComboBox bei Auswahl in Befehlszeile übernehmen', 10, 340)
GUICtrlCreateLabel('Beispiele:', 465, 344)
Global $coTemplate = GUICtrlCreateCombo('', 550, 340, 200, 20, BitOR(0x00200000,0x0003))
Global $btOpenFile = GUICtrlCreateButton('Öffne Ergebnisdatei', 760, 340, 160, 24)
Global $btRun = GUICtrlCreateButton('Run', 940, 340, 50, 24, 0x0001)
Global $edWMIC = GUICtrlCreateEdit('Konsole WMIC', 10, 370, 980, 420, BitOR($WS_VSCROLL,$WS_HSCROLL,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetBkColor(-1, 0x001D45)
GUICtrlSetColor(-1, 0xF6F0F3)
Global $aAssign[$coTemplate +1]
$aAssign[$coParam] = $aParam
$aAssign[$coAliase] = $aAliase
$aAssign[$coGlobal] = $aGlobal
$aAssign[$coCommand] = $aCmd
$aAssign[$coSyntax] = $aSyntaxElements
$aAssign[$coTemplate] = $aTemplate
_FillCombo($coParam)
_FillCombo($coAliase)
_FillCombo($coGlobal)
_FillCombo($coCommand)
_FillCombo($coSyntax)
_FillCombo($coTemplate)
GUISetState()
ControlFocus($hGui, '', $inWMIC)
_ShowDescription($coParam)
Global $iMsg, $sPath, $sSelection, $sAdd
While True
$iMsg = GUIGetMsg()
Switch $iMsg
Case -3
Exit
Case $coParam, $coAliase, $coGlobal, $coCommand, $coSyntax
$sSelection = _ShowDescription($iMsg)
$sAdd = $iMsg = $coParam ? ':' : ' '
If BitAND(GUICtrlRead($cbInsert), $GUI_CHECKED) Then
GUICtrlSetData($inWMIC, GUICtrlRead($inWMIC) & $sSelection & $sAdd)
ControlFocus($hGui,'',$inWMIC)
EndIf
Case $coTemplate
$sSelection = GUICtrlRead($coTemplate)
For $i = 0 To UBound($aTemplate) -1
If $aTemplate[$i][0] = $sSelection Then
If BitAND(GUICtrlRead($cbInsert), $GUI_CHECKED) Then
GUICtrlSetData($inWMIC, $aTemplate[$i][1])
Else
GUICtrlSetData($edHelp, 'BEISPIEL "' & $sSelection & '"' & @CRLF & @CRLF & 'WMIC ' & $aTemplate[$i][1])
EndIf
EndIf
Next
Case $btOpenFile
$sPath = FileOpenDialog('Öffnen Ergebnisdatei', @ScriptDir, "All (*.*)")
If Not @error Then ShellExecute($sPath)
Case $btRun
_RunWMIC()
EndSwitch
WEnd
Func _FillCombo($_ID)
Local $sData, $ar = $aAssign[$_ID]
For $i = 0 To UBound($ar) -1
$sData &= $ar[$i][0] & '|'
Next
GUICtrlSetData($_ID, StringTrimRight($sData,1), $ar[0][0])
EndFunc
Func _ShowDescription($_ID)
Local $sTerm = GUICtrlRead($_ID)
Local $bSyntax = True
If $_ID = $coCommand Or $_ID = $coSyntax Then $bSyntax = False
$ar = $aAssign[$_ID]
Local $sDescr, $sSyntax
For $i = 0 To UBound($ar) -1
If $ar[$i][0] = $sTerm Then
$sDescr = $ar[$i][1]
ExitLoop
EndIf
Next
If $bSyntax Then $sSyntax = _WMIC_GetSyntax($sTerm)
GUICtrlSetData($edHelp, '')
GUICtrlSetData($edHelp, $sTerm & @CRLF & $sDescr & ($bSyntax ? @CRLF & @CRLF & 'SYNTAX:' & @CRLF & $sSyntax : ''))
Return $sTerm
EndFunc
Func _RunWMIC()
Local $sCmd = GUICtrlRead($inWMIC)
If $sCmd = '' Then Return
GUICtrlSetData($edWMIC, '')
Local $sConsole = $sCmd
If StringLeft($sConsole, 4) <> 'WMIC' Then $sConsole = 'WMIC ' & $sConsole
$sConsole &= @CRLF & _WMIC_Run($sCmd)
If Not @error Then GUICtrlSetData($inWMIC, '')
GUICtrlSetData($edWMIC, $sConsole)
EndFunc
; Führt eine WMIC Operation aus.
; "WMIC" braucht dem Befehl nicht übergeben werden, wird von der Funktion automatisch komplettiert.
; Mit $_iOutput=1 (Standard) erfolgt die Rückgabe als String.
; ANSI-Werte in der Ausgabe werden konvertiert
Func _WMIC_Run($_sCmd, $_iOutput=1)
If StringLeft($_sCmd, 4) <> 'WMIC' Then $_sCmd = 'WMIC ' & $_sCmd
Local $sRun = StringFormat('%s /c %s', @ComSpec, $_sCmd)
Local $sOut = '', $iPID = Run($sRun, @ScriptDir, @SW_HIDE, BitOR(0x2,0x4))
Local $sLine, $iErr, $aLine, $aRet, $sConsErr
If $_iOutput = 1 Then
Do
$sLine = StdoutRead($iPID)
$iErr = @error
If Not $iErr And $sLine <> '' Then
$aLine = StringRegExp($sLine, '([^\r\n]+)', 3)
For $i = 0 To UBound($aLine) -1
If StringStripWS($aLine[$i], 8) <> '' Then
$sOut &= _OEMtoChar($aLine[$i]) & @CRLF
EndIf
Next
EndIf
Until $iErr
$sConsErr = StderrRead($iPID)
StdioClose($iPID)
Else
While ProcessExists($iPID)
Sleep(350)
WEnd
EndIf
If $sConsErr <> '' Then $sOut = _OEMtoChar($sConsErr)
Return SetError(($sConsErr <> '' ? 1 : 0),0,($_iOutput = 1 ? $sOut : 1))
EndFunc
; Analog zu _WMIC_Run()
; Das Ergebnis wird aber zeilenweise in ein 1D-Array geschrieben.
; Leere Zeilen werden ignoriert.
Func _WMIC_Run_ToArray($_sCmd)
If StringLeft($_sCmd, 4) <> 'WMIC' Then $_sCmd = 'WMIC ' & $_sCmd
Local $sRun = StringFormat('%s /c %s', @ComSpec, $_sCmd)
Local $iPID = Run($sRun, @ScriptDir, @SW_HIDE, BitOR(0x2,0x4))
Local $sLine, $iErr, $aLine, $aRes[500], $iCount = 0, $aRet, $sConsErr, $bErr = False
Do
$sLine = StdoutRead($iPID)
$iErr = @error
If Not $iErr And $sLine <> '' Then
$aLine = StringRegExp($sLine, '([^\r\n]+)', 3)
For $i = 0 To UBound($aLine) -1
If StringStripWS($aLine[$i], 8) <> '' Then
$aRes[$iCount] = _OEMtoChar($aLine[$i])
$iCount += 1
If $iCount = UBound($aRes) Then ReDim $aRes[$iCount+500]
EndIf
Next
EndIf
Until $iErr
$sConsErr = StderrRead($iPID)
StdioClose($iPID)
If $sConsErr <> '' Then
$aRes[0] = _OEMtoChar($sConsErr)
ReDim $aRes[1]
$bErr = True
Else
ReDim $aRes[$iCount]
EndIf
Return SetError(($bErr ? 1 : 0),0,$aRes)
EndFunc
Func _WMIC_GetSyntax($_Term, $_bAsArray=False)
Local $aSyntax = _WMIC_Run_ToArray($_Term & ' /?')
Local $bStart = False, $sSyntax = ''
For $i = 0 To UBound($aSyntax) -1
If Not $bStart And ($aSyntax[$i] <> 'USAGE:' And $aSyntax[$i] <> 'SYNTAX:') Then
ContinueLoop
ElseIf Not $bStart And ($aSyntax[$i] = 'USAGE:' Or $aSyntax[$i] = 'SYNTAX:') Then
$bStart = True
Else
$sSyntax &= $aSyntax[$i] & @CRLF
EndIf
Next
$sSyntax = StringTrimRight($sSyntax,2)
Return ($_bAsArray ? StringSplit($sSyntax, @CRLF, 1+2) : $sSyntax)
EndFunc
Func _OEMtoChar($_sSrc)
Local $iLen = StringLen($_sSrc)
Local $tStr = DllStructCreate('char[' & $iLen & ']')
DllStructSetData($tStr, 1, $_sSrc)
Local $pStr = DllStructGetPtr($tStr)
DllCall('user32', 'bool', 'OemToCharBuffA', 'ptr', $pStr, 'ptr', $pStr, 'dword', $iLen)
Return DllStructGetData($tStr, 1)
EndFunc
Alles anzeigen
Viel Spaß beim Probieren.
Bsp. Ausgabe in Datei (HTML-Format)