Ich bin mir nicht sicher ob du von diesen Desktops redest oder ob Windows 10 andere hat.
Beiträge von alpines
-
-
Man kann das aber auch bei z.B. Firefox mit den Command Line Options machen
Das man mit dem CLI von Firefox eine embedded Instanz erstellen kann wäre mir neu. Welche URL der FF laden soll (beim Start) ist kein Problem aber das embedded das ganze ja nicht.
-
Mich wunderts, dass noch niemand das WMPlayer.ocx Objekt vorgeschlagen hat. Man kann mehrere Instanzen vom Objekt erzeugen und abspielen.
Das ist praktisch idiotensicher:
AutoIt
Alles anzeigenGlobal $oWMP = ObjCreate("WMPlayer.ocx") $oWMP.URL = "C:\Musik.mp3" Sleep(1000) Global $oWMP2 = ObjCreate("WMPlayer.ocx") $oWMP2.URL = $oWMP.URL Sleep(1000) $oWMP.settings.volume = 25 $oWMP2.settings.volume = 35 While Sleep(1000) ConsoleWrite($oWMP.playState & "-" & $oWMP2.playState & @CRLF) WEnd -
Ev Msg box beim ersten Start nach den möglichen Brosern fragen
Das ist ein embedded IE und keine eigenständige Fensterinstanz. Chrome und Firefox bieten so ein Interface nicht zum einbinden.
Zumindest nicht so einfach wie beim IE, für Chrome gibt es für C# z.B. cefsharp.
-
Mit ImageGetGraphicsContext erzeugst du einen Buffer zu deinem BitmapObjekt welches auf ein GraphicsObjekt zeigt.
GdiPlus flusht dann den Buffer automatisch auf die Bitmap und du musst es nur noch auf die Graphics mit _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap) zeichnen.
Wenn man ImageSaveToFile mal an die Beispielfunktion von _GDIPlus_BitmapCreateFromGraphics hinzufügt, dann funktioniert das ganze auch:
AutoIt
Alles anzeigen#include <GDIPlus.au3> #include <GUIConstantsEx.au3> Global $g_hGUI, $g_hBrush, $g_hGfx, $g_hGfxCtxt, $g_hBitmap Example() Func Example() AutoItSetOption("GUIOnEventMode", 1) _GDIPlus_Startup() ;initialize GDI+ Local Const $iWidth = 600, $iHeight = 600, $iBgColor = 0x303030 ;$iBGColor format RRGGBB $g_hGUI = GUICreate("GDI+ Example (" & @ScriptName & ")", $iWidth, $iHeight) ;create a test GUI GUISetBkColor($iBgColor, $g_hGUI) ;set GUI background color GUISetState(@SW_SHOW) ;create buffered graphics frame set for smoother gfx object movements $g_hGfx = _GDIPlus_GraphicsCreateFromHWND($g_hGUI) ;create a graphics object from a window handle $g_hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $g_hGfx) ;create a Bitmap object based on a graphics object $g_hGfxCtxt = _GDIPlus_ImageGetGraphicsContext($g_hBitmap) ;get the graphics context of the image / bitmap to draw on image / bitmap _GDIPlus_GraphicsSetSmoothingMode($g_hGfxCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;sets the graphics object rendering quality (antialiasing) $g_hBrush = _GDIPlus_BrushCreateSolid(0xFF8080FF) ;create a solid Brush object GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") Local Const $iDeg = ACos(-1) / 180 ;ACos(-1) is nearly pi Local $iSize = 50, $iX_Center = ($iWidth - $iSize) / 2, $iY_Center = ($iHeight - $iSize) / 2, $iXPos, $iYPos, $iAngle = 0 Local Const $iDots = 16, $iAngelDist = 360 / $iDots, $iRadius = 200 Do _GDIPlus_GraphicsClear($g_hGfxCtxt, 0xFF000000 + $iBgColor) ;clear bitmap with given color (AARRGGBB format) For $i = 1 To $iDots $iXPos = $iX_Center + Cos($iAngle * $iDeg) * $iRadius $iYPos = $iY_Center + Sin($iAngle * $iDeg) * $iRadius _GDIPlus_GraphicsFillEllipse($g_hGfxCtxt, $iXPos, $iYPos, $iSize, $iSize, $g_hBrush) ;draw dots in a circle $iAngle += $iAngelDist ;increase angle to next dot Next $iAngle += 1 ;increase overall angle _GDIPlus_GraphicsDrawImageRect($g_hGfx, $g_hBitmap, 0, 0, $iWidth, $iHeight) ;copy drawn bitmap to GUI Until Not Sleep(20) ;Sleep() always returns 1 and Not 1 is 0 EndFunc ;==>Example Func _Exit() ;cleanup GDI+ resources _GDIPlus_ImageSaveToFile($g_hBitmap, "test.png") _GDIPlus_BrushDispose($g_hBrush) _GDIPlus_GraphicsDispose($g_hGfxCtxt) _GDIPlus_GraphicsDispose($g_hGfx) _GDIPlus_BitmapDispose($g_hBitmap) _GDIPlus_Shutdown() GUIDelete($g_hGUI) Exit EndFunc ;==>_Exit -
Du musst ImageGetContext verwenden und das zurückgegebene Bild davon beschreiben (als Buffer), dann kannst du deine $hSaveBitmap auch speichern.
Sieh dir mal das Beispiel zu _GDIPlus_BitmapCreateFromGraphics aus der Hilfe an: https://www.autoitscript.com/autoit3/docs/l…romGraphics.htm
AutoIt
Alles anzeigen#include <GuiConstantsEx.au3> #include <GDIPlus.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiConstantsEx.au3> _Main() Func _Main() Local $hGUI global $hGraphic global $iWidth=600 global $iHeight=400 ;Local $iARGB_BG="0x22ffff22" $hGUI = GUICreate("Grafik",$iWidth, $iHeight) GUISetState() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND(WinGetHandle($hGUI)) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE $hSaveBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphic) ; Bitmap aus Grafik zum Speichern erstellen $himage = _GDIPlus_ImageGetGraphicsContext($hSaveBitmap) _GDIPlus_GraphicsClear($himage,0x884565EA ) _GDIPlus_GraphicsDrawString($himage, "test test", 50, 50, "Arial", 100) _GDIPlus_ImageSaveToFile($hSaveBitmap,@ScriptDir& "\Rechteck.png") ; Ressourcen freigeben _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_GraphicsDispose($hSaveBitmap) _GDIPlus_Shutdown() EndFunc ;==>_Main -
Wie muss ich mir das vorstellen, dass die Schleife "überwunden wird?
Dein Script läuft in die Schleife damit es sich nicht beendet und das Event wird dann ausgeführt. Wie genau was blockiert wird kann ich dir auf Anhieb nicht sagen, aber du kannst es ja mit einfachen Schleifen und ConsoleWrites mal testen und uns berichten. Generell sollte man in Events (sowie in AdlibFunktionen und Hotkeys) keine blockierenden Funktionen wie MsgBox oder ähnliches verwenden.
-
Ich verstehe ehrlich gesagt nicht was es hier noch zu diskutieren gibt. Oscar mach bitte den Thread dicht.
Wenn es mit PixelSearch möglich ist Geld zu verdienen, dann ist es entweder gegen die AGBs des Anbieters und/oder es werden Bots damit gecodet.
-
Eventbasiert wäre das ganze viel besser, da kann dein Script so lange schlafen bis es von Windows aufgeweckt wird.
Was du suchst ist ein FileSystemWatcher. Für C# gibts das bereits in der msdn: https://msdn.microsoft.com/en-us/library/…(v=vs.110).aspx
Auf die schnelle habe ich nur das hier gefunden: https://www.autoitscript.com/forum/topic/53…watchermonitor/
Das hier schaut auch sehr vielversprechend aus: class FileSystemWatcher -> SHChangeNotifyRegister
Mit dem SHChangeNotifyRegister habe ich eine Datei aus dem Verzeichnis löschen können und es wurde mir direkt in der Konsole geloggt.
-
Was für Daten brauchst du den genau von der Seite ?
15 Werte ausliest (davon 10 direkt untereinander (Top10 liste)
Wo sollen die. Abgespeichert werden ?
Lokale (file) Datenbank Daten schreiben. (Parsen& Schreiben pro Ausführung des Scriptes)
-
Rahmen kannst du mit _GDIPlus_GraphicsDrawRect zeichnen.
Für das Schreiben in bereits existente Bilder lädst du diese am besten mit _GDIPlus_ImageLoadFromFile und bearbeitest sie dann direkt.
AutoIt
Alles anzeigen#include <GDIPlus.au3> _GDIPlus_Startup() $hRedPen = _GDIPlus_PenCreate(0xFFFF0000, 5, 2) $hBitmap = _GDIPLUS_BitmapCreateFromScan0(300, 150) $hImage = _GDIPlus_ImageGetGraphicsContext($hBitmap) _GDIPlus_GraphicsClear($hImage, 0xFFFCFCFC) _GDIPlus_GraphicsDrawRect($hImage, 2, 2, 300 - 5, 150 - 5, $hRedPen) _GDIPLus_GraphicsDrawString($hImage, "Rechnung", 5, 10, "Arial", 42) _GDIPlus_GraphicsDrawString($hImage, "00001", 55, 80, "Arial", 40) _GDIPlus_ImageSaveToFile($hBitmap, "Rechnung 1.jpg") _GDIPlus_ImageDispose($hImage) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() -
Du kannst die Gdi+ UDF dafür nehmen, damit kannst du auch Strings zeichnen. Z.B. so:
AutoIt
Alles anzeigen#include <GDIPlus.au3> _GDIPlus_Startup() $hBitmap = _GDIPLUS_BitmapCreateFromScan0(300, 150) $hImage = _GDIPlus_ImageGetGraphicsContext($hBitmap) _GDIPlus_GraphicsClear($hImage, 0xFFFCFCFC) _GDIPLus_GraphicsDrawString($hImage, "Rechnung", 5, 10, "Arial", 42) _GDIPlus_GraphicsDrawString($hImage, "00001", 55, 80, "Arial", 40) _GDIPlus_ImageSaveToFile($hBitmap, "Rechnung 1.jpg") _GDIPlus_ImageDispose($hImage) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() -
Aber - warum ist das so?
So arbeitet DLLCall nunmal, die genaue Beschreibung was in dem Array enthalten ist steht hier unter Remarks. https://www.autoitscript.com/autoit3/docs/functions/DllCall.htm
[0] ist der Rückgabewert der Funktion (wenn es erfolgreich war) und in den darauffolgenden Indizes stehen deine Parameter.
-
Du hast doch schon alles was du brauchst, die ersten sechs Zeichen hast du auch schon abgeschnitten und gespeichert.
Jetzt kannst du sie mittels einer If-Verzweigung auf Gleichheit überprüfen und dann die MsgBox anzeigen lassen.
-
Wenn du uns verrätst für welche Anwendung du das ganze machen möchtest, dann könntest du sogar gleich das Formular in der Anwendung füllen und müsstest sie auf keine Tasten legen.
Das lesen aus Textdateien kannst du mit FileRead, FileReadToArray machen.
-
Giebt es denn eine Funktion, mit welcher ich die Daten der Session, bei welcher ich mich zuvor mittels des Scriptes angemeldet habe verwenden kann?
Nein, du könntest aber mit _IEAttach dich an das IE-Fenster hängen und dann weiter manipulieren aber da wäre es besser sich gleich darüber einzuloggen statt mit Sends.
-
Ich weiß, das hat wenkedaue aber auch schon getan laut Beschreibung.
Du wirst die Session aber nicht in dem InetGet/InetRead verwenden können. Das erzeugt eine völlig neue IE-Instanz.
-
Dadurch sollte man eigentlich auch den html Code auslesen können.
Du wirst dich damit aber sehr wahrscheinlich nicht einloggen können.
-
Ich denke es würde mir auch reichen, wenn ich wüsste welche Funktionen bzw. welche Kombination von Funktionen für so ein Problem sinnvoll sind.
Dann schau dir mal die IE.au3 UDF an, damit kannst du die Elemente auf einer Website direkt adressieren und auf MouseClicks verzichten.
Einfach nach einem geeigneten Tutorial suchen. Wenn du hart drauf bist kannst du auch versuchen direkt das ganze mit WinHttp zu lösen und den Browser komplett wegzulassen, ist aber ein bisschen schwieriger.
-
Wenn du uns verrätst um welche Seite es sich handelt kannst du das ganze im Hintergrund ohne die MouseClicks machen.