Das Ding scheint ja zu laufen, 6 downloads
Nix für ungut, gern geschehen
Saludos de Chile
Beiträge von RapaNui
-
-
Hallo @Dustin.
ein anderer Tip von mir
benutze:
[autoit]ShellExecute("http://www.blablabla.de/")
[/autoit][autoit][/autoit][autoit]; und Du kannst Dir all das hier sparen
[/autoit]
; Run("C:\Programme\Mozilla Firefox\firefox.exe")
; WinWaitActive("Mozilla Firefox")
; Sleep(500)
; Send("http://www.ogame.de/", 1)Ein weiterer Vorteil liegt darin, dass diese Anweisung den "voreingestellten Browser" lädt und nicht auf Pfad-Angaben angewiesen ist
[Edit]
Was sind ListView...
gehe in Dein AutoIt-Installationsverzeichnis
%ProgramFiles%\Examples\Helpfile\ ...
suche Die die Einträge über _GUICtrlListView......au3 und arbeite sie der Reihe nach ab (Doppelklick) und sieh Dir den Source-Code an, so solltest Du poco a poco dahinterkommen, was ListView sind und wie sie funktionieren.
Nebenher natürlich nicht die AutoIt Help vernachlässigen.Saludos de Chile
-
Hi Spider,
wirklich nettes Script, gefällt mir gut.
Ich hab mal ein wenig mircosofiert :lol: und einiges über WMI nachgelesen. Wenn man "winmgmts:\\localhost\root\CIMV2" abfragen will, dann geht dies auch in der Kurzform ObjGet("winmgmts:")
Der ganze Stoff und Deine geniale Idee hat mich dann dazu veranlasst folgende UDF zu schreiben.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include-once
Func _ProcessInfo($iPID="0",$iFlag="0")
; ------------------------------------------------------------------------------
; Include Version:1.00 (17/01/2007)
; AutoIt Version: 3.2.2.0
; Author Wilfried Stenzel (Chile)
; Language: English
; Description - Returns a array containing the process, PID, Priority, Threats, ExecutablePath ...
; if no entries $array[0][0] = 0
; Syntax - _ProcessInfo($iPID,$iFlag)
; Parameters - $iPID - "0" (default) = currently running processes
; - by PID = the Process-ID of the process to check
; - by name = the name of the process to check
; $iFlag - "0" (default) = Shortlist (only WMI)
; $iFlag - "1" = Longlist (WMI + FileVersion, CompanyName, FileDescription, ProductName)
; Requirements - None.
; Return Values - Success - The array of the process(es)
; The array returned is two-dimensional and is made up as follows:
; $array[0][0] = Number of processes
; $array[1][0] = Process name
; $array[1][1] = Process ID (PID) as string
; $array[1][2] = Process ID (PID) as uint32 Global process identifier that you can use to identify a process
; $array[1][3] = Priority (32=normal/64=high/128/256=realtime as uint32 The higher the value, the higher priority a process receives
; $array[1][4] = Threat Count Number of active threads in a process
; $array[1][5] = Executable Path, base for 7 - 10
; $array[1][6] = CommandLine (Command line used to start a specific process, if applicable. This property is new for Windows XP.
; $array[1][7] = the "File" version information returns -1 if file not exist /returns "0.0.0.0" if no version information
; returns -1 if file not exist /returns "0.0.0.0" if no version information
; $array[1][8] = the "File" CompanyName like "Microsoft Corporation
; $array[1][9] = the "File" Description see more en FileGetVersion
; $array[1][10] = the "File" ProductName
;
; $array[n][0] = nth Process name
; ...
; Notes - http://msdn2.microsoft.com/en-us/library/aa394372.aspx about WMI
;====================================================================================Local $iWMIService,$iWMIItems,$iPInfo[1][11],$iSelect = "SELECT * FROM Win32_Process"
[/autoit]
If $iPid = "0" Then
$iSelect = "SELECT * FROM Win32_Process"
Else
If Mod($iPid,$iPid) = 0 Then
$iSelect &= " WHERE ProcessId = " & $iPID
Else
$iSelect &= " WHERE Name = '" & $iPID &"'"
EndIf
EndIf
$iWMIService = ObjGet("winmgmts:")
$iWMIItems = $iWMIService.ExecQuery ($iSelect)
If IsObj($iWMIItems) Then
For $i In $iWMIItems
ReDim $iPInfo[UBound($iPInfo)+1][UBound($iPInfo,2)]
$iPInfo[0][0] = $iPInfo[0][0]+1
$iPInfo[$iPInfo[0][0]][0] = $i.Name ; ProcessName string
$iPInfo[$iPInfo[0][0]][1] = $i.Handle ; ProcessID string
$iPInfo[$iPInfo[0][0]][2] = $i.ProcessId ; ProcessID uint32
$iPInfo[$iPInfo[0][0]][3] = $i.Priority ; Priority uint32
$iPInfo[$iPInfo[0][0]][4] = $i.ThreadCount ; ThreatCount uint32
$iPInfo[$iPInfo[0][0]][5] = $i.ExecutablePath ; ExecutablePath string
If @OSType ="WIN32_WINDOWS" Then
$iPInfo[$iPInfo[0][0]][6] = " *** Not supported on Windows 95/98/ME ***"
Else
$iPInfo[$iPInfo[0][0]][6] = $i.CommandLine
EndIf
If $iFlag=1 Then
If FileExists($iPInfo[$iPInfo[0][0]][5]) Then
$iPInfo[$iPInfo[0][0]][7] = FileGetVersion($iPInfo[$iPInfo[0][0]][5])
$iPInfo[$iPInfo[0][0]][8] = FileGetVersion($iPInfo[$iPInfo[0][0]][5],"CompanyName")
$iPInfo[$iPInfo[0][0]][9] = FileGetVersion($iPInfo[$iPInfo[0][0]][5],"FileDescription")
$iPInfo[$iPInfo[0][0]][10] = FileGetVersion($iPInfo[$iPInfo[0][0]][5],"ProductName")
Else
$iPInfo[$iPInfo[0][0]][7] = -1
EndIf
EndIf
Next
EndIf
Return $iPInfo
EndFunc ;==>_ProcessInfo
Ich liefere da zwar keine Fenstertitel oder Win-Handle, dafür aber neben dem Path auch die CMDLine (ab XP) sowie einige Versionsinfo, sofern vorhanden.
Achja, die Infos sind jederzeit erweiterbar, ARRAY heraufsetzen und weitere Abfragen einfüllen
Das Script müsste (no se nada seguro) auch unter NT 4.0 ohne PSAPI.DLL laufen, da funz ja bekanntlich der ProcessExist nur mit der DLLSaludos de Chile
WillieP.S. Ich hoffe die Beschreibung ist ok so, mein Englisch ist absolut miserabel, bevorzuge lieber Spanisch
Edit: hab die UDF als Datei angehangen, der Einfachheit halber
-
Hi und Hallo,
möchte nur schnell Danke sagenSaludos de Chile
Willie -
Hi und Hallo
Danke für den Hinweis auf eine weitere Möglichkeit des Doppelklick.Dennoch bleibt meine Frage unbeantwortet.
Funktioniert diese (meine Möglichkeit) nur auf meinem ME-System oder klappt das auch auf XP etc...
Saludos de Chile
Willie -
Hallo an alle AutoIt-Fanatiker und liebe Grüße aus Chile-
Seit kurzem beschäftige ich mich mit AutoIt und bin - natürlich - dabei auch auf Eure Seite gelangt. Das Thema Doppelklick wurde mehrfach angesprochen und doch, irgendwie, nie so richtig gelöst. Beim Spielen mit AutoIt ist mir aber aufgefallen, dass die List- / ListView aus selektieren und fokusieren besteht, also 2 Klicks.....
O.K. lange Rede kurzer Sinn, ich hab mal eine Spiel-Gui gebaut, bei der der Doppelklick funktioniert. Jetzt weiß ich aber nicht ob das eine Eigenart bei ME (Muy Extraño - ich weiß
) ist, oder ob das bei Xp usw. auch funktioniert...
Hier kommt mal der Code:Spoiler anzeigen
[autoit]<GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>
#include <GuiList.au3>
;~ /======== Doppelklick-Spiel-GUI ========\
;~ /======== AutoIt-Vers.: v3.2.0.1 ========\
;~ /======== Hinweis: die Anwendung läuft ohne Checkbox/TreeView ========\
;~ /======== dazu mÇussten mehr Abfragen eingebaut werden ========\
;~ /======== Saludos de Chile / Willie ========\
Opt ('MustDeclareVars', 1)Dim $msg,$Liste,$ListView, $Ausgang,$BTN1,$BTN2,$CurPos
[/autoit] [autoit][/autoit] [autoit]
GUICreate("Doppelklick die Lösung ?", 400, 230, -1, -1)
$Liste = GUICtrlCreateList("", 25, 40, 100, 120,$LBS_MULTIPLESEL)
GUICtrlCreateLabel("List",55,20,40,20)
GUICtrlSetFont(-1,11)
GUICtrlSetData($Liste, "Listeintrag 1|Listeintrag 2|Listeintrag 3|º(·¿·)º|";)
$ListView = GUICtrlCreateListView("List-View| ...", 140, 19, 200, 130)
_GUICtrlListViewSetColumnWidth ($ListView, 0, 150)
GUICtrlCreateListViewItem("List-View-Eintrag 1|(·¿·)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 2|(·¡-)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 3|(º.º)", $ListView)
GUICtrlCreateListViewItem("List-View-Eintrag 4|(_º_)", $ListView)
$Ausgang = GUICtrlCreateButton("E X I T", 360, 22, 20, 130,-1,$WS_EX_DLGMODALFRAME )
GUICtrlSetStyle($Ausgang,$SS_Center+$BS_MULTILINE )
$BTN1 = GUICtrlCreateButton("Liste Sel.", 25, 160, 100, 25)
$BTN2 = GUICtrlCreateButton("ListView Sel.", 240, 160, 100, 25)
GUISetState()
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $GUI_EVENT_CLOSE Or $msg[0] =$Ausgang
ExitLoop
Case $msg[0] = $GUI_EVENT_PRIMARYUP
;~ ==== Doppelklick (linke Maustaste) abprüfen ===
;~ ==== ACHTUNG: das funktioniert nicht mit CHeckbox/Trees ===
$CurPos=GUIGetCursorInfo()
Select
Case $CurPos[4] = $Liste
_GetListe()
Case $CurPos[4] = $ListView
_GetListView()
EndSelect
Case $msg[0] = $BTN1
$CurPos=GUIGetCursorInfo()
_GetListe()
Case $msg[0] = $BTN2
$CurPos=GUIGetCursorInfo()
_GetListView()
EndSelect
WEndFunc _GetListe()
[/autoit] [autoit][/autoit] [autoit]
Local $AnzSelect,$AnzTotal,$text,$cnt,$cntT
;~ == Liste muss MultiSel sein (ob das sinnvoll ist bei Doppelklick?) ===
$AnzSelect=_GUICtrlListGetSelCount($Liste) ; === ausgewählte ===
$AnzTotal =_GUICtrlListCount($Liste) ; === Gesamteintrsg Liste ===
$Text ="ausgewählte Einträge = "&$AnzSelect&" von Total = "&$AnzTotal&@cr
$cnt = _GUICtrlListGetSelItems($Liste) ; === Num ausgewählte ===
$cntT = _GUICtrlListGetSelItemsText($Liste) ; === Text ausgewählte ===
If Not IsArray($cnt) Then ; Liste meldet immer Array
msgbox(16,"Liste-Auswahl","keine Daten selektiert";)
Return
EndIf
If $CurPos[4] = $BTN1 Then ; Info aus GUIGetCursorInfo()
$text=$text&"*** manuelle Auswahl ***"&@cr&@cr
Else
$text=$text&"*** Doppelklick ***"&@cr&"------------------------"&@cr
EndIf
For $i = 1 To $cnt[0]
$text=$text&$cnt[$i]&". "&$cntT[$i]&@cr
Next
MsgBox(0, "Liste-Auswahl: ",$text)
EndFuncFunc _GetListView()
[/autoit]
Local $SatzSelect,$AnzTotal,$text
;~ ListView, wegen Doppelklick kein Status: MultiSel ! ===
$SatzSelect=_GUICtrlListViewGetCurSel($ListView) ; === ausgewählter Satz ===
If $SatzSelect = $LV_Err Then
msgbox(16,"List-View-Auswahl","keine Daten selektiert";)
Return
EndIf
$AnzTotal =_GUICtrlListViewGetItemCount($ListView) ; === Gesamteinträge ListView ===
$Text ="ausgewählter Eintrag = "&$SatzSelect&" von Total = "&$AnzTotal&@cr
If $CurPos[4] = $BTN2 Then
$text=$text&"*** manuelle Auswahl ***"&@cr&@cr
Else
$text=$text&"*** Doppelklick ***"&@cr&"------------------------"&@cr
EndIf
$text=$text&$SatzSelect&". "&_GUICtrlListViewGetItemText($ListView,$SatzSelect)
MsgBox(0, "List-View-Auswahl: ",$text)
EndFuncAuch hier der Hinweis: Die List/ListView arbeitet ohne Checkbox/TreeView. Sollte dies gewünscht werden müssen weitere Abfragen eingebaut werden, da diese Anweisungen den Klick sofort erkennen.
Freu mich auf Eure Antworten, hoffentlich positiv
Saludos de Chile
Willie(3x editiert unde jetzt klappts auch mit dem Spoiler/Autoit)