Hier mal eine Version von mir...
Danke für die Mühe, da blicke ich erst einmal gar nicht durch
Hier mal eine Version von mir...
Danke für die Mühe, da blicke ich erst einmal gar nicht durch
Vielen herzlichen Dank an alle!
Ich komme darauf zeitnah zurück Musashi
Für heute mache ich hier Schluss, euch einen schönen Abend !
Ich habe die Zeile nun entfernt, ich kann kompilieren und das Script ausführen. Aber erhalte noch diese Meldung beim Kompilieren. Musashi
ZitatAlles anzeigen+>20:06:01 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0 Keyboard:00000407 OS:WIN_10/ CPU:X64 OS:X64 Environment(Language:0407) CodePage:0 utf8.auto.check:4
+> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\Lenovo\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Lenovo\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.14.2) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(186,77) : warning: $getModelName: possibly used before declaration.
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $getModelName &
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(234,36) : warning: $getSerial: possibly used before declaration.
$serial = StringStripWS($getSerial,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3 - 0 error(s), 2 warning(s)
->20:06:02 AU3Check ended. Press F4 to jump to next error.rc:1
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\aut2exe\aut2exe.exe /in "C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3" /out "C:\Users\Lenovo\AppData\Local\AutoIt v3\Aut2exe\~AU7D9E.tmp.exe" /nopack /icon "G:\WTP\finaltest\redicon.ico" /comp 2
+>20:06:04 Aut2exe.exe ended.C:\Users\Lenovo\AppData\Local\AutoIt v3\Aut2exe\~AU7D9E.tmp.exe. rc:0
+>20:06:04 Created program:C:\Users\Lenovo\Documents\ISN AutoIt Studio\Release\Final Test Tools v3\FinalTestToolsv3.exe
+>20:06:05 AutoIt3Wrapper Finished.
Ich habe in einem Beitrag alles gepostet, allerdings via Pastebin, da es zu viele Zeichen verursacht:
hauptscript: https://pastebin.com/7F18WgYi
functions datei: https://pastebin.com/m93mxXRD
gui: https://pastebin.com/mpGtxGPW
Ich werde die besagte Zeile mal entfernen. Danke für die Info.
Ok, super und ja, es hilft enorm um es etwas zu verstehen.
Kannst du mir auch sagen wie und wo ich alle anderen Variablen nun mit "Dim, Local oder Global" setzen muss?
Wo muss ich z.B "Dim $getModelName" einfügen, damit der der Fehler (und weitere) nicht mehr auftauchen:
Zitat"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(186,77) : warning: $getModelName: possibly used before declaration.
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $getModelName &
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Oder dieser
Zitat"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(10,64) : warning: $ftt_gui possibly not declared/created yet
$ftt_gui = GUICreate("Final Test Tools v3",517,208,-1,-1,-1,-1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Ich müsste dann aber "BIOSVersion(0)" mit "SMBIOSBIOSVersion" ersetzen, weil "SMBIOSBIOSVersion" immer "MODEL.VERSION" ausgibt.
Das Problem bei den ASUS Geräten ist, dass ich die Bios Version nur mit "SMBIOSBIOSVersion" auslesen kann mittels "MODEL.BIOSVERSION"s Muster.
Das Model kann man auch getrennt ausgeben und wäre in dem Fall mittels "wmic computersystem get model" möglich und würde dann "X751SA" ausgeben. Nur wie gesagt die Version, ist dabei nicht mit "BIOSVersion(0)" zu bekommen.
Scheint zu klappen
#include <MsgBoxConstants.au3>
#include <Array.au3>
Opt('MustDeclareVars', 1) ; Variablen müssen vor der Verwendung deklariert werden
Global $aBIOSInfo = _GetBIOSInfo()
IF Not @error Then
;_ArrayDisplay($aBIOSInfo)
MsgBox(52, "Bios Verion", $aBIOSInfo[4])
MsgBox(52, "Model", $aBIOSInfo[3])
MsgBox(52, "Seriennummer", $aBIOSInfo[2])
Else
ConsoleWrite("Fehler in der Funktion _GetBIOSInfo" & @CRLF)
EndIf
Func _GetBIOSInfo()
Local $objWMI, $colItems, $objItem
Local $sBIOSVersion, $sManufacturer, $sSerialNumber
Local $aReturn[5]
Local $sModelName = '', $sVersion = '' ; Werte aus $sBIOSVersion
Local $iPos
$objWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$colItems = $objWMI.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", 0x10 + 0x20)
If IsObj($colItems) Then
For $objItem In $colItems
$sBIOSVersion = "X751SA.705" ;$objItem.SMBIOSBIOSVersion
$sManufacturer = $objItem.Manufacturer
$sSerialNumber = StringReplace(StringReplace($objItem.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
; ModelName und Version aus $sBIOSVersion ermitteln :
; ----------------------------------------------------
; Prüfen, ob in $sBIOSVersion ein Punkt vorkommt, also z.B. X751SA.705
; Falls ja :
; -> String von hinten auswerten, und beim ersten Vorkommen aufteilen
; Falls nicht :
; -> $sModelName mit $sBIOSVersion besetzen
; -> damit ist $sModelName zwar identisch wie $sBIOSVersion, aber egal.
; -> $sVersion leerlassen
$iPos = StringInStr($sBIOSVersion, '.', 0, -1)
If $iPos > 0 Then
$sModelName = StringLeft($sBIOSVersion, $iPos - 1)
$sVersion = StringRight($sBIOSVersion, StringLen($sBIOSVersion) - $iPos)
Else
$sModelName = $sBIOSVersion
EndIf
; Rückgabearray besetzen :
$aReturn[0] = $sBIOSVersion
$aReturn[1] = $sManufacturer
$aReturn[2] = $sSerialNumber
$aReturn[3] = $sModelName
$aReturn[4] = $sVersion
Return $aReturn
Next
Else
SetError(1)
EndIf
EndFunc ;==>_GetBIOSInfo
Alles anzeigen
Ich gehe davon aus, dass ich vom Code-Technischen her, deins nehmen sollte oder?
Jetzt bekomme ich natürlich bei allen Variablen, eine Fehlermeldung. Wie und wo, muss ich diese jetzt erst angeben?
ZitatAlles anzeigenAutoIt3 Syntax Checker v3.3.14.2 Copyright (c) 2007-2013 Tylo & AutoIt Team
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(186,77) : warning: $getModelName: possibly used before declaration.
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $getModelName &
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(234,36) : warning: $getSerial: possibly used before declaration.
$serial = StringStripWS($getSerial,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3"(35,36) : warning: $getBiosVersion possibly not declared/created yet
$getBiosVersion = $aBIOSInfo[2]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(10,64) : warning: $ftt_gui possibly not declared/created yet
$ftt_gui = GUICreate("Final Test Tools v3",517,208,-1,-1,-1,-1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(11,43) : warning: $menu_extras possibly not declared/created yet
$menu_extras = GUICtrlCreateMenu("Extras")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(12,93) : warning: $menu_extras_kbflash possibly not declared/created yet
$menu_extras_kbflash = GUICtrlCreateMenuItem("Keyboard Backlight Flasher",$menu_extras,-1,0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Ok, habe mich noch einmal versucht.
Kann das jemand gegentesten und mir sagen, ob es Code-Technisch ok ist?
#include <MsgBoxConstants.au3>
#include <Array.au3>
Opt('MustDeclareVars', 1) ; Variablen müssen vor der Verwendung deklariert werden
Global $aBIOSInfo = _GetBIOSInfo()
IF Not @error Then
;_ArrayDisplay($aBIOSInfo)
MsgBox(52, "Bios Verion", $aBIOSInfo[0])
MsgBox(52, "Model", $aBIOSInfo[2])
MsgBox(52, "Seriennummer", $aBIOSInfo[1])
Else
ConsoleWrite("Fehler in der Funktion _GetBIOSInfo" & @CRLF)
EndIf
Func _GetBIOSInfo()
Local $objWMI, $colItems, $objItem
Local $sBIOSVersion, $sModelName, $splitBios, $sSerialNumber
Local $aReturn[3]
$objWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$colItems = $objWMI.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", 0x10 + 0x20)
If IsObj($colItems) Then
For $objItem In $colItems
If StringInStr("X751SA.705", ".") Then
$splitBios = StringSplit("X751SA.705", ".")
$sBIOSVersion = $splitBios[2]
$sModelName = $splitBios[1]
Else
$sModelName = "x"
$sBIOSVersion = "xx"
EndIf
$sSerialNumber = StringReplace(StringReplace($objItem.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
$aReturn[0] = $sBIOSVersion
$aReturn[1] = $sSerialNumber
$aReturn[2] = $sModelName
Return $aReturn
Next
Else
SetError(1)
EndIf
EndFunc ;==>_GetBIOSInfo
Alles anzeigen
Wenn ich "X751SA.705" verwende, wird mir jeweils X751SA und 705 ausgegeben.
Wenn ich "X751SA705" verwende, wird mir jeweils X und XX ausgegeben.
Wäre das dann so korrekt?
Ein großes Danke an alle die gerade mitwirken.
Bei allen ASUS Geräten, wurde vorher immer via CMD wie folgt ausgelesen:
Die Ausgabe war immer, egal welches Model: "MODEL.VERSION", darum wollte (muss?) ich das via "." splitten.
Ich habe leider kein ASUS Gerät Zuhause um zu testen, ob ich mit der obigen Funktion testen kann, aber ich erinnere mich daran, dass ich sonst falsche Informationen erhalte.
Ich dachte da an sowas wie if-else, falls kein "." vorkommt....
Kompliziert
Puhh, ich habe einfach noch zu wenig Erfahrung.
würdest du mir meine Funktion dementsprechend einmal vernünftig aufbauen? Ich wäre dir sehr dankbar und weiß das zu schätzen!!
Die aktuelle Funktion:
Func _SystemInfo()
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$getBIOS = $WMI.ExecQuery("Select * from Win32_BIOS")
For $element In $getBIOS
Local $splitBios = StringSplit("X751SA.705", ".")
Global $getBiosVersion = $splitBios[2]
Global $getModelName = $splitBios[1]
Global $getSerial = StringReplace(StringReplace($element.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
Next
EndFunc ;==>_SystemInfo
Bin ich hier irgendwo auf dem richtigen weg ?
#include <MsgBoxConstants.au3>
#include <Array.au3>
Local $d = "."
Local $info = "X751SA.705"
$pairs = StringSplit($info, $d , 2)
For $i = 0 To UBound($pairs) - 1
If $pairs[$i] = "" Then ContinueLoop
ConsoleWrite($pairs[$i] & @CRLF)
Next
MsgBox(52, "model:", $pairs[0])
MsgBox(52, "bios:", $pairs[1])
Alles anzeigen
Hallo zusammen,
erst einmal Danke für die Antworten und entschuldigt, dass ich mich unverständlich ausgedrückt habe.
Das gesamte Script funktioniert bisher Reibungslos, natürlich bin ich für jeden Vorschlag/Idee dankbar, wie man etwas besser realisieren kann,
Auf den Firmenrechner (ASUS), lese ich mittels "$element.SMBIOSBIOSVersion" Das Model und die Bios-Version aus. Die Asus Geräte geben folgendes zurück: Beispiel: X751SA.705
Ich möchte lediglich X751SA und 705 als einzelne Variablen zurück geben.
Da auf dem heimischen Rechner "SMBIOSBIOSVersion" was anderes zurück gibt wie z.B "A7CN40WW", nehme ich als Test "
Und dieses Beispiel funktioniert:
Func _SystemInfo()
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$getBIOS = $WMI.ExecQuery("Select * from Win32_BIOS")
For $element In $getBIOS
Local $splitBios = StringSplit("X751SA.705", ".")
Global $getBiosVersion = $splitBios[2]
Global $getModelName = $splitBios[1]
Global $getSerial = StringReplace(StringReplace($element.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
Next
EndFunc ;==>_SystemInfo
Alles anzeigen
Ich habe wohl vorher irgendeinen Dummen Fehler eingebaut.
Wie kann ich denn überprüfen, ob "$splitBios" den Zeichensatz "X751SA.705" enhält um zu splitten und wenn nicht, dass dann Platzhalter für "getBios..." und/oder "getModel.." eingesetzt werden?
Aber nun zu den Globals, wenn ich diese entferne und die Funktion so ausieht:
Func _SystemInfo()
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$getBIOS = $WMI.ExecQuery("Select * from Win32_BIOS")
For $element In $getBIOS
Local $splitBios = StringSplit("X751SA.705", ".")
$getBiosVersion = $splitBios[2]
$getModelName = $splitBios[1]
$getSerial = StringReplace(StringReplace($element.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
Next
EndFunc ;==>_SystemInfo
Alles anzeigen
Erhalte ich beim kompilieren diese Fehler
ZitatAlles anzeigen+>14:56:33 Starting AutoIt3Wrapper v.17.224.935.0 Keyboard:00000407 OS:WIN_10/ CPU:X64 OS:X64 Environment(Language:0407) CodePage: utf8.auto.check:
+> SciTEDir => C:\Program Files (x86)\ISN AutoIt Studio\Data UserDir => C:\Users\Lenovo\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Lenovo\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.14.2) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(160,77) : warning: $getModelName: possibly used before declaration.
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $getModelName &
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(208,36) : warning: $getSerial: possibly used before declaration.
$serial = StringStripWS($getSerial,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(55,58) : warning: $getBiosVersion: possibly used before declaration.
$menu_bios = GUICtrlCreateMenu("BIOS: " & $getBiosVersion)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(160,77) : error: $getModelName: undeclared global variable.
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $getModelName &
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\functions.au3"(208,36) : error: $getSerial: undeclared global variable.
$serial = StringStripWS($getSerial,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\fttgui.isf"(55,58) : error: $getBiosVersion: undeclared global variable.
$menu_bios = GUICtrlCreateMenu("BIOS: " & $getBiosVersion)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3 - 3 error(s), 3 warning(s)
!>14:56:35 AU3Check ended. Press F4 to jump to next error.rc:2
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\aut2exe\aut2exe.exe /in "C:\Users\Lenovo\Documents\ISN AutoIt Studio\Projects\Final Test Tools v3\Final_Test_Tools_v3.au3" /out "C:\Users\Lenovo\AppData\Local\AutoIt v3\Aut2exe\~AU2E46.tmp.exe" /nopack /icon "G:\WTP\finaltest\redicon.ico" /comp 2
+>14:56:38 Aut2exe.exe ended.C:\Users\Lenovo\AppData\Local\AutoIt v3\Aut2exe\~AU2E46.tmp.exe. rc:0
+>14:56:38 Created program:C:\Users\Lenovo\Documents\ISN AutoIt Studio\Release\Final Test Tools v3\FinalTestToolsv3.exe
+>14:56:39 AutoIt3Wrapper Finished.
[Blockierte Grafik: http://fs5.directupload.net/images/171019/uwbzifqm.png]
Daher habe ich die Globals drin gelassen.
Bitte mit $test[2] ersetzen.
Ich erhalte immer diesen oben genannten Fehler.
Wenn ich die Variablen nicht mit Global deklarieren, bekomme ich die Meldung, dass einige Variablen nicht global deklariert würden ?!
Zu lang, daher extern
Script: https://pastebin.com/teQ8eMuJ
functions.au3: https://pastebin.com/epFN10Fa
Hallo zusammen,
ich habe folgende Funktion:
Func _SystemInfo()
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$getBIOS = $WMI.ExecQuery("Select * from Win32_BIOS")
For $element In $getBIOS
Global $getBiosVersion = $element.SMBIOSBIOSVersion
Global $getSerial = StringReplace(StringReplace($element.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
Next
EndFunc ;==>_SystemInfo
Ich habe es um getModel erweitert:
Func _SystemInfo()
$WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
$getBIOS = $WMI.ExecQuery("Select * from Win32_BIOS")
For $element In $getBIOS
Global $getBiosVersion = $element.SMBIOSBIOSVersion
Local $test = StringSplit("1111" & ".DATMODEL", ".")
Global $getModelName = $modelnamegood[2]
Global $getSerial = StringReplace(StringReplace($element.SerialNumber, "SSN12345678901234567", "Nicht vorhanden !"), "na", "Nicht vorhanden !")
Next
EndFunc ;==>_SystemInfo
Alles anzeigen
Ich kann es so nicht ausgeben, es kommt
Error: Subscript used on non-accessible variable.
Es wollte eigentlich so gesplittet werden oder?
[1] 1111
[2] DATMODEL
Und ich möchte "DATMODEL" ausgeben.
include array ist auch vorhanden
Danke für Hilfe.
LG
Ich habe den Fehler gefunden.
Ich habe zwei gleiche Abfragen in einer Funktion gehabt, dass hat das Problem verursacht.
Dennoch Danke.
Hallo zusammen,
mein Script startet und führt die ersten Aufgaben durch. Aber dann pausiert das Script und kein Button oder Menüitem führt eine Aktion aus.
Kann mir jemand das Script anpassen, so das dieser Fehler behoben ist und kurz erklären woran das lag?
Und das Fenster, wird auch nicht verschoben
Func _dragsysprepwindow()
Global $alang[5][2]
Local $alang[5][2]
$alang[5][2]
$stext = "(Sysprep)"
$ifound = _arraysearch($alang, @OSLang)
If $ifound <> -1 Then $stext = $alang[$ifound][1]
$hwnd = WinGetHandle("[CLASS:#32770]", $stext)
$apos = WinGetPos($hwnd)
WinMove($hwnd, "", @DesktopWidth - $apos[2] - 15, @DesktopHeight - $apos[3] - (@DesktopHeight - 267 - 15))
EndFunc
Alles anzeigen
Hier das Script:
Opt("GUIResizeMode", $gui_dockleft)
FileCreateShortcut(@WorkingDir & "WTP\asus-wtp\bin\UploadTool\UploadTool.exe", @WorkingDir & "WTP\finaltest\UploadTool.lnk", @WorkingDir & "WTP\asus-wtp\bin\UploadTool\")
FileCreateShortcut(@WorkingDir & "WTP\asus-wtp\bin\AsusWTP.exe", @WorkingDir & "WTP\finaltest\DiagEG.lnk", @WorkingDir & "WTP\asus-wtp\bin\")
Local $aarray = 0
RunWait(@WorkingDir & "WTP\finaltest\exbios.bat")
If NOT _filereadtoarray(@WorkingDir & "WTP\finaltest\exbios.txt", $aarray, 0) Then
MsgBox($mb_systemmodal, "", "There was an error reading the exbios file. @error: " & @error)
EndIf
Local $biosmodel = StringSplit($aarray[1], ".")
Local $model = StringStripWS($biosmodel[1], 8)
Local $bios = StringStripWS($biosmodel[2], 8)
#Region ### START Koda GUI section ### Form=
$final = GUICreate("Final Test Tools", 348, 357, 188, 140)
$menuextra = GUICtrlCreateMenu("Extras")
$backlightflash = GUICtrlCreateMenuItem("Keyboard Backlight Flash", $menuextra)
$batmonitor = GUICtrlCreateMenuItem("Battery Test", $menuextra)
$aspowercfg = GUICtrlCreateMenuItem("AsPowerCfg", $menuextra)
$audiotools = GUICtrlCreateMenuItem("AudioTools", $menuextra)
$uninstaller = GUICtrlCreateMenuItem("Deinstallation", $menuextra)
$menumodel = GUICtrlCreateMenu("MODEL: " & $model)
$findkeydef = GUICtrlCreateMenuItem("Tastaturlayouts", $menumodel)
$menubios = GUICtrlCreateMenu("BIOS: " & $bios)
$checkbios = GUICtrlCreateMenuItem("Nachprüfen", $menubios)
$fixbios = GUICtrlCreateMenuItem("BIOS-File FIX", $menubios)
$sortbios = GUICtrlCreateMenuItem("Bios Ordner sortieren", $menubios)
$winflash = GUICtrlCreateMenuItem("WinFlash ausführen", $menubios)
$menusystem = GUICtrlCreateMenu("SYSTEM: " & @CPUArch)
$menuhelp = GUICtrlCreateMenu("?")
$license = GUICtrlCreateMenuItem("Lizenz", $menuhelp)
$team = GUICtrlCreateMenuItem("Final Angels", $menuhelp)
$info = GUICtrlCreateMenuItem("Info", $menuhelp)
$group1 = GUICtrlCreateGroup("Final Test Tools", 8, 8, 329, 121)
$button1 = GUICtrlCreateButton("Start Final Test", 16, 32, 91, 41)
$button2 = GUICtrlCreateButton("AsusWTP", 72, 80, 91, 41)
$button3 = GUICtrlCreateButton("Windows Active", 176, 80, 91, 41)
$button4 = GUICtrlCreateButton("UploadTool", 224, 32, 91, 41)
$button5 = GUICtrlCreateButton("2ND Injection", 120, 32, 91, 41)
$group2 = GUICtrlCreateGroup("SN / KEY", 8, 136, 153, 169)
$button6 = GUICtrlCreateButton("ACTIVATE /ATO", 24, 160, 123, 41)
$button7 = GUICtrlCreateButton("KEY RESET (OA30)", 24, 208, 123, 41)
$button8 = GUICtrlCreateButton("SN BURNING", 24, 256, 123, 41)
$group3 = GUICtrlCreateGroup("Seconds", 184, 136, 153, 169)
$button9 = GUICtrlCreateButton("BATTERIE EATER", 200, 160, 123, 41)
$button10 = GUICtrlCreateButton("AUTOTIMER", 200, 208, 123, 41)
$button11 = GUICtrlCreateButton("FIND WTP", 200, 256, 123, 41)
$version = GUICtrlCreateLabel("v2 Beta", 56, 312, 41, 17)
GUICtrlSetColor($version, $color_red)
$copy = GUICtrlCreateLabel("(c) by Benjamin Böhnke", 200, 312, 116, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$bioscompare = StringRegExp(FileRead(@WorkingDir & "WTP\finaltest\NB_BIOS.txt"), $model & ".*?\ = (\d+)", 3)
If NOT ($bios = $bioscompare[0]) Then
$bios_check = MsgBox(4 + 48, "Nicht aktuell", "Bios aktualisieren" & @CRLF & "AKTUELL: " & $bios & @CRLF & "NEU: " & $bioscompare[0] & @CRLF & "WinFlash ausführen ?")
GUICtrlSetColor($bios, $color_red)
Switch $bios_check
Case 6
_winflash()
Case 7
Case 2
EndSwitch
EndIf
While 1
$nmsg = GUIGetMsg()
Switch $nmsg
Case $gui_event_close
Exit
Case $findkeydef
_findkeydef()
Case $checkbios
_checkbios()
Case $fixbios
_fixbios()
Case $sortbios
ShellExecute(@WorkingDir & "WTP\finaltest\filetime\NewFileTime_x64.exe")
Case $winflash
_winflash()
Case $backlightflash
_backlightflash()
Case $batmonitor
_batmonitor()
Case $aspowercfg
ShellExecute(@WorkingDir & "WTP\finaltest\AsPowerCfg\AsPowerCfg_BAT.exe")
Case $audiotools
_audiotools()
Case $uninstaller
ShellExecute(@WorkingDir & "WTP\finaltest\appwizcontrol.bat")
Case $button1
_button1()
Case $button5
_button5()
Case $button4
ShellExecute(@WorkingDir & "WTP\finaltest\UploadTool.lnk")
Case $button2
ShellExecute(@WorkingDir & "WTP\finaltest\DiagEG.lnk")
Case $button3
ShellExecute(@WorkingDir & "WTP\WindowsActive\WindowsActive.exe")
Case $button6
ShellExecute(@WorkingDir & "WTP\finaltest\slmgr.bat")
Case $button7
_oa30()
Case $button8
ShellExecute(@WorkingDir & "WTP\finaltest\snburn.bat")
Case $button9
ShellExecute(@WorkingDir & "WTP\finaltest\bateater\BEPro.exe")
Case $button10
ShellExecute(@WorkingDir & "WTP\finaltest\time.bat")
Sleep(1000)
ShellExecute(@WorkingDir & "WTP\finaltest\time.bat")
Case $button11
ShellExecute(@WorkingDir & "WTP\finaltest\findwtp\FindWTPresult.exe")
Case $license
ShellExecute("notepad.exe", @WorkingDir & "WTP\finaltest\License.txt")
Case $team
MsgBox(64, "Das aktuelle Team", "Final Angels" & @CRLF & @CRLF & "Benny Böhnke" & @CRLF & "Daniel Agapov" & @CRLF & "Engin Tasbilek" & @CRLF & "Mathias Pernitzki" & @CRLF & "Hrvoje Majanovic")
Case $info
ShellExecute("notepad.exe", @WorkingDir & "WTP\finaltest\info.txt")
Case $final
EndSwitch
WEnd
Func _findkeydef()
$keydefus = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $model & "us.ini"
$keydefeu = @WorkingDir & "WTP\asus-wtp\bin\keydef\keydef" & $model & "eu.ini"
$ifileexistsus = FileExists($keydefus)
$ifileexistseu = FileExists($keydefeu)
If $ifileexistsus Then
_winapi_shellopenfolderandselectitems($keydefus)
ShellExecute($keydefus)
ElseIf $ifileexistseu Then
_winapi_shellopenfolderandselectitems($keydefeu)
ShellExecute($keydefeu)
Else
MsgBox($mb_systemmodal, "", "Cant find US or EU keydef-File. Only JP or nothing.")
EndIf
EndFunc
Func _checkbios()
If NOT ($bios = $bioscompare[0]) Then
$biosold = MsgBox(4 + 48, "Nicht aktuell", "Bios aktualisieren" & @CRLF & "AKTUELL: " & $bios & @CRLF & "NEU: " & $bioscompare[0] & @CRLF & "Biso aktualisieren und WinFlash ausführen ?")
Select
Case $biosold = 6
_winflash()
Case $biosold = 1
EndSelect
Else
MsgBox(0 + $mb_iconinformation, "Aktuell", "Bios ist aktuell !" & @CRLF & "VERSION: " & $bios)
EndIf
EndFunc
Func _winflash()
If FileExists("C:\Program Files (x86)\ASUS\WinFlash\WinFlash.exe") Then
MsgBox(64 + $mb_iconinformation, "Installiert", "WinFlash ist installiert und wird ausgeführt.")
FileCreateShortcut("C:\Program Files (x86)\ASUS\WinFlash\WinFlash.exe", @WorkingDir & "WTP\finaltest\WinFlash.lnk", "C:\Program Files (x86)\ASUS\WinFlash\")
Sleep(500)
ShellExecute(@WorkingDir & "WTP\finaltest\WinFlash.lnk")
Else
MsgBox(64, "Nicht vorhanden", "WinFlash wird nun installiert")
ShellExecute(@WorkingDir & "WTP\finaltest\winflash_install\Setup.exe")
EndIf
EndFunc
Func _fixbios()
Switch MsgBox(3, "BIOS-Fix", "Möchtest du das BIOS-File korrigieren?")
Case 6
$rc = FileCopy(@WorkingDir & "WTP\finaltest\NB_BIOS.txt", @WorkingDir & "WTP\asus-wtp\bin\conf\", 1)
If $rc > 0 Then
MsgBox(64, "OK!", "BIOS-File erfolgreich korrigiert!")
Else
MsgBox(48, "Error", "BIOS-FILE konnte nicht korrigiert werden")
EndIf
Case 7
Case 2
EndSwitch
EndFunc
Func _backlightflash()
If NOT @CPUArch = "X86" Then
MsgBox(64, "Keyboard Backlight Flasher", @CPUArch & " Variante starten")
ShellExecute(@WorkingDir & "WTP\finaltest\kbBacklightFlash.bat")
Else
MsgBox(64, "Keyboard Backlight Flasher", @CPUArch & " Variante starten")
ShellExecute(@WorkingDir & "WTP\finaltest\kbBacklightFlash64.bat")
EndIf
EndFunc
Func _batmonitor()
FileCreateShortcut(@WorkingDir & "WTP\asus-wtp\advance_test\BatMonitor.exe", @WorkingDir & "WTP\finaltest\BatMonitor.lnk", @WorkingDir & "WTP\asus-wtp\bin\")
Sleep(500)
ShellExecute(@WorkingDir & "WTP\finaltest\BatMonitor.lnk")
EndFunc
Func _audiotools()
$realtek = "C:\Program Files\Realtek\Audio\HDA\RAVCpl64.exe"
$smartaudio = "C:\Program Files\CONEXANT\SAII\SmartAudio.exe"
$ifileexistsrealtek = FileExists($realtek)
$ifileexistssmartaudio = FileExists($smartaudio)
If $ifileexistsrealtek Then
ShellExecute($realtek)
ElseIf $ifileexistssmartaudio Then
ShellExecute($smartaudio)
Else
MsgBox(48, "Überprüfen", "Möglicherweise kein Audiotool vorhanden!")
EndIf
EndFunc
Func _button1()
ShellExecute(@WorkingDir & "WTP\finaltest\time.bat")
Sleep(6000)
ShellExecute(@WorkingDir & "WTP\finaltest\time.bat")
Sleep(2000)
ShellExecute(@WorkingDir & "WTP\finaltest\DisableLID.exe")
Sleep(2000)
ShellExecute(@WorkingDir & "WTP\finaltest\DisableLID_XP.exe")
Sleep(2000)
ShellExecute(@WorkingDir & "WTP\finaltest\nbsettings.bat")
Sleep(2000)
ShellExecute(@WorkingDir & "WTP\finaltest\DiagEG.lnk")
Sleep(3000)
ShellExecute(@WorkingDir & "WTP\finaltest\nbsettings.bat")
Sleep(20000)
Switch @OSVersion
Case "WIN_10"
ShellExecute(@WorkingDir & "WTP\WindowsActive\WindowsActive.exe")
_dragwindowsactivewindow()
Case "WIN_81"
ShellExecute(@WorkingDir & "WTP\WindowsActive\WindowsActive.exe")
_dragwindowsactivewindow()
Case "WIN_8"
ShellExecute(@WorkingDir & "WTP\WindowsActive\WindowsActive.exe")
_dragwindowsactivewindow()
EndSwitch
If ProcessExists("FINALTESTv2.exe") Then
_dragfinaltesttoolswindow()
EndIf
If ProcessExists("sysprep.exe") Then
_dragsysprepwindow()
EndIf
EndFunc
Func _dragsysprepwindow()
Global $alang[5][2]
Local $alang[5][2]
$alang[5][2]
$stext = "(Sysprep)"
$ifound = _arraysearch($alang, @OSLang)
If $ifound <> -1 Then $stext = $alang[$ifound][1]
$hwnd = WinGetHandle("[CLASS:#32770]", $stext)
$apos = WinGetPos($hwnd)
WinMove($hwnd, "", @DesktopWidth - $apos[2] - 15, @DesktopHeight - $apos[3] - (@DesktopHeight - 267 - 15))
EndFunc
Func _dragwindowsactivewindow()
WinWait("[CLASS:#32770; TITLE:WindowsActive]")
$hwnd = WinGetHandle("[CLASS:#32770; TITLE:WindowsActive]")
$apos = WinGetPos($hwnd)
WinMove($hwnd, "", @DesktopWidth - $apos[2] - 15, @DesktopHeight - $apos[3] - (@DesktopHeight - 284 - 267 - 10 - 15))
EndFunc
Func _dragfinaltesttoolswindow()
WinWait("[TITLE:Final Test Tools]")
$hwnd = WinGetHandle("[TITLE:Final Test Tools]")
$apos = WinGetPos($hwnd)
WinMove($hwnd, "", @DesktopWidth - $apos[2] - (@DesktopWidth - 329 - 12), @DesktopHeight - $apos[3] - (@DesktopHeight - 499 - 269 - 25))
WinWait("[CLASS: AutoIt v3 GUI; TITLE:Final Test Tools]")
$hwnd = WinGetHandle("[CLASS: AutoIt v3 GUI; TITLE:Final Test Tools]")
$apos = WinGetPos($hwnd)
WinMove($hwnd, "", @DesktopWidth - $apos[2] - (@DesktopWidth - 329 - 12), @DesktopHeight - $apos[3] - (@DesktopHeight - 499 - 269 - 25))
EndFunc
Func _button5()
Local $afilelist = _filelisttoarray("C:\Test Report\Detailed report\", "*")
If @error = 1 Then
MsgBox(52, "Pfadfehler", "Der Pfad scheint falsch zu sein!")
Exit
EndIf
If @error = 4 Then
MsgBox(52, "Keine Seriennummer", "Keine Seriennummer gefunden" & @CR & "Scheinbar ist keine Datei erstellt worden.")
Exit
EndIf
$sfile = $afilelist[1]
$sfile = StringRegExpReplace($sfile, "\.[^.]+$", "")
$array = StringSplit($sfile, "\")
$serial = StringTrimRight($array[$array[0]], 0)
$serial_final = StringReplace($serial, "-1", "")
MsgBox(64, "Zwischenablage", "SN: " & $serial_final & @CR & "Wurde in die Zwischenablage kopiert!")
ClipPut($serial_final)
EndFunc
Func _oa30()
Switch MsgBox(52, "Windows Aktivierung", "Möchtest du den Key für eine Windows Aktivierung löschen?")
Case 6
ShellExecute(@WorkingDir & "WTP\finaltest\keyReset.bat")
Case 7
Case 2
EndSwitch
EndFunc
Alles anzeigen
LG
Danke, das hat bestens funktioniert !!!
Vielen vielen Dank !
Danke für die Antworten.
Das andere Fenster hat die gleiche Class wie das Sysprep. Dieses nennt sich aber "WindowsActive" und ist nicht Abhängig von der OS-Sprache.
Für weitere Hilfe wäre ich dankbar.
So geht es leider nicht:
$Hwnd = WinGetHandle('[CLASS:#32770]','WindowsActive')
$aPos=WinGetPos($Hwnd)
WinMove($Hwnd,'',@DesktopWidth-$aPos[2],@DesktopHeight-$aPos[3]-(@DesktopHeight-267))
Auch wenn ich ein Winwait davor packe, funktioniert das nicht. Generell, wenn das Fenster schon offen ist und ich das Script starte, wird mit gesagt das es einen Fehler sub...-Fehler gibt. Ist das Fenster zu, gibt es keinen Fehler, aber dasd Fenster wird auch nicht verschoben.
LG
Hallo zusammen,
wie ich die Biosn-Version des Computers auslesen kann, weis ich bereits.
Ich möchte die aktuelle Bios-Version mit der, in einer Textdatei liegenden abgleichen, hat dafür jemand einen Code?
Die TXT ist so aufgebaut:
#model = newest BIOS version
1015E = 304
A8DC = 214
A8E = 302
A8F = 302
A8FM = 212
A8H = 204
A8HE = 210
A8J = 212
A8JA = 212
A8JC = 211
A8JE = 210
A8JM = 211
A8JN = 211
A8JP = 210
A8JR = 210
A8JS = 213
A8LE = 207
A8M = 220
A8N = 215
A8SC = 302
A8SE = 203
A8SG = 201
A8SR = 304
A8SV = 302
A8TC = 222
A8TM = 222
B23E = 210
B33E = 215
[...]
Ich wäre für jede Hilfe dankbar.
Ich verstehe was du meinst, aber nicht wie man das umsetzen muss.
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#Include <WinAPIEx.au3>
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Modelname=""
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Modelname = $Modelname & "Name: " & $objItem.Name & @CRLF
if Msgbox(1,"WMI Output",$Modelname) = 2 then ExitLoop
$Modelname=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
$sSelectedFile = _WinAPI_ShellOpenFolderAndSelectItems('C:\keydef'& $Modelname &'.txt')
MsgBox(0, "Selected file", $sSelectedFile)
Alles anzeigen
Ich brauche diese MSGBOX z.B gar nicht:
Diese dient nur zur Überprüfung, ob auch das gewünschte Ergenis erzielt wird.
Aber bisher erhalte ich nur "0" als Ergebnis. Das Model "Predator G3-710" wird richtig ausgegeben, allerdings in dieser MSGBOX, was ja überflüssig wäre.
Edit://
Ich habe es wohl doch hinbekommen:
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#Include <WinAPIEx.au3>
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Modelname = $objItem.Name
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
_WinAPI_ShellOpenFolderAndSelectItems('C:\keydef'& $Modelname &'.txt')
Alles anzeigen
Jetzt habe ich nur eine weitere Frage
In dem Fall nenn sich das keydef file: "keydefPredator G3-710"
Eigentlich gibt es aber "eu" "jp" und "us" = keydefPredator G3-710us.txt
Es soll eigentlich auch immer das "us" file gefunden werden, wenn dies nicht vorhanden ist, dann das "eu" und wenn das das auch nicht gibt, dann das "jp", sollten alle nicht gefunden werden, eine Fehlermeldung.
Edit2//
So bekomme ich Syntaxerror
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#Include <WinAPIEx.au3>
#include <WinAPIFiles.au3>
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Modelname = $objItem.Name
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
$keyDef = 'C:\keydef'& $Modelname &'us.txt'
$iFileExists = FileExists($keyDef)
; Display a message of whether the file exists or not.
If $iFileExists Then
_WinAPI_ShellOpenFolderAndSelectItems($keyDef)
ElseIf
_WinAPI_ShellOpenFolderAndSelectItems('C:\keydef'& $Modelname &'eu.txt')
Else
MsgBox($MB_SYSTEMMODAL, "", "Nur Japanisch.")
EndIf
EndFunc ;==>Example
Alles anzeigen
Edit3//
Ebfalls
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#Include <WinAPIEx.au3>
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Modelname = $objItem.Name
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
$keyDefUS = 'C:\keydef'& $Modelname &'us.txt'
$keyDefEU = 'C:\keydef'& $Modelname &'eu.txt'
$iFileExistsUS = FileExists($keyDefUS)
$iFileExistsEU = FileExists($keyDefEU)
; Display a message of whether the file exists or not.
If $iFileExistsUS Then
_WinAPI_ShellOpenFolderAndSelectItems($keyDefUS)
ElseIf $iFileExistsEU Then
_WinAPI_ShellOpenFolderAndSelectItems($keyDefEU)
Else
MsgBox($MB_SYSTEMMODAL, "", "Nur Japanisch.")
EndIf
EndFunc ;==>Example
Alles anzeigen
Edit4//
Habe es hinbekommen. Kann mir nur jemand sagen, ob der Code allgemein so verwendet werden kann?
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#Include <WinAPIEx.au3>
; Generated by AutoIt Scriptomatic
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Modelname = $objItem.Name
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
$keyDefUS = 'C:\keydef'& $Modelname &'us.txt'
$keyDefEU = 'C:\keydef'& $Modelname &'eu.txt'
$iFileExistsUS = FileExists($keyDefUS)
$iFileExistsEU = FileExists($keyDefEU)
; Display a message of whether the file exists or not.
If $iFileExistsUS Then
_WinAPI_ShellOpenFolderAndSelectItems($keyDefUS)
ElseIf $iFileExistsEU Then
_WinAPI_ShellOpenFolderAndSelectItems($keyDefEU)
Else
MsgBox($MB_SYSTEMMODAL, "", "Nur Japanisch.")
EndIf
Alles anzeigen
Hallo zusammen,
mit folgendem Script, mache ich den Modelname der Notebooks ausfindig:
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Output=""
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Output = $Output & $objItem.Name
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )
Endif
Alles anzeigen
Mit diesem Script, kann ich nach der vermeindlichen Datei suchen:
$sSelectedFile = _WinAPI_ShellOpenFolderAndSelectItems('C:\recovery.txt')
MsgBox(0, "Selected file", $sSelectedFile)
Wie kann ich nun beide Scripte miteinander verbinden?
Die gesuchte Datei die direkt zu öffnen ist, nennt sich: keydef$modelname
$modelname steht natürlich für das zu erkennende Modeltyp.
Ich danke auch hier im Voraus.
LG