schau mal in dem Beispiel im Post obendrüber....ich editiere immer viel zu langsam^^
Beiträge von Andy
-
-
Hi,
echtzeit^^, der war gut
mach doch eine Endlosschleife, prüfe den Zeitstempel der Logdatei, wenn der sich ändert dann Daten des Logs in die Liste einlesen....Zitatohne es vorher in eine datei umzuleiten
dafür gibts schon massig Lösungen, schau mal nach stdoutread, bsp:
Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Global $line$Console = Run(@ComSpec & " /c ping http://www.autoit.de", @ScriptDir, @SW_hide,$STDERR_CHILD + $STDOUT_CHILD)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$line &= StdoutRead($Console)
If @error Then ExitLoop
WEndMsgBox(0, "STDOUT gelesen:", $line)
[/autoit] -
Zitat
Ich finde die 2^$n Methode ürbigens ziemlich effektiv.
Diese Methode ist nur dann effektiv, wenn du damit irgendetwas einsparen kannst, Speicherplatz, Zeit usw.
Aber nur "weil es geht" einen lesbaren Ausdruck in etwas (auf Anhieb) unleserliches zu verwandeln um es danach wieder in lesbare Daten zu transferieren ist suboptimal.
Ich versuche daher wenn es weder auf Zeit noch auf Platz ankommt, so lesbar wie möglich zu Scripten.
Dann können auch ggf. andere etwas damit anfangen. -
Zitat
Dann lass ich die Ecken mit AutoIt "suchen"
schau mal da PushTheButton
-
Hi,
die Grafik ist ja KLASSE!
Und die Steuerung fühlt sich auch sehr "smooth" an, das Hintergrundscrollen klappt doch einwandfrei?! -
Hi,
wenn du deine GUI mit KODA erstellst, musst du darauf achten, daß du sofort nach dem Erstellen des Tabs die Liste dort einfügst. Erst danach die weiteren Tabs erstellen! -
Hi, quatsch, die eigentliche Arbeit (das Scannen) macht der Copyshop für kleines Geld sauschnell mit nem extra dafür gemachten Scanner^^. Lass dir (50.000 Seiten omg^) einige DVD´s mit den gescannten Seiten brennen oder schieb sie auf deinen webspace oder ftpserver. Wenn das prog einmal funzt, dann lass es einfach auf die 50000 Seiten los.....
Und teil die Aufgaben auf wenn sich schon Leute anbieten. Scans (bilder) normalisieren, "geraderücken" und die ganzen anderen vorbereitenden Sachen lässt man von einem der 27453 Freeware-Programme machen, die dafür da sind ^^. selbst einen "schiefgescanntenBildergeraderückAlgorithmus" in AutoIt tut man sich nicht an!!!
Zeig doch mal eine der Seiten, damit ich schon was zu tun habe... -
...eigentlkich ging es ja um die WM_NOTIFY...
hier mal ein Beispiel:Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <WindowsConstants.au3>;Global Const $WM_NOTIFY = 0x004E ; removed to conform to Autoit build 3.2.10.0
[/autoit] [autoit][/autoit] [autoit]
Global $DoubleClicked = FalseGUICreate("Double Click/Right Click Demo", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY");create listboxt
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$ListViewID = GuiCtrlCreateListView("List Column", 10, 20, 380, 250);******************Rightclick Menu*************
[/autoit] [autoit][/autoit] [autoit]
$menu1=GUICtrlCreateContextMenu ($ListViewID)
$delete=GUICtrlCreateMenuitem("Delete" , $menu1)
$play=GUICtrlCreateMenuitem("Play" , $menu1)
$info=GUICtrlCreateMenuitem("Info" ,$menu1);~~~~~~~~~~~~~~~Using Loop Method~~~~~~~~~~~~~~
[/autoit] [autoit][/autoit] [autoit];***************End Rightclick Menu************
[/autoit] [autoit][/autoit] [autoit];this builds the items in your list box
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 10
GuiCtrlCreateListViewItem("Item " & $i, $ListViewID)
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$hGui = GUIGetMsg()
Sleep(10)
Switch $hGui
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $DoubleClicked Then
DoubleClickFunc()
$DoubleClicked = False
EndIf
Select
Case $hGui = $delete
delete()
Case $hGui = $play
play()
Case $hGui = $info
info()
EndSelect
WEndFunc DoubleClickFunc()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "OK ", "You Double Clicked: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFuncFunc WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $ListViewID And $code = -3 Then $DoubleClicked = True
Return $GUI_RUNDEFMSG
EndFuncFunc play()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "You Right Clicked ", "Play: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFuncFunc delete()
[/autoit]
MsgBox(64, "You Right Clicked ", "Delete: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFunc
Func info()
MsgBox(64, "You Right Clicked ", "Info For: " & GUICtrlRead(GUICtrlRead($ListViewID)) & " ?")
EndFunc -
Hi,
schau dir mal in der Hilfe das Beispiel zum _GUICtrlListView_ClickItem() an. Dort ist vor allem der Bereich im WM-NOTIFY interessant, wo es um die Abfrage des $RM-RClick geht....
Das ist die Nachricht, bei der du einhaken kannst... -
Zitat
Also, bei ICQ geht es ja
Das Problem ist, daß viele dieser "Programme" eigene Grafiktreiber haben um damit Sachen zu machen, die mit dem "normalen" Windows-API so nicht machbar sind, oder für das es einfach zu langsam ist (GDI+ ist da ein gutes Beispiel)
Daher nutzen auch viele Grafik/Video-Programme (auch Spiele) den sog. "overlay"-Modus. Dabei werden Grafiken auf dem Bildschirm angezeigt, von denen das BS überhaupt keine Ahnung hat. -
Dann ändere doch einfach das Script ab, daß damit auch "Bilder" transparent übereinander gelegt werden können....
-
aaahhhh, jetzt wirds hell^^
Ja natürlich musst du dann ein entsprechend grösseres Bild erstellen, das bissl Fingerabzählen wg der Größe sollte aber kein Problem sein^^
Als "Hintergrund" nimmst du dann einfach ein GUI-Fenster (nicht angezeigt) in der entsprechenden Größe. -
Ja natürlich ist das möglich, Bilder einzulesen und die darin enthaltenen Daten wieder zu entschlüsseln.
Am günstigsten ist es natürlich die verschlüsselten Daten UNSICHTBAR im Bild zu plazieren.
Oder willst du einfach nur ein "verschlüsseltes" Bild mit einem entsprechenden Algorithmus entschlüsseln und anzeigen? -
Hallo Anno2008,
du brauchst keine GUI um das Bild zu drehen, und auch kein "leeres" Bid.
Ablauf:
-Die Daten aus deiner Bitmap clonen
-Aus der Bitmap ein Graphiccontext machen (Leinwand), in das man zeichnen kann
-Matrix vorbereiten und drehen
-Clone in den Context zeichnen (dabei wird er gedreht)
-Leinwand speichernSpoiler anzeigen
[autoit]#include <GDIPlusConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
Opt('MustDeclareVars', 1)Local $hGUI, $file, $hImage1, $hGraphic, $width, $height, $hmatrix, $image1, $hclone
[/autoit] [autoit][/autoit] [autoit]
$hGUI = GUICreate("GDI+", 600, 400)
GUISetState()
_GDIPlus_Startup()
$file = @SystemDir & '\oobe\images\mslogo.jpg'
$hImage1 = _GDIPlus_BitmapCreateFromFile($file)
$width = _GDIPlus_ImageGetWidth($hImage1)
$height = _GDIPlus_ImageGetHeight($hImage1)
$hClone = _GDIPlus_BitmapCloneArea($hImage1, 0, 0, $width, $height, $GDIP_PXF24RGB) ;bild clonen
$hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage1) ; aus dem img eine graphicscontext machen, damit man auf der "leinwand" auch zeichnen kann
$hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixRotate($hMatrix, 3, "False") ;3 grad drehen
_GDIPlus_GraphicsSetTransform($hgraphic, $hMatrix) ;bitmap vorbereiten_GDIPlus_GraphicsDrawImage($hgraphic, $hclone, 0,0) ;clone in die Bitmap zeichnen
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_ImageSaveToFile($himage1, @scriptdir&"\gedreht_Image.jpg")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_ImageDispose ($hImage1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_WinAPI_DeleteObject ($hclone)
_WinAPI_DeleteObject ($hgraphic); Shut down GDI+ library
[/autoit]
_GDIPlus_ShutDown ()*/EDIT/* du hast schon gemerkt, daß man beim Drehen aufpassen muss, grosse Winkel gehen nicht "auf einmal" , sondern man muss ggf mehrmals drehen und dabei den Mittelpunkt der Drehung anpassen
-
-
Formpro kommt der Sache doch schon sehr nahe denke ich...
Aber für dreieinhalbtausend Euronen kannst du dich auch 4 Wochen hinsetzen und die Formulare selbst auswerten, das lohnt sich wirklich nur bei Masse^^
Aber der Workflow stimmt und ist auch nicht sonderlich schwer in AutoIt umzusetzen. Ich versuch es mal am Beispiel einer Multiple-Choice-Seite:
- nicht ausgefülltes Referenzblatt A scannen
- Bereiche X1,X2,X3 , Y1,Y2 Z1,Z2,Z3,Z4 grafisch festlegen, in denen mögliche Änderungen erfasst werden , und bezeichnen
- ausgefüllte (angekreuzte) Seite B scannen
- den Bereich X1 von Blatt A mit dem Bereich X1 B vergleichen (verschiedene grafische Möglichkeiten). Wenn beim Vergleichen der beiden Bereiche eine bestimmte Schwelle überschritten ist, diesen Bereich als "angekreuzt" markieren .Für das Ausrichten der Scans, Normalisierung usw kann man (kostenlose) externe Programme verwenden. Für AutoIt bliebe nur noch die Auswahl der zu vergleichenden Bereiche und die Auswertung bzw. Prüfung auf "erlaubte" Kombinationen der angekreuzten Felder, d.h. die Bewertung auf Richtig/Falsch bzw Ungültig.
Wenn du Interesse an einer Umsetzung in AutoIt hast, ich würde gerne mitmachen...
-
....und keine Startbeiträge löschen...Schreib ein EDIT rein wenn du magst, aber kein Mensch weiss um was es geht wenn er über die Forensuche auf den Thread gestossen ist.
-
Ich finde dies Diskussion sehr interessant, denn bei meiner Art zu Scripten liegt es "am Anfang" noch garnicht fest, ob im OnEvent- oder Msgmode gearbeitet wird. Meist fange ich Quick´n´Dirty mit dem MsgMode an und wenn dann die Abfragen eine bestimmte Größe (die ich nicht näher spezifizieren kann, "Gefühlssache"^^ ) überschreiten, dann wechsele ich auf den Eventmodus.
ZitatIch finde es zumeist sogar Sinnvoll, das die Events nicht just in Time abgearbeitet werden. Das führt meist zu Problemen.
SEHR gutes Argument! Der DAU-Faktor muss beim OnEvent natürlich weitaus mehr beachtet werden!
-
Wenn wir schon dabei sind, gibt es eine Möglichkeit die Anzeige in der mit Alt-L erstellten Funktionsliste länger als 4 Zeilen zu machen? Ich bin bisher bis in den LUA-Quellcode vorgedrungen, aber es scheint, als ob diese List() -Funktion in C eine vordefinierte Größe hat.
-
Raupi ,
Natürlich hast du Recht! Seltsam, was man spät Nachts obwohl eigentlich hellwach, doch für Träume hat
cio
Andy