Das Problem mit mehreren Monitor ist mir bekannt (leider). Mit WMI wird nur der 1. Monitor ausgelesen. Ich habe schon alles durchsucht, aber bisher noch nichts gefunden, womit man die Informationen von allen angeschlossenen Monitoren bekommt. ![]()
Beiträge von Oscar
-
-
So, nach mehr als einem Jahr gibt es dann mal eine neue Version (v2.0) von meinem Programm.
Ich habe fast alles neu geschrieben. Es gibt jetzt für die einzelnen Bereiche eigene Funktionen, die jeweils ein Array zurückgeben.
Für die Anzeige der Informationen habe ich mich nun für TABs entschieden.
Getestet habe ich das Script mit WindowsXP (32 Bit) und Windows7 (64 Bit). Falls ihr noch Fehler findet, bitte melden!
-
Wofür sonst braucht man solch eine Funktion?
-
und für welche Game soll das jetzt wieder ein Bot werden?

-
Für den Fall, dass Du mal den OnEventMode benutzen möchtest (wäre hier ganz sinnvoll):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
GUICreate("Test", 900, 600)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Dim $Button[8]
For $i = 1 To 7 Step 1
$Button[$i] = GUICtrlCreateButton("Nummer: " & $i, 10, 30 * $i)
GUICtrlSetOnEvent(-1, '_ButtonClick')
Next
GUISetState(@SW_SHOW)While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _ButtonClick()
[/autoit]
MsgBox(0, "Button gedrückt!", "Du hast auf Button '" & GUICtrlRead(@GUI_CtrlId) & "' gedrückt!")
EndFunc -
Wenn man ausschließlich den ASCII-Zeichensatz verwendet, dann braucht man kein Trennzeichen, denn dann sind die Hexzahlen immer 2stellig.
Somit kann man mit StringMid und einer For...Next-Schleife die Zahlen wieder umwandeln:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $String = "Hallo", $Return = ""
$aSplit = StringSplit($String,"")
For $i = 1 to $aSplit[0]
$Return &= Hex(Asc($aSplit[$i]),2)
Next
MsgBox(0,"",$String & " = " & $Return)$String = ""
[/autoit]
For $i = 1 To StringLen($Return) Step 2
$String &= Chr(Dec(StringMid($Return, $i, 2)))
Next
MsgBox(0, "", $Return & " = " & $String) -
Also ich bin ja "schreibfaul".
Ich hätte die 1000 Files lieber mit 7Zip gepackt und dann das 7zip-Archiv sowie die 7zip-Exe per FileInstall integriert.
Das Script kann dann das Archiv irgendwohin temporär entpacken. Damit würdest Du Dir auch die Zeilen mir DirCreate sparen, weil 7zip die Ordnerstruktur übernimmt/erstellt.Aber ansonsten ist das für ein erstes Projekt schon ganz ordentlich.

-
-
Es muss nicht zwangsläufig Windows daran Schuld sein. Vermutlich liegt es eher am Gerätetreiber. Wenn der auf ein Gerät zugreifen will, das von Windows abgeschaltet wurde, wird es wohl zu einer Fehlermeldung kommen. Und wenn der Treiber dann nicht entsprechend darauf reagiert, kommt es zum GAU.
Vermute ich mal... -
Ich hatte das gleiche Problem mal unter WinXP mit einem Gerät, das über USB angeschlossen war.
Bei mir hat folgendes geholfen:- Gerätemanager öffnen
- auf USB-Controller klicken (ganz unten in der Liste)
- den entsprechenden USB-Root-Hub raussuchen (falls nicht lokalisierbar, einfach bei allen die folgende Einstellung vornehmen)
- Doppelklick auf USB-Root-Hub
- Tab "Energieverwaltung" auswählen und den Haken von "Computer kann Gerät ausschalten, um Energie zu sparen" wegmachen
- Fenster mit "Ok" schließen -
GTASpider hatte mal ein cooles Beispiel von einer GUI in einer GUI gepostet.
Vielleicht meinst Du ja sowas... -
Die Idee mit der Inidatei ist gut.

