Man könnte auch WMI benutzen, um die Dienste zu kontrollieren. Hat noch den Vorteil, dass man auch an Remote Systemen die Dienste stoppen / starten kann.
Gruß,
UEZ
Man könnte auch WMI benutzen, um die Dienste zu kontrollieren. Hat noch den Vorteil, dass man auch an Remote Systemen die Dienste stoppen / starten kann.
Gruß,
UEZ
Hier, was mit ad hoc eingefallen ist:
#include <GUIConstantsEx.au3>
#include "GUICreateTransparent.au3"
Global Const $SC_DRAGMOVE = 0xF012
Global $sBildURL = "http://www.autoit.de/index.php?page=Attachment&attachmentID=11980&h=3e1f01006e7557e85e5957cfa8c04a385ebf559a"
Global $sBilddatei = @ScriptDir & "\bg.png"
If Not FileExists($sBilddatei) Then
$Result = MsgBox(4, "Bild laden", 'Soll das Bild "bg.png" von' & @CRLF & @CRLF & _
$sBildURL & @CRLF & @CRLF & 'heruntergeladen werden?')
If $Result <> 6 Then Exit
InetGet($sBildURL, $sBilddatei)
EndIf
; Transparentes GUI erzeugen
$hGUI = _GUICreate_Transparent($sBilddatei)
$hGUI2 = GUICreate("Test", 79, 14, 400, 100, $WS_POPUP, $WS_EX_MDICHILD + $WS_EX_LAYERED, $hGUI)
GUISetBkColor(0x00001, $hGUI2)
_WinAPI_SetLayeredWindowAttributes($hGUI2, 0x00001, 0xFF, 3)
$idLbl = GUICtrlCreateLabel("Label Test Form", 0, 0, 79, 14)
GUICtrlSetColor($idLbl, 0xFFFFFF)
GUICtrlSetBkColor($idLbl, -2)
GUICtrlSetTip(-1, "Mich kannst Du klicken!", "Label Test Form")
WinSetOnTop($hGUI2, "", True)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI2)
; Wenn man das GUI bewegen will
GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idLbl
MsgBox(0, "Transparentes GUI", "Klick auf Label Test Form", 0, $hGUI)
EndSwitch
WEnd
Exit
[/autoit] [autoit][/autoit] [autoit]Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndFunc ;==>_WM_LBUTTONDOWN
Gruß,
UEZ
Schaue mal hier rein: Yet another associative array UDF
Gruß,
UEZ
Du könntest einfach den URL Link durch ein FTP Link ersetzen.
Falls du Benutzernamen und Passwort eingeben musst, kannst du ja als Workaround folgende Syntax nehmen:
ftp: //user:password@ftp-site
Gruß,
UEZ
Ich hatte auch mal dazu was geschrieben.
;Coded by UEZ 2010
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
Global $hGUI = GUICreate("Downloader by UEZ 2010 Build 2010-12-27", 615, 267, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $Input_URL = GUICtrlCreateInput("http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.3.5.6-sfx.exe", 64, 24, 497, 21)
Global $Label1 = GUICtrlCreateLabel("URL:", 32, 26, 29, 17)
Global $Start_DL = GUICtrlCreateButton("Download", 64, 128, 75, 25)
GUICtrlSetOnEvent(-1, "Start_DL")
Global $Stop_DL = GUICtrlCreateButton("Cancel", 488, 128, 75, 25)
GUICtrlSetOnEvent(-1, "Stop_DL")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Progress = GUICtrlCreateProgress(8, 192, 598, 17)
Global $StatusBar = _GUICtrlStatusBar_Create($hGUI)
_GUICtrlStatusBar_SetText($StatusBar, "Ready")
Global $Input_Save_To = GUICtrlCreateInput(@ScriptDir, 64, 80, 497, 21)
Global $Label2 = GUICtrlCreateLabel("Save to:", 16, 84, 44, 17)
GUISetState(@SW_SHOW)
Global $hDownload, $nBytes, $nRead, $nSize, $calc, $file, $url, $current
Global $speed = 0
Global $prog = 0
Global $stop = 0
While Sleep(1000000000)
WEnd
Func Start_DL()
$url = GUICtrlRead($Input_URL)
$file = GUICtrlRead($Input_Save_To)
If $url <> "" And $file <> "" Then
GUICtrlSetState($Start_DL, $GUI_DISABLE)
GUICtrlSetState($Stop_DL, $GUI_ENABLE)
$file &= "\" & StringRight($url, StringLen($url) - StringInStr($url, "/", 0, -1))
$nSize = InetGetSize($url)
$hDownload = InetGet($url, $file, 1, 1)
AdlibRegister("DL_Check", 50)
$current = 0
AdlibRegister("DL_Speed", 1000)
EndIf
EndFunc
Func DL_Check()
If InetGetInfo($hDownload, 2) Or $stop Then
InetClose($hDownload)
GUICtrlSetState($Start_DL, $GUI_ENABLE)
GUICtrlSetState($Stop_DL, $GUI_DISABLE)
GUICtrlSetData($Progress, 0)
_GUICtrlStatusBar_SetText($StatusBar, "Ready")
$stop = 0
AdlibUnRegister("DL_Check")
AdlibUnRegister("DL_Speed")
Else
$nRead = InetGetInfo($hDownload, 0)
$calc = Int(100 * $nRead / $nSize)
GUICtrlSetData($Progress, $calc)
_GUICtrlStatusBar_SetText($StatusBar, $nRead & " / " & $nSize & " bytes (" & $calc & " % @ " & $speed & " kb/s)")
EndIf
EndFunc
Func DL_Speed()
$speed = Round(($nRead - $current) / 1024, 2)
$current = $nRead
EndFunc
Func Stop_DL()
$stop = 1
EndFunc
Func _Exit()
InetClose($hDownload)
GUIDelete($hGUI)
Exit
EndFunc
Gruß,
UEZ
Wird immer besser ![]()
Hotkeys für die Buttons (und auch generell) wären nicht schlecht, falls noch nicht erwähnt und Gridlines (optional).
Gruß,
UEZ
Ich habe mein Beispiel oben aktualisiert!
Gruß,
UEZ
Probiere es mal mit
[autoit]
$string = "C:\Dokumente und Einstellungen\Benutzer\Desktop\Homepage\galerie\irgendwas\irgend-ein-bild.jpg"
$Muster = StringRegExpReplace($string, "(?i:.*(irgend-ein-bild).*)", "$1")
$aMuster = StringRegExp($string, "(?i:(.*\\)irgend-ein-bild(\..*)$)", 3)
MsgBox(0, "Test", $Muster & @LF & $aMuster[0] & @LF & $aMuster[1])
Gruß,
UEZ
Super UEZ, genau was ich wollte
Eine Frage noch wie kommst du auf diese Rechnungen? Kannst du mir mal erklären wie du darauf kommst? Würde das auch selber gerne erstellen können. Oder ist das mit Mathematik der 9 Realschulklasse noch nicht möglich?
Naja könntest mir ja trozdem nochmal erklären, dann guck ich im Inet für die Rechnungen die ich noch nicht kenne/kann um sie zu lernen.Vielen Dank
Das hat was mit Schwingungen zu tun und Schwingungen werden i.d.R. mit Sinus/Kosinus dargestellt.
Wenn ihr Sinus und Kosinus bereits in Mathe behandelt, dann schaue mal einfach hier rein: http://de.wikipedia.org/wiki/Sinus. Ansonsten wird es schwer zu erklären.
Zitat von Jam00
Eine Frage noch, kann man die Kantenglättung noch erhöhen? Man kann sie ja so nur auf 8x8 stellen, kann man sie auch irgendwie auf 16x16 stellen?
Soweit ich weiß, gibt es nur 0, 1 und 2 als Wert für _GDIPlus_GraphicsSetSmoothingMode()
Gruß,
UEZ
Eine von vielen Möglichkeiten:
;fast hack by UEZ 2010
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
Global $hGUI, $hGraphic, $hBitmap, $hBackbuffer, $hBackground, $hContext, $hBrush1, $hBrush2, $progress
Global $start, $schritte
Global $weight = 600
Global $height = 100
$hGUI = GUICreate("GDI+", $weight, $height, Default, Default, 0x80000000)
GUISetBkColor($hGUI, 0)
_GDIPlus_Startup ()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($weight, $height, $hGraphic)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hBackground = _GDIPlus_BitmapCreateFromGraphics($weight, $height, $hGraphic)
$hContext = _GDIPlus_ImageGetGraphicsContext($hBackground)
_GDIPlus_GraphicsSetSmoothingMode($hContext, 2)
_GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)
$hBrush1 = _GDIPlus_BrushCreateSolid(0xFF6E6E6E)
$hBrush2 = _GDIPlus_BrushCreateSolid(0xFFF96900)
_GDIPlus_GraphicsClear($hBackbuffer)
_GDIPlus_GraphicsClear($hContext)
;erstelle Hintergrund
Progress($hContext, $hBrush1, -5, $weight +5)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent(-3, "_Exit")
[/autoit] [autoit][/autoit] [autoit]$start = -5
[/autoit] [autoit][/autoit] [autoit]While Sleep(30)
If $schritte < $weight + 5 Then
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hBackground, 0, 0, $weight, $height)
Progress($hBackbuffer, $hBrush2, $start, $start + $schritte)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $weight, $height)
$schritte += 4
EndIf
WEnd
Func Progress($hContext, $hBrush, $s, $e, $steps = 1, $bW = 10, $bH = 10, $h = $height)
Local $i
For $i = $s To $e Step $steps
_GDIPlus_GraphicsFillEllipse($hContext, $i, $h / 2 - $h * Cos($i / 40) / 5 - $bH / 2, $bW, $bH, $hBrush)
Next
EndFunc
Func _Exit()
_GDIPlus_BrushDispose($hBrush1)
_GDIPlus_BrushDispose($hBrush2)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_BitmapDispose ($hBitmap)
_GDIPlus_GraphicsDispose($hContext)
_GDIPlus_BitmapDispose ($hBackground)
_GDIPlus_GraphicsDispose ($hGraphic)
_GDIPlus_Shutdown ()
GUIDelete($hGUI)
Exit
EndFunc
Gruß,
UEZ
Alles anzeigenHi Seubo, Deine Idee war klasse!
Allerdings hattest du per XOR deine dest_bitmap verknüpfen wollen. In dieser ist aber, da neu angelegt, jedes Pixel 0x00000000. Um zu invertieren, müsstest du erst das dest_Bitmap mit 0xFFFFFFFF füllen!
Oder du machst es wie der faule Andy, der benutzt beim Blitten den Parameter
und spart sich so die 2. Bitmap.Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$sFile = FileOpenDialog("", "", "Alle (*.*)")
[/autoit] [autoit][/autoit] [autoit]
If @error Then Exit$hBild = _GDIPlus_BitmapCreateFromFile($sFile)
[/autoit] [autoit][/autoit] [autoit]
$hBild_Inverted = BitmapInvert($hBild)FileDelete(StringTrimRight($sFile, 4) & "_inverted.bmp")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$s = _GDIPlus_ImageSaveToFile($hBild_Inverted, StringTrimRight($sFile, 4) & "_inverted.bmp")
ShellExecute(StringTrimRight($sFile, 4) & "_inverted.bmp")Func BitmapInvert($hBitmap)
[/autoit] [autoit][/autoit] [autoit]
Local $iWidth, $iHeigth, $hBitmap_New, $hBitmap_Old
Local $hDC_Source, $hDC_Dest, $vReturn$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
[/autoit] [autoit][/autoit] [autoit]
$iHeigth = _GDIPlus_ImageGetHeight($hBitmap)$hDC_Source = _WinAPI_CreateCompatibleDC(0)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap_Old = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)$vReturn = _WinAPI_SelectObject($hDC_Source, $hBitmap_Old) ; nur für's debug in Var schreiben
[/autoit] [autoit][/autoit] [autoit][/autoit]
$vReturn = _WinAPI_BitBlt($hDC_Source, 0, 0, $iWidth, $iHeigth, $hDC_Source, 0, 0, $dstinvert)
$vReturn = _WinAPI_DeleteDC($hDC_Source)
Return _GDIPlus_BitmapCreateFromHBITMAP($hBitmap_Old)
EndFunc ;==>BitmapInvert
Einfach, schnell und effizient! ![]()
Gruß,
UEZ
Probiere es mal so:
[autoit]
$7zip = "7z.exe "
$source = "c:\Tmp\ "
$dest = "c:\Temp\Test.7z "
$command = "a "
$switches = "-r -t7z -mx7"
ConsoleWrite($7zip & $command & $dest & $source & $switches & @CRLF)
$pid = RunWait(@ComSpec & " /k " & $7zip & $command & $dest & $source & $switches, @ScriptDir, @SW_MAXIMIZE)
Gruß,
UEZ
Schau' mal hier rein: http://www.autoitscript.com/forum/topic/54…-be-unbeatable/
Gruß,
UEZ
Hier auch noch eine ganz nette Quelle: http://www.autoitscript.com/forum/topic/97…sdrawroundrect/
Gruß,
UEZ
Ändere mal die Zeile 73 in GUICreateTransparent.au3 zu _WinAPI_UpdateLayeredWindow($hGUI, 0, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) um (war bereits in meinem Beispiel so
).
Sollte jetzt auch unter WinXP funzen!
Es gibt leider einige Codes, die nicht mehr oder anders unter WinXP laufen!
Ich persönlich bin absolut mit Win7 x64 zufrieden und verwende XP i.d.R. nicht mehr! ![]()
Gruß,
UEZ
Soweit ich dich verstanden habe, willst du eine Menge Screenshots vom Desktop erstellen (so eine Art Abfilmen) und diese Screenshot anschließend speichern.
Hier ein Test:
#include <ScreenCapture.au3>
_GDIPlus_Startup()
$j = 5000 ;Anzahl der Screenshots
Dim $memHBitmaps[$j], $hBitmaps[$j]
$w = 50
$h = 50
$t = TimerInit()
For $i = 0 To UBound($memHBitmaps) - 1
$x = Random(0, @DesktopWidth - $w, 1)
$y = Random(0, @DesktopHeight - $h, 1)
$memHBitmaps[$i] = _ScreenCapture_Capture("", $x, $y, $x + $w, $y + $h, 0)
$hBitmaps[$i] = _GDIPlus_BitmapCreateFromHBITMAP($memHBitmaps[$i])
Next
$tm = Round(TimerDiff($t), 2)
ConsoleWrite("Laufzeit, um den Speicher mit " & $j & " Screenshots zu füllen: " & $tm & " ms" & @LF)
$t = TimerInit()
$l = StringLen(UBound($memHBitmaps) - 1)
For $i = 0 To UBound($memHBitmaps) - 1
_GDIPlus_ImageSaveToFile($hBitmaps[$i], "Test" & StringFormat("%0" & $l & "s", $i) & ".jpg")
_WinAPI_DeleteObject($memHBitmaps[$i])
_GDIPlus_BitmapDispose ($hBitmaps[$i])
Next
$ts = Round(TimerDiff($t), 2)
ConsoleWrite("Laufzeit für das Speichern der " & $j & " Screenshots : " & $ts & " ms" & @LF)
$tg = $tm + $ts
ConsoleWrite("Laufzeit gesamt: " & $tg & " ms" & @LF)
$bps = Round($j / $tg * 1000, 2)
ConsoleWrite($bps & " Bilder/s, " & Round(1 / $bps * 1000, 2) & " ms/Bild" & @LF)
_GDIPlus_Shutdown()
Exit
Das Resultat:
Laufzeit, um den Speicher mit 5000 Screenshots zu füllen: 93473.26 ms
Laufzeit für das Speichern der 5000 Screenshots : 19010.06 ms
Laufzeit gesamt: 112483.32 ms
44.45 Bilder/s, 22.5 ms/Bild
Speicherverbrauch: 64MB
Gruß,
UEZ
Was macht denn das JS Skript genau (wie kann ich das Skript laufen lassen)? Hast du dir mal die _Date* Funktionen angeschaut?
Ansonsten kann man das bestimmt mit AutoItObject realisieren...
Gruß,
UEZ
Interessante EInblicke - krass!
Gruß,
UEZ