Musst im Taskmanager Prozesse aller Benutzer anzeigen lassen.
(Falls das bei nicht Win7 Systemen anders ist lass ich mich gerne eines besseren Belehren :))
Beiträge von Kanashius
-
-
Offtopic:
Spoiler anzeigen
Ich denke, das ziemlich viel von den Leuten (Kindern) weggenommen wird. Die müssen sich garnicht drum kümmern. Wenn mans wissen muss, kann mans ja googlen (seh ich bei vielen Sachen ehrlichgesagt auch so :D). Dadurch wird man nicht unbedingt schlauer, aber man kanns dann ja wieder nachschauen. Gerade an Unis kann ich nicht nachvollziehen, warum auf Klausuren beharrt wird. Ich finde, das geht vollkommen daran vorbei, etwas zu lernen. In den Klausuren schreiben meiner Erfahrung nach (in vielen Informatikkursen) die gute Noten, die gut auswendig lernen können. Kurz vor der Klausur alles reinhauen, schreiben, gute Note bekommen, vergessen. Lernen tut man dabei nicht viel. Da finde ich es deutlich sinnvoller, wenn es so wie bei einem Kurs (Einführung C/C++) läuft: Anspruchsvolle Übungsaufgaben mit Noten, oft auch 10 Stunden+ aufwand die Woche, am Ende keine Klausur, sondern ein Praktikum (2 Wochen). In dem Kurs hab ich deutlich mehr mitgenommen, als in den andern. C/C++ macht mir jetzt auch keine großen Probleme mehr. Aber die ganzen Modelle, die in einer der Grundveranstaltungen dran kam, kein Plan mehr, müsste ich googlen...Was Technik angeht fällt mir auf, dass immer mehr möglichkeiten wegfallen und alles dahin geht, dass man nichts mehr selber machen muss/kann. Gerade aufm Tablet Android 6 drauf, schon sind die meisten Einstellungen weg. Kaum noch möglichkeiten, dort genau einzustellen, wie man was haben möchte... ABER es ist jetzt übersichtlich (ich würd sagen überschaubar), was man machen kann. Einziges Plus ist das Einstellen der Berechtigungen.
Was Automechaniker angeht: Naja, was soll er auch machen. Die meisten Teile im Auto sind so, dass sie nur ausgetauscht werden können. (Regt sich mein Vater immer drüber auf. Früher konnte er selbst rumschrauben und viel reparieren, aber durch den ganzen Technikkram geht das nicht mehr). Aber du hast schon recht, viele wenden das dann auch an, wenn man es auch reparieren könnte, weil ist ja schneller und teurer->mehr Verdienst).
Hatte ich auch mal. Festplatte ging nicht mehr. Ich habs hinbekommen, sie an den PC anzuschließen und auf die Daten zuzugreifen. Hab die nach Mediamarkt gebracht. Hab sogar gesagt, dass ich die an einen anderen Rechner anschließen konnte, und sie dort funktioniert. Was haben die behauptet? Die sei kaputt und ich müsste ne neue kaufen. (Ist schon 5-6 Jahre her, damals kannte ich mich nicht so gut aus). Die Festplatte läuft heute noch, bzw. wieder. Hab ja mittlerweile mehr Plan von sowas und konnte dann schließen, dass nur die "Partitionstabelle" beschädigt war. Aber Mediamarkt will ja auch verdienen Mittlerweile gebe ich an solche Läden nurnoch was, wenn noch Garantie drauf ist, dann geht das reparieren nämlich komischerweise meistens...Ich könnte da noch viel mehr zu schreiben, aber mir fehlen grad Zeit und Nerven.
-
-
Nein. Er hat keinen Designer verwendet. Sieht man daran, dass die Controls in nem Array erstellt werden. Sowas ist immer sehr sinnvoll, wenn man sich wiederholende Strukturen hat.
Allgemein sind Designer in AutoIt nicht allzusehr zu empfehlen, wenn man nicht mal eben schnell was zusammenbasteln will, oder die Controls noch nicht kennt.
Das liegt aber daran, dass es keine Layouts gibt, die zum Beispiel beim resizen,... viel Vereinfachen.
Das Prinzip könnte man aber mal nachbauen... Wäre mal ne Idee für ne UDF. So immer weiter Elemente verschachteln,... werd ich mir mal überlegen -
Bei mir läuft das mit 3-5% CPU Auslastung komplett flüssig.
(Intel Xeon CPU E3-1231 v3 (3.4GHz)) -
Naja, dann der Interpreter, was ich damit meine: AutoIt Script ausführen ohne AutoIt.exe
Kannst ja das mal probieren -
Dann speicher doch alle Controls in ein Array und Registriere Tastendrücke (GuiRegisterMsg()) oder GuiAccelerators). Dann kannst du auf die Pfeiltasten eine Funktion legen. Dann musst du dir nurnoch merken, welches gerade den Fokus hat und kannst mit links oder rechts (oder oben, unten) den Fokus auf das nächste Element setzen. Man könnte auch noch ControlGetPos über das Array laufen lassen und dann sortieren, sodass die richtig sortiert sind. gegebenenfalls auch mit nem 2D-Array, sodass die oben und unten tasten auch nach oben und unten gehen.
-
Such dir 2 eindeutige begrenzungen (z.B. [autoitCode]CODE[/autoitCode]).
Dann kannst du durch die Textdatei gehen und alles zwischen den Tags als Code nehmen und ausführen.
Zum ausführen einzelner Funktionen kann man ja eval() nutzen. Ansonsten, einfach durch den Interpreter jagen. Hab ich mich noch nie mit befasst^^
Wenn du variablen über mehrere solcher CODE-Tags nutzen willst musst du dir da auch noch was einfallen lassen. -
Dafür hab ich grad keine Lösung, aber was hälts du davon die Buttons hinter ein Bild zu packen (dadurch unsichtbar), oder einfach außerhalb des gezeichneten Fensterbereches. Wenn der Button den Fokus bekommt änderst du das Bild zu einem Bild mit Highlight. Das Bild bekommt zwar nie den Fokus, aber wir simpulieren das dann ja. Musst nur die Bilder und Buttons in der Richtigen Reihenfolge erstellen.
-
Ich geh mal davon aus, dass du eine Website automatisieren willst.
Dort wird beim Klick auf den Link eine Javascript-funktion aufgerufen. Das geht manuell mit _IENavigate($oIE,"javascript:callLogout();").korrigier mich, wenn ich mich irre.
-
Code am besten in den ScriptTag packen, mit Sprache Autoit (</> oben in der Leiste beim Text verfassen.).
Hab herausgefunden, dass der Screensaver unterbrochen wird, wenn ein neues Fenster erscheint. Also erstell ich eins, lass es kurz anzeigen und lösch es dann direkt wieder. Bisher hab ichs dabei noch nicht gesehen (Windows 7)
(Wollte mir die Prozesse auflisten, als das _arraydisplay-Fenster kam, war der Bildschirmschoner unterbrochen :))Server-Script:
AutoIt
Alles anzeigen#include <MsgBoxConstants.au3> #include <array.au3> UDPStartup() OnAutoItExitRegister("_exit") ;Hostname ist der ComputerName im Netzwerk local $IpAdress=@IPAddress1,$Hostname="",$Port=65432 ;IP des Hostnamens, wenn vorhanden $IpAdress=_getIpAdressFromHost($Hostname,$IpAdress) ;Lausche auf Eingehende verbindungen $socket=UDPBind($IpAdress,$Port) If @error Then ; Someone is probably already binded on this IP Address and Port (script already running?). Local $iError = @error MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Could not bind, Error code: " & $iError) EndIf while Sleep(10) $recv=UDPRecv($socket,9999,2) if $recv<>"" then _gotMessage($recv[0],$recv[1],$recv[2]) endif WEnd Func _gotMessage($message,$ipFrom,$portFrom) Switch $message case "interruptScreensaver" _interruptScreensaver() case "END" _exit() EndSwitch EndFunc Func _exit() UDPCloseSocket($socket) UDPShutdown() exit EndFunc Func _interruptScreensaver() $handle=WinGetHandle("[active]") $tmpGui=GUICreate("") GUIDelete($tmpGui) WinActivate($handle) EndFunc Func _getIpAdressFromHost($host,$ip) local $IpAdress if $Hostname<>"" then $IpAdress=TCPNameToIP("Patrick-PC") if $IpAdress="" then MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Name: "&$Port&" is not Found!"&@crlf&"Error: "&@error) _exit() endif else $IpAdress=$ip endif return $IpAdress EndFunc
Client Script:AutoIt
Alles anzeigen#include <MsgBoxConstants.au3> UDPStartup() OnAutoItExitRegister("_exit") local $IpAdress=@IPAddress1,$Hostname="",$Port=65432 local $width=120,$height=70 $IpAdress=_getIpAdressFromHost($Hostname,$IpAdress) $Gui=GUICreate("",$width,$height) ;$InputTimer=GUICtrlCreateInput("5",5,5,$width-10,20) $ButtonInterrupt=GUICtrlCreateButton("Stop Screensaver",5,30-25,$width-10,25) $ButtonStop=GUICtrlCreateButton("Stop Server",5,60-25,$width-10,25) GUISetState() While 1 Switch GUIGetMsg() case -3 _exit() case $ButtonInterrupt ;$wait=Number(GUICtrlRead($InputTimer))*1000 ;Sleep($wait) _sendMessageToServer("interruptScreensaver") case $ButtonStop _sendMessageToServer("END") EndSwitch WEnd Func _sendMessageToServer($message) $socket=UDPOpen($IpAdress,$Port) If @error Then ; The server is probably offline/port is not opened on the server. $iError = @error MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not connect, Error code: " & $iError) Return False EndIf UDPSend($socket,$message) If @error Then $iError = @error MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not send the data, Error code: " & $iError) Return False EndIf UDPCloseSocket($socket) EndFunc Func _exit() UDPShutdown() exit EndFunc Func _getIpAdressFromHost($host,$ip) local $IpAdress if $Hostname<>"" then $IpAdress=TCPNameToIP("Patrick-PC") if $IpAdress="" then MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Name: "&$Port&" is not Found!"&@crlf&"Error: "&@error) _exit() endif else $IpAdress=$ip endif return $IpAdress EndFunc
Ich habe übrigens UDP verwendet, da TCP eher darauf ausgelegt ist, größere Datenmengen zu verschicken, oder beständig Daten hinundherzuschieben. Um nur einmal kurz den Anstoß zu geben, dass er was bestimmtes machen soll, sollte man UDP nutzen. Oder Allgemein, wenn man nur eben eine Anfrage hat,...
Mit freundlichen Grüßen, Kanashius
-
Das Script klappt alle gefundenen Begriffe auf. Musst die Funktionen _GUICtrlTreeView_SetItemFound,_GUICtrlTreeView_ResetItemFound anpassen, um die Farbe zu ändern (weiß grad nicht wie das geht)
Kannst auch die Trefferart ändern in der Funktion _searchInTreeViewMatches($TreeView,$item,$text). (Momentan standart stringinstr)AutoIt
Alles anzeigen#include <TreeViewConstants.au3> #include <StructureConstants.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <FontConstants.au3> #include <GuiTreeView.au3> local $width=600,$height=800 local $arNames=["johann","marius","hanna","dominik","jonas","anna"] Global $__TVITEMFOUND = 2000 $Gui=GUICreate("",$width,$height) $TreeView=_GUICtrlTreeView_Create($Gui,5,5,($width-10)/2,$height-10) $inputCountItems=GUICtrlCreateInput("50",10+($width-10)/2,5,($width-20)/4,25) $buttonNeu=GUICtrlCreateButton("Neu",10+(($width-10)/2)*1.5,5,($width-20)/4,25) $inputSuchtext=GUICtrlCreateInput($arNames[0],10+($width-10)/2,35,($width-20)/4,25) $buttonSuchen=GUICtrlCreateButton("Suchen",10+(($width-10)/2)*1.5,35,($width-20)/4,25) GUISetState(@SW_SHOW) _fillRandomWithNames(Number(GUICtrlRead($inputCountItems))) while 1 $msg=GUIGetMsg() Switch $msg case -3 exit Case $buttonNeu _GUICtrlTreeView_DeleteAll($TreeView) _fillRandomWithNames(Number(GUICtrlRead($inputCountItems))) Case $buttonSuchen _searchInTreeViewStart($Treeview,GUICtrlRead($inputSuchtext)) _WinAPI_RedrawWindow($Treeview) EndSwitch WEnd Func _fillRandomWithNames($items) _GUICtrlTreeView_BeginUpdate($TreeView) $parent=-1 local $arItems[$items+2] $arItems[0]=0 for $i=0 to $items step 1 $parent=$arItems[Random(0,$i,1)] if $parent=0 then $arItems[$i+1]=_GUICtrlTreeView_Add($TreeView,0,$arNames[Random(0,UBound($arNames)-1,1)]) else $arItems[$i+1]=_GUICtrlTreeView_AddChild($TreeView,$arItems[Random(0,$i,1)],$arNames[Random(0,UBound($arNames)-1,1)]) endif next _GUICtrlTreeView_EndUpdate($TreeView) EndFunc Func _searchInTreeViewStart($Treeview,$text) _GUICtrlTreeView_BeginUpdate($TreeView) $item=_GUICtrlTreeView_GetFirstItem($Treeview) while $item<>0 if _searchInTreeViewMatches($TreeView,$item,$text) then _GUICtrlTreeView_SetItemFound($TreeView,$item) else _GUICtrlTreeView_ResetItemFound($TreeView,$item) endif if _searchInTreeView($TreeView,$text,$item) then _GUICtrlTreeView_Expand($TreeView,$item,true) else _GUICtrlTreeView_Expand($TreeView,$item,false) endif $item=_GUICtrlTreeView_GetNext($TreeView,$item) WEnd _GUICtrlTreeView_EndUpdate($TreeView) EndFunc Func _searchInTreeView($Treeview,$text,$item) $founded=false $child=_GUICtrlTreeView_GetFirstChild($TreeView,$item) $count=0 While $child<>0 $count+=1 if _searchInTreeView($TreeView,$text,$child) then $founded=true _GUICtrlTreeView_Expand($TreeView,$child,true) else _GUICtrlTreeView_Expand($TreeView,$child,false) endif if _searchInTreeViewMatches($TreeView,$child,$text) then $founded=true _GUICtrlTreeView_SetItemFound($TreeView,$child) endif $child=_GUICtrlTreeView_GetNextChild($TreeView,$child) WEnd return $founded EndFunc Func _searchInTreeViewMatches($TreeView,$item,$text) return StringInStr(_GUICtrlTreeView_GetText($TreeView,$item),$text) EndFunc Func _GUICtrlTreeView_SetItemFound($hWnd, $Item) ;FARBIG MACHEN EndFunc Func _GUICtrlTreeView_ResetItemFound($hWnd, $Item) ;FARBIG ZURÜCKSETZEN EndFunc
MfG Kanashius -
-
Wenn du die Funktion der Tasten nicht einschränken willst nutze einfach _IsPressed. Das funktioniert auch ohne GUI, Immer, nur dass es halt anderen Programmen die Taste nicht wegnimmt, so wie HotKey. Wenn dort mehrere Programme "lauschen" stört es auch nicht.
Zu verhindern, dass das aktive Programm die Tastenkombination nimmt wird dagegen dann schwerer, als mit HotkeySet z.B.. -
Naja. Der geht doch aus, sobald die Maus bewegt wird. Warum also schwer machen? Einfach die Maus bewegen.
AutoItFunc _interruptScreenSaver() $arMPos=MouseGetPos() ;Maus bewegen um 10 Pixel nach unten rechts MouseMove($arMPos[0]+10,$arMPos[1]+10,1) ;Falls die Maus unten rechts war konnte sie nicht bewegt werden, bewegen wir sie nach oben links MouseMove($arMPos[0]-10,$arMPos[1]-10,1) ;Maus zurücksetzen MouseMove($arMPos[0],$arMPos[1],1) EndFunc
Was TCP angeht: Sieh dir mal in der Hilfe die Beispiele zu TCPAccept, TCPSend, TCPConnect,... an, dort sind komplette Server und Client Scripte zu finden. Wenn du da mehr wissen willst, mach doch bitte einen eigenen Thread auf. Der hier hat damit ja nicht wirklich was zu tun.
-
Naja. Wenn du Childs haben willst musst du denke ich auch _guictrltreeview_getnextchild(),... benutzen.
Bin grad inner Uni auf Linux, wenn ich zuhause bin guck ich mal drüber. -
Wenn du magst, und noch niemanden gefunden hast, kannst du mich gerne mit mehr Informtionen anschreiben.
(Zum Beispiel welches Programm,...) -
Sag mal, was du als Eingabe (insgesamt) bekommst, und was das ergebnis sein soll. Momentan siehts für mich so aus, als würdest du da nen riesen umweg gehen.
Wenn du z.b. Sagen willst Note 1: 100-90 Punkte, Note 2: 90-70 Punkte,... (oder mit Prozentzahlen und du gibst irgendwo die gesamte Punktzahl an.)
Dazu dann eine Liste, in die du die Punkte für die Schüler eintragen kannst, und dann soll der die Noten angeben. Hab ich das richtig verstanden?
Wenn ja, nimm die Noten als Array und geh für jeden Schüler dieses Array durch. Müsste schneller sein.Falls die annahme von mir falsch ist, korrigier mich bitte, und schreib mal so wie ich jetzt hier hin, wie das aussehen soll.
Wenn man wissen will, in welchem Bereich etwas liegt:
AutoIt
Alles anzeigenlocal $array[6]=[40,50,70,80,90] MsgBox(48,"",_getNote($array,35)) MsgBox(48,"",_getNote($array,41)) MsgBox(48,"",_getNote($array,55)) MsgBox(48,"",_getNote($array,78)) MsgBox(48,"",_getNote($array,88)) MsgBox(48,"",_getNote($array,92)) Func _getNote($ar,$points) local $count for $count=0 to UBound($ar)-1 step 1 if $points<$ar[$count] then ExitLoop else if $count=UBound($ar)-1 then ExitLoop endif endif next return UBound($ar)-$count EndFunc
-
Naja. Wenn du die länge der Inventareinträge kennst: dann muss die 03 ja immer am Anfang stehen.
Normal ließt man solche Dateien Byteweise ein, oder Binär... mit Strings wirds blöd.
Naja. Ich würde empfehlen, dass du Zeilenweise einließt. Es scheint ja so zu sein, dass die Datei durch Zeilenumbrüche getrennt ist. Dann splittest du die Anzahl Bytes, bis am Anfang die 03 steht.
Mit AutoIt hab ich sowas noch nie gemacht/nie gebraucht... hab immer Java oder C/C++ genommen
Ich denke, andere kennen sich damit besser aus. -
Ich glaube, die Anleitung hab ich nicht gelesen
-
Sieht sehr interessant aus. Ich habe nur Tastaturen, funktioniert damit aber schonmal gut
Was ich noch empfehlen würde: setz in die bat Datei(-en) am Ende ein pause, damit man die Ausgabe lesen kann. Beim ersten start dachte ich nur: Da muss ja nen Fehler aufgetreten sein, so schnell, wie das fertig war. Pause eingefügt, nachgesehen, ne alles richtig, ABER: Man muss neustarten. Die Info fehlte dann erstmal (auch wenn man es sich denken kann ;)).