Habe ich gleich mal umgesetzt. Neue Version in Post #1.
-
Ich habe mal eine erweiterte Version daraus gemacht: _GetSoftwareVersion
-
Mit dieser Funktion kann man von diversen Programmen die installierte Version aus der Registry auslesen.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
;~ _GetSoftwareVersion_DisplayIni()$sVersion = _GetSoftwareVersion('firefox')
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Error: ' & @error & @CR)
MsgBox(0, 'Version', $sVersion)Func _GetSoftwareVersion($sSoftware)
[/autoit] [autoit][/autoit] [autoit]
Local $sRegKey, $sVersion, $sInifile, $sTmp, $aSoftware
$sInifile = @ScriptDir & '\_GetSoftwareVersion.ini'
If @OSArch = 'X86' Then
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\'
Else
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\'
EndIf
$aSoftware = IniReadSectionNames($sInifile)
If @error Then Return SetError(1, 0, 'no Inifile')
For $i = 1 To $aSoftware[0]
If $aSoftware[$i] = $sSoftware Then
$sRegKey &= IniRead($sInifile, $aSoftware[$i], 'RegKey', '')
$sTmp = IniRead($sInifile, $aSoftware[$i], 'Version', '')
If StringLeft($sTmp, 3) = 'Reg' Then $sVersion = Execute($sTmp)
Return $sVersion
EndIf
Next
Return SetError(2, 0, 'not found')
EndFuncFunc _GetSoftwareVersion_DisplayIni()
[/autoit]
Local $sInifile, $aSoftware
$sInifile = @ScriptDir & '\_GetSoftwareVersion.ini'
$aSoftware = IniReadSectionNames($sInifile)
If @error Then Return SetError(1, 0, 'no Inifile')
Local $aRegKey[$aSoftware[0] + 1][3] = [[$aSoftware[0], 0, 0]]
For $i = 1 To $aSoftware[0]
$aRegKey[$i][0] = $aSoftware[$i]
$aRegKey[$i][1] = IniRead($sInifile, $aSoftware[$i], 'RegKey', '')
$aRegKey[$i][2] = IniRead($sInifile, $aSoftware[$i], 'Version', '')
Next
_ArrayDisplay($aRegKey)
EndFuncAußerdem wird die folgende Inidatei benötigt:
Spoiler anzeigen
Code
Alles anzeigen[AdobeReader] RegKey="Adobe\Acrobat Reader" Version="RegEnumKey($sRegKey, 1)" [Avira AntiVir] RegKey="Avira\AntiVir Desktop" Version="RegRead($sRegKey, 'EngineVersion')" [AutoIt] RegKey="AutoIt v3\AutoIt" Version="RegRead($sRegKey, 'Version')" [AutoIt Beta] RegKey="AutoIt v3\AutoIt" Version="RegRead($sRegKey, 'betaVersion')" [Corel DVDCopy] RegKey="Corel\DVDCopy6" Version="RegRead($sRegKey, 'Version')" [DirectX] RegKey="Microsoft\DirectX" Version="RegRead($sRegKey, 'Version')" [DYMO LabelWriter] RegKey="DYMO\LabelWriter" Version="RegRead($sRegKey, 'SoftwareVersion')" [FlashPlayer] RegKey="Macromedia\FlashPlayer" Version="RegRead($sRegKey, 'CurrentVersion')" [JRE] RegKey="JavaSoft\Java Runtime Environment" Version="RegRead($sRegKey, 'CurrentVersion')" [Firefox] RegKey="Mozilla\Mozilla Firefox" Version="RegRead($sRegKey, 'CurrentVersion')" [Thunderbird] RegKey="Mozilla\Mozilla Thunderbird" Version="RegRead($sRegKey, 'CurrentVersion')" [PowerDVD] RegKey="CyberLink\PowerDVD" Version="RegRead($sRegKey, 'CLVer')" [VLC] RegKey="VideoLAN\VLC" Version="RegRead($sRegKey, 'Version')" [WMPlayer] RegKey="Microsoft\MediaPlayer\PlayerUpgrade" Version="RegRead($sRegKey, 'PlayerVersion')"
Die Inidatei muss sich im Scriptverzeichnis befinden!
Auf diese Weise läßt sich die Funktionalität einfacher erweitern. Man muss nur die Inidatei anpassen.
Die zweite Funktion "_GetSoftwareVersion_DisplayIni()" dient nur dazu, sich den Inhalt der Inidatei anzeigen zu lassen.

-
Du kannst auch gleich die BigInteger-UDF von eukalyptus nehmen.
-
Bei einem µIT haben wir mal BigInt-Funktionen erstellt: BigInt
Damit solltest Du das lösen können.
-
Ich habe mal auf die Schnelle zwei Funktionen erstellt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,'FlashPlayer-Version',_GetFlashPlayerVersion())
MsgBox(0,'AdobeReader-Version',_GetAdobeReaderVersion())Func _GetFlashPlayerVersion()
[/autoit] [autoit][/autoit] [autoit]
Local $sVersion, $sKey
If @OSArch = 'X86' Then
$sKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer'
Else
$sKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Macromedia\FlashPlayer'
EndIf
$sVersion = RegRead($sKey, 'CurrentVersion')
Return SetError(@error, 0, $sVersion)
EndFuncFunc _GetAdobeReaderVersion()
[/autoit]
Local $sVersion, $sKey
If @OSArch = 'X86' Then
$sKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader'
Else
$sKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Adobe\Acrobat Reader'
EndIf
$sVersion = RegEnumKey($sKey, 1)
Return SetError(@error, 0, $sVersion)
EndFunc -
Du wirst schon dazuschreiben müssen, um welche Seite es sich handelt, wenn Dir jemand helfen soll.
Und wenn Du schon am schreiben bist, sag auch gleich mit welchen Browser Du darauf zugreifen willst. -
Eigentlich bin ich auch nicht so der Fußball-Fan, aber zum tippen auf der Arbeit hatte ich schonmal ein Bundesligatip-Programm ( Saison 07/08 ) gemacht.
WM-Spiele gucke ich aber meistens, von daher wäre so ein Programm schon ganz interessant. Werde mich wohl daran versuchen. Allerdings erst im neuen Jahr. Momentan muss noch einiges anderes fertig werden.

-
Was soll das für ein Schwachsinn werden? Sowas unterstützen wir hier nicht!

[Thread closed]