Habs oben editiert.
Beiträge von Kanashius
-
-
Das hab ich nicht bedacht...
Deshalb liebe ich Java und C... da hat man die Kontrolle^^
Dann wieder AutoIt benutzen und nicht dran denken, dass es da ja so komische sachen gibt, die Dinge machen, ohne das man denen das sagtDanke, dass ihr mich wieder auf die richtige Fährte gebracht habt
-
Wenn das hier das richtige ist: https://www.tlm-laser.com/laser-products…arking-software
Gibt es dort: Remote control options for greater automation and productivity (TCP/IP, Profibus, serial communication)
Man kann also bequem alles per TCP (Netzwerk-befehle) an das Programm schicken. Dann wird es dort verarbeitet.
Kommt man allerdings nur dran, wenn man die Software hat, glaub ich.Man baut dann eine TCP-Verbindung auf (in deinem Fall zu localhost). Dann sendest du an das Programm, was es machen soll (wie wird in der Dokumentation des Programms stehen), und es macht dann alles.
Theoretisch kannst du dir dann auch ne App schreiben, die das ganze vom Handy aus macht, uvm. -
Ich weiß nicht, ob das Problem nur bei mir auftritt, vielleicht könnt ihr es ja mal testen. (Ich nutze Autoit v3.3.14.2)
Ich hab für einen anderen Thread ein Kleines Beispielscript zum Resizen geschrieben (GUI wie Programmfenster ausführen).
Dabei ist mir ein seltsames Verhalten eines Buttons untergekommen. Beim resizen (Pfeile am Rand) wurde der Button beim kleiner machen richtig resized, Wurde das Fenster aber größer als der Anfangszustand, wurde das Control immer weiter nach links bewegt, bis es aus dem Fenster verschwand. Die größe passte, nur die Position hat irgendwie nicht das gemacht, was es soll. Obwohl die übergebenen Werte stimmten.
Ich hab dann natürlich erstmal die Werte ausgeben lassen, die wurden aber immer größer, nicht kleiner. Hab dann den Button durch nen Input ersetzt und siehe da, das Resizen funktioniert.
Ich glaub irgendwie nicht wirklich, dass der Fehler dann noch auf meiner Seite liegt.
Vielleicht mögt ihr es euch einmal ansehen und es ggf. auch ausführen:AutoIt
Alles anzeigen#include <WindowsConstants.au3> Global $width=800,$height=600 $Gui=GUICreate("Example",$width,$height,-1,-1,BitOR($WS_MINIMIZEBOX,$WS_MAXIMIZEBOX,$WS_SIZEBOX)) $ControlInput=GUICtrlCreateInput("",5,5,($width-15)/2,20) $ControlButton=GUICtrlCreateButton("Suchen",10+($width-15)/2,5,($width-15)/2,20) $ControlListview=GUICtrlCreateListView("",5,30,$width-10,$height-35) GUIRegisterMsg($WM_SIZE, '_refreshControlPos') GUISetState() while 1 if GUIGetMsg()=-3 then exit WEnd Func _refreshControlPos($hwnd, $iMsg, $iwParam, $ilParam) $width=WinGetPos($Gui)[2]-15 $height=WinGetPos($Gui)[3]-40 GUICtrlSetPos($ControlInput,5,5,($width-15)/2,20) GUICtrlSetPos($ControlButton,10+(($width-15)/2),5,($width-15)/2,20) GUICtrlSetPos($ControlListview,5,30,$width-10,$height-35) Return 'GUI_RUNDEFMSG' EndFunc
Wenn in Zeile 8 statt des Buttons ein Input erstellt wird funktioniert das Resizen.
Hoffe wir können den Fehler finden
MfG Kanashius
-
Wenn du noch $WS_SIZEBOX dazunimmst hast du auch die Pfeile am Rand zum ändern der Größe.
Du solltest dann aber auch bei den Controls
GUICtrlSetResizing ( controlID, resizing )
passend setzen, damit dort nur das passiert, was du willst.
Ich berechne meist sogar alle Controlpositionen anhand der Größe und Höhe der Gui, sodass ich bei dem Resize-Event eine Funktion aufrufe, die dann die Controls passend setzt. Ist recht viel Overhead, dafür hat man die absolute KontrolleBeispiel:
AutoIt
Alles anzeigen#include <WindowsConstants.au3> Global $width=800,$height=600 $Gui=GUICreate("Example",$width,$height,-1,-1,BitOR($WS_MINIMIZEBOX,$WS_MAXIMIZEBOX,$WS_SIZEBOX)) $ControlInput=GUICtrlCreateInput("",5,5,($width-15)/2,20) $ControlButton=GUICtrlCreateInput("Suchen",10+($width-15)/2,5,($width-15)/2,20) $ControlListview=GUICtrlCreateListView("",5,30,$width-10,$height-35) GUIRegisterMsg($WM_SIZE, '_refreshControlPos') GUISetState() while 1 if GUIGetMsg()=-3 then exit WEnd Func _refreshControlPos($hwnd, $iMsg, $iwParam, $ilParam) $width=WinGetPos($Gui)[2]-15 $height=WinGetPos($Gui)[3]-40 GUICtrlSetPos($ControlInput,5,5,($width-15)/2,20) GUICtrlSetPos($ControlButton,10+(($width-15)/2),5,($width-15)/2,20) GUICtrlSetPos($ControlListview,5,30,$width-10,$height-35) Return 0 EndFunc
Edit: Selbst produzierten Bug beheben
-
Zeile 89-93 erstellen die Liste. Dort kannst du ansetzen, anders vorzugehen. Dann einfach das "<ul>HTMLDATA</ul>" durch "<table>HTMLDATA</table>" ersetzen (Zeile 12).
In Zeile 89-93 dann statt alles in <li> ne tabelle aufbauen (<tr></tr> ergibt eine zeile, in die tr für jeden eintrag nen <td></td>)
z.B.:AutoIt
Alles anzeigenlocal $cols=6 $str="" for $i=0 to UBound($ar)-1 step $cols $str&="<tr>" for $j=0 to $cols-1 step 1 if $i+$j>UBound($ar)-1 then ExitLoop $str&="<td>"&$ar[$i+$j]&"</td>" GUICtrlSetData($list,$ar[$i+$j]) next $str&="</tr>" next
Wenn du $cols anpasst ändert sich die Anzahl der Spalten.
Ist einfaches HTML. Wenn du die Tabelle anders aussehen lassen willst kannst du dir die <style></style> ansehen. (Google ist dein Freund, einfach nach HTML und CSS suchen). -
Das ist doch einfach. Im vergleich zu anderen Hochsprachen...
Noch einfacher geht nicht. -
-
Naja. Du musst auch die Controls in EINEM Fenster erstellen und beim Klicken auf einen Button ALLE Controls ausblenden, und die, die bleiben sollen einblenden.
Siehe dir für weitere Infos die AutoIt Hilfe an. Dort siehst du Beispiele für die genannte Funktion. Ohne die Hilfe zu lesen kommt man nicht sehr weit.
Bei guictrlsetstate steht zum Beispiel: GUICtrlSetState ( controlID, state )
Du musst also als erstes das Control und als 2tes den anzunehmenden Status übergeben.Solltest du den ganzen kram, den ich grad geschrieben habe nicht verstanden haben, sieh dir die Grundlagen an.
z.B.: Buch -
Das liegt daran, dass der Debugmodus aktiviert ist. Wenn du ohne den Editor compilierst schmiert dein Programm vermutlich einfach an der Stelle ab, wo du diese Zeile aufrufst.
Der Editor ist so nett, dir zu sagen: Guck dir die Zeile doch nochmal an, da stimmt was nicht.
Überleg nochmal, ob $result dort, wo du es abfragst wirklich verfügbar ist und ob es auch wirklich ein Array ist.
Mehr kann man da ohne Quellcode auch nicht zu sagenFalls du den Fehler nicht selbsr findest, mach doch einfach einen Thread dazu auf
-
Klar. Die Controls in einem Fenster erstellen und passend mit guictrlsetstate() sichtbar und unsichtbar machen.
($GUI_HIDE/$GUI_SHOW) -
Bei soetwas halte ich den OnEventMode für besser. Dann muss man nicht mit den Schleifen aufpassen.
AutoIt
Alles anzeigen#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode",1) Global $width=800,$height=600 Global $HinweisTableGui=0,$MainGui=0 $MainGui = GUICreate("Hilfe",$width,$height) GUICtrlCreateButton("Hinweistabelle", 32, 24, 161, 81) GUICtrlSetOnEvent(-1,"_HinweisTable") GUICtrlCreateButton("Angebote", 209, 22, 161, 81) GUICtrlSetOnEvent(-1,"") GUISetOnEvent($GUI_EVENT_CLOSE,"_main_close") GUISetState(@SW_SHOW) While sleep(10) WEnd Func _HinweisTable() if $HinweisTableGui=0 then $HinweisTableGui = GUICreate("Hinweistabelle", 400,400,-1,-1,-1,-1,$MainGui) GUISetOnEvent($GUI_EVENT_CLOSE,"_HinweisTable_close") GUICtrlCreateButton("show me", 32, 24, 161, 81) GUICtrlSetOnEvent(-1,"") GUISetState(@SW_SHOW) else WinActivate($HinweisTableGui) endif EndFunc Func _HinweisTable_close() GUIDelete($HinweisTableGui) $HinweisTableGui=0 EndFunc Func _main_close() exit EndFunc
MfG Kanashius
-
bevor du das erste mal $file benutzt ne abfrage nach FileExists($file).
-
So funktionierts:
AutoIt
Alles anzeigen#include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> DriveMapAdd("M:", "\\XXXXXX\D$\123", $DMA_DEFAULT, "blablabla", "blub") ;Mapping networkdrives $aFolderList=_getFoldersWithSizeFromDir("M:\") _ArrayDisplay($aFolderList) Func _getFoldersWithSizeFromDir($path) $aFolders=cdeDir($path);Wir nehmen hier die Rückgabe der Funktion als neue Variable global $aResult[UBound($aFolders)-1][2] For $i = 1 To UBound($aFolders)-1 step 1 $aResult[$i-1][0]=$aFolders[$i] $aResult[$i-1][1]=_getSizeAsText(DirGetSize($aFolders[$i]));das alte war der freie speicher, nicht der genutzte. Next return $aResult EndFunc Func cdeDir($path) Local $aFileList = _FileListToArray($path, "*", 2, "True") ;List folders only If @error = 1 Then MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.") Exit EndIf If @error = 4 Then MsgBox($MB_SYSTEMMODAL, "", "No dir(s) were found.") Exit EndIf ;Zurückgeben der Ordner return $aFileList EndFunc ;==>cdeDir Func _getSizeAsText($bytes,$decSpaces=2) if $bytes<1024 then return $bytes&" Byte" elseif $bytes/1024<1024 then return Round($bytes/1024,$decSpaces)&" KByte" elseif $bytes/1024/1024<1024 then return Round($bytes/1024/1024,$decSpaces)&" MByte" elseif $bytes/1024/1024/1024<1024 then return Round($bytes/1024/1024/1024,$decSpaces)&" GByte" elseif $bytes/1024/1024/1024/1024<1024 then return Round($bytes/1024/1024/1024/1024,$decSpaces)&" TByte" else return Round($bytes/1024/1024/1024/1024,$decSpaces)&" TByte" endif EndFunc
-
Mit welchem Programm soll das Mikro verwendet werden?
Allgemein Windows? Wenn ja muss ja das Standartgerät geändert werden.
Skype, Teamspeak,... hat eigene Einstellungen. Da müsste man ggf. suchen.Sonst sieh dir das mal an: http://www.microsoftnow.com/2013/05/creati…in-windows.html
-
Dann muss das sleep raus.
Kannst ja zum Beispiel ne Variable setzen, dann werden erst alle ispressed abgerufen und danach abgearbeitet.
Ohne den Code ist das aber alles
Gib uns Code und nenn den Anwendungsfall, dann kann man dir besser helfen.
(Siehe XY-Problem schon mehrfach im Forum erwähnt) -
Setz die ispressed in ne whileschleife hintereinander. ist nicht geleichzeitig, aber schnell hintereinander -> nahezu gleichzeitig.
Gleichzeitig geht eh maximal so viel wie man Kerne im Prozessor hat und selbst dann nicht absolut gleichzeitig
Da HotKeySet Eventbasiert ist kannst du davon auch mehrere definieren. Mehrmals die gleiche geht halt nicht. -
Ja, genau das meinte ich, wollte nicht sowas kompliziertes schreiben
-
Spiel sieht witzig aus. Bin alleine, konnte deshalb nicht so gut testen
2 Verbesserungsvorschläge:
1. 2 Richtungen gleichzeitig bewegen. Manchmal ist es recht schwer, genau den eingang zu finden. Wäre einfacher, einfach unten und rechts gleichzeitig zu drücken, und der geht dann nach unten rechts. Kann man ja die hälfte für beide richtungen nehmen, oder ähnliches, damit man dabei nicht schneller ist
2. Nutze bei den _isPressed den 2ten Parameter.Im Beispiel der AutoIt Hilfe siehst du wie, ansonsten wird bei jedem aufruf die DLL gestartet, was das spiel deutlich verlangsamen kann. -
Nun. POST kann man nur mittels formularen (oder nachgebauten http requests) an den Server senden.
Sind es nur wenige daten würde ich dir GET empfehlen. Maximale möglichkeiten: http://stackoverflow.com/questions/2659…ttp-get-request
(Bei GET wird die Website aufgerufen, dann nen ?variable="blub"&variable1="1234"&variable2="5678" gesendet. Mit $_GET("variable1") bekommst du den inhalt (evtl. mit isset($_GET("")) prüfen, ob die Variable vorhanden ist.)
Ansonsten POST nachbauen, oder eine Seite mit nem Formular erstellen, dort die Daten eintragen und submitten.POST senden mit HTTP (Quelle
AutoIt
Alles anzeigen#include <IE.au3> #include <http.au3> $Header = "Content-Type: application/x-www-form-urlencoded" $Host = "www.sabbgrafix.com" $File = "/welcome.php" $URL = "http://" & $Host & $File $PostData = "name=steve" $Socket = _HTTPConnect($Host) _HTTPPost($Host, $File, $Socket, $PostData) $recv = _HTTPRead($Socket,0) MsgBox(0,"","BODY: "&$recv&" ERROR: "&@error) _HTTPClose($Socket)
Post auslesen mit $_POST["name"]:
Datei Lesen/Schreiben in PHP:
PHP
Alles anzeigen//Datei öffnen (als Array) $DownloadList = file("php/DownloadCounter.txt"); //In Datei schreiben (überschreiben) $fp = fopen('php/DownloadCounter.txt', 'w'); //Array durchlaufen und in die Datei schreiben foreach($DownloadList as $values){ if($values!="") fputs($fp, $values); } fclose($fp);
Müsste das wichtigste sein, kannst ja schreiben, wenn noch was fehlt
Hab grad meine Webside von PHP auf JS umgestellt, weil PHP sehr Serverlastig ist und das laden bei Kostenlosen Hostern (BPlaced) dann nicht unbedingt schnell ist.
Mal sehen, inwiefern JS besser ist ;D -