So nu ist auch die Win32_BIOS Class mit drin
Habe auch nen kleines Beispiel gepostet
Beschreibung: sie WinWMI.au3 bei der jeweiligen Funktion.
Habe außerdem nen Blog/Feed erstellt, falls es jemanden geben sollte den das ganze interessiert
So nu ist auch die Win32_BIOS Class mit drin
Habe auch nen kleines Beispiel gepostet
Beschreibung: sie WinWMI.au3 bei der jeweiligen Funktion.
Habe außerdem nen Blog/Feed erstellt, falls es jemanden geben sollte den das ganze interessiert
hm... wär eventuell noch ne geniale Sache, wenn man es ähnlich wie die aktuelle Onlinehilfe mit einer Tastencombi in Scite aufrufen könnte
hmm.. ich hab mal das Script für x86 compiliert... nu gehts o0
Merkwürdige Sache... Naja es scheint das es irgendwie mit x64 zusammenhängt.
Sonntag, 16. Mai 2010 um 23:59 Uhr
Nene.. wenn du mal bei Kleinweich in der Klasse schaust siehst du, das die selbst dieses "Problem" kennen/verursacht haben.
habe daheim OpenOffice und wenn ich da z.B. ein 100 Seitiges Dokument drucke, wird anscheinend MaxPages nicht übergeben (bleibt also 0), wodurch das Script nicht funktioniert.
Thx
So habe nun die Win32_UserAccount Class komplett drin
Siehe Post #1
Achso und die Funktionen habe ich kurzerhand nochmal umbenannt... denke so sind sie eindeutiger
Da ich leider noch keine UDF gefunden habe, welche leicht zu handhaben ist (und zusätzlich auch noch beschrieben),
habe ich mich mal dran gemacht :). Ich werde das ganze (immer wenn ich ein bisschen Zeit habe) weiter ergänzen.
Ebenso habe ich eine au3.api Erweiterung erstellt.
Die au3.api befindet sich in AutoIt3\SciTE\api.
Ihr solltet vorher natürlich eine Sicherheitskopie der alten au3.api erstellen.
----------------------------------------------------------------------------------------
Hilfe und Beispiele zu den Funktionen
----------------------------------------------------------------------------------------
Falls sich Jemand noch nie mit der WMI befasst hat, es aber gerne möchte:
http://www.microsoft.com/germany/techne…600682.mspx#EPB
Für Fragen und Anregungen bin ich offen
MfG Daniel
Ich kenne nur AutoIt ;), ganz schick die Verpackung nur das blau ist finde ich ein bisschen grell
Okay da hätte man drauf kommen können das der Count einmal die Liste durchläuft....
Danke hat mir wirklich sehr geholfen
Ich versuch es mal mit der Array2dAdd Geschichte, thx
Hi,
Ich wollte mir die Benutzerangaben in einem 2D Array ausgeben lassen.
An sich funktioniert das Script schon.
Nur möchte ich es optimieren ^^.
Im Moment mache ich zwei WMI aufrufe.
Einmal um die Anzahl der Benutzer und somit die Größe des Arrays festzustellen
Dann noch einmal um die Werte ins Array zu schreiben.
Ich wollte mir den einen Aufruf für die Größe des Arrays sparen. Nur leite funktioniert ein Select count anscheinend nicht und .Count ist auch nicht drin.
Nun wollte ich mal nachfragen, ob jemand da nen Rat für mich hat ;).
Dim Const $wbemFlagReturnImmediately = 0x10
Dim Const $wbemFlagForwardOnly = 0x20
#Include <Array.au3>
$return = _WinWMI_UserAccount_Name()
_ArrayDisplay($return)
Func _WinWMI_UserAccount_Name($Computer = "127.0.0.1")
$WMIConnect = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $Computer & "\root\CIMV2")
If @error Then SetError(1, 0, -1)
$ObjList = $WMIConnect.ExecQuery("SELECT * from Win32_UserAccount", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($ObjList) = 0 Then SetError(1, 0, -2)
$i = 0
For $ObjItem In $ObjList
$i += 1
Local $aReturn[$i][16]
Next
$ObjList = $WMIConnect.ExecQuery("SELECT * from Win32_UserAccount", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($ObjList) = 0 Then SetError(1, 0, -3)
$i = 0
For $ObjItem In $ObjList
With $ObjItem
$aReturn[$i][0] = .AccountType
$aReturn[$i][1] = .Caption
$aReturn[$i][2] = .Description
$aReturn[$i][3] = .Disabled
$aReturn[$i][4] = .Domain
$aReturn[$i][5] = .FullName
$aReturn[$i][6] = .InstallDate
$aReturn[$i][7] = .LocalAccount
$aReturn[$i][8] = .Lockout
$aReturn[$i][9] = .Name
$aReturn[$i][10] = .PasswordChangeable
$aReturn[$i][11] = .PasswordExpires
$aReturn[$i][12] = .PasswordRequired
$aReturn[$i][13] = .SID
$aReturn[$i][14] = .SIDType
$aReturn[$i][15] = .Status
EndWith
$i += 1
Next
Return $aReturn
EndFunc
Danke
Daniel
Habe das mal mit nem Script von mir angepasst
Opt("TrayAutoPause",0)
[/autoit] [autoit][/autoit] [autoit]Dim Const $wbemFlagReturnImmediately = 0x10
Dim Const $wbemFlagForwardOnly = 0x20
Dim $sComputer = "."
$WMIConnect = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
If Not @error Then
While Sleep(100)
$oList = $WMIConnect.ExecQuery("select * from Win32_PrintJob WHERE TotalPages >= 1", 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
For $oItem In $oList
ConsoleWrite("Maximale Seitenanzahl überschritten" & @CRLF & "Job ID: " & $oItem.JobId & @CRLF & "Dokument: " & $oItem.Document & @CRLF & "Drucker: " & $oItem.Name & @CRLF & "Benutzer: " & $oItem.Owner & @CRLF & "Seitenanzahl: " & $oItem.TotalPages & @CRLF)
$oItem.Delete_
Next
WEnd
EndIf
So funktioniert es
Habe es aber nur lokal auf nem PDF Drucker getestet
----------------
Ok es scheint noch ein anderes Problem zu geben, kenne die Ursache aber noch keine Lösung
http://msdn.microsoft.com/en-us/library/aa394370(VS.85).aspx
TotalPages gibt 0 zurück, wenn keine Gesamtanzahl übergeben wird.
Siehe Konsolenausgabe
[Blockierte Grafik: http://xhzytw.bay.livefilestore.com/y1psQVbwgfJhF1…langeLeeren.png]
Das geschieht unglücklicherweise aber bei mehreren Programmen (Notepad, Open Office...), mit der Windows Testseite hat es wunderbar geklappt
Hm wenn du wirklich nur den IE starten möchtest, kannst du es doch auch so machen:
[autoit]Run("iexplore.exe http://www.web.de")
[/autoit]Ich habe mich zwar noch nie wirklich mit BartPE befasst, aber unterm Standard PE ist soweit ich weiß der IE gar nicht drauf installiert. Die Frage ist auch, wie die ie.au3 das ganze aufruft, gibt es z.B. die umgebungsvariable um den IE über die Kommandozeile mit iexplore.exe aufzurufen ?? Windows PE ist immerhin in dem Sinne ja auch keine "vollständige" Windows Distribution, sondern nur zur Vorkonfiguration von Windows gedacht.
Es ist ganz nett für den Anfang
so wäre es aber kürzer gewesen
außerdem hätte ein run("ping.exe "&$ipadresse&" >C:\ping.log") gereicht, damit hättest du dir das unzuverlässige Befehle per Send schicken erspart
GUICreate("", 143, 79, 192, 124)
$Input1 = GUICtrlCreateInput("IP/Computername", 8, 8, 121, 21)
$Button1 = GUICtrlCreateButton("Ping", 8, 40, 123, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$iResult = Ping(GUICtrlRead($Input1))
Switch @error
Case 0
TrayTip("Ping","Der Computer ist online",10)
Case 1
TrayTip("Ping","Der Computer ist offline",10)
Case 2
TrayTip("Ping","Der Computer ist nicht erreichbar",10)
Case 3
TrayTip("Ping","Falsche Adresse",10)
Case 4
TrayTip("Ping","Unbekannter Fehler",10)
EndSwitch
EndSwitch
WEnd
Wozu eine For Schleife?
_GUICtrlListView_AddArray
Wenns kein Array ist schreib die Variablen in ein Array und pack es dann ins Listview
Bei mir flackert es auch nicht (Habe ein Programm mit ~150 Einträgen)
Verbinde das Laufwerk mal mit "net use" eventuell kommt da eine detailliertere Fehlermeldung
Ich persönlich würde auch lieber ne Freigabe als nen FTP nutzen
Verstehe auch nicht wirklich wo das Problem liegt, die Freigabe unter Windows7 ist genauso einfach einzurichten wie unter XP (wohlgemerkt die erweiterte Freigabe... der Assistent war in meinen Augen schon immer der größte Mist ^^)
Wie greifst du denn auf die Freigabe zu ? Erstellst du nen Netzlaufwerk oder gehst du per UNC Pfad drauf?
User mit Administratorrechten =! Administrator
Ausführen als... Administrator sollte Abhilfe schaffen