Kein Script ist vor ihm sicher,
Eukalyptus ist: Der Plagiator! - demnächst im Kino
Hoffentlich in 3D ![]()
Gruß,
UEZ
PS: Hab' noch nie ein Film in 3D gesehen!
Kein Script ist vor ihm sicher,
Eukalyptus ist: Der Plagiator! - demnächst im Kino
Hoffentlich in 3D ![]()
Gruß,
UEZ
PS: Hab' noch nie ein Film in 3D gesehen!
Klasse Beispiel, aber irgendwie kommt mir das mit den Buchstaben bekannt vor..
![]()
Gruß,
UEZ
Ich habe absolut kein Stress mit Win7 x64! Keine Abstürze, keine Performance Probleme - nichts! Zumal auch meine Skripte teilweise unter Vista+ besser laufen!
Vergleicht man WinXP mit Win/ ist es doch eine gewisse Umstellung, einfach wenn man gewisse Einstellungen vornehmen möchte, aber diese doch wo anders versteckt sind.
Hat man sich einmal daran gewöhnt, ist alles super!
Ich kann mich noch an die Umstellung von Win98 zu WinXP erinnern - das war auch nicht einfach (sehr gewohnheitsbedürftig) und Win98 war auch schneller, weil schlanker.
Gruß,
UEZ
Klasse Funktion! Kann man irgendwann bestimmt mal gut gebrauchen! ![]()
GDIp.au3 hat ja zig Funktion, die bestimmt interessant sind, leider gibt es wenig Beispiele dazu! Klasse, was du alles aus der GDIp.au3 heraus holst!
Gruß,
UEZ
Na klar! ![]()
Gruß,
UEZ
...
Wer natürlich Wert auf optischen Schnick-Schnack legt, braucht ein System mit viel Ressourcen und damits schön funkelt und blitzt halt das entsprechende OS. OK, ist Geschmackssache. Für mich sind PC/Laptop Arbeitsmaterialien, die zweckmäßig sein müssen. Ich verwende noch heute den Windows98-Look: Schlicht und zweckmäßig.
...
So hatte ich auch vor einigen Jahren gedacht, bis ich mich an die Oberfläche von Vista gewöhnt hatte. Jetzt kommt mir die klassische WinXP Ansicht, ohne den Schnick-Schnack, ziemlich "nackig" vor. Die GHz der CPU will auch ihre Daseinsberechtigung haben, denn sonst dümpelt die CPU noch mehr rum.
Win7 hat in Bezug auf Optik noch eins drauf gelegt und mir gefällt's super ![]()
Gruß,
UEZ
Die Frage bezieht sich nicht auf irgendwelche Firmen, die noch XP laufen haben, sondern auf euren Code!
Wenn euer Code in irgend welchen Firmen im Einsatz ist oder ihr müsst für Firmen XP kompatibelen Code erstellen, dann ist das wohl klar!
Gruß,
UEZ
Hmm, das sollte eigentlich keinen Fehler verursachen!
FileOpen ( "filename" [, mode ] )
Mode ist optional und Standard ist 0.
Außerdem wird nichts von der HD nachgeladen, sondern nur vom Speicher!
Gruß,
UEZ
Das mit dem Screenshot für Web Seiten funzt eigentlich ganz gut. Wie das MS im Detail macht, weiß ich nicht. Eigentlicht will ich keine 3rd Party Tools bzw. DLLs benutzen und es soweit wie möglich mit AutoIt Boardmitteln probieren.
Gruß,
UEZ
Ich wollte eure Meinung zum Support von WinXP unter Autoit fragen. Bitte abstimmen und Kommentar abgeben.
Ich persönlich bin der Meinung, dass der die Abwärtskompatibilität zu WinXP langsam zu Ende gehen sollte, egal ob MS noch Patche veröffentlicht oder nicht!
Weiteren Support bietet MS auch nicht mehr...
Es ist mir auch zu aufwendig jeweils den Code auf WinXP zu testen und für die Sachen, die nicht (ordentlich)laufen, eine Lösung zu finden.
Gruß,
UEZ
Naja, zumindest in Firmen wird XP noch sehr häufig verwendet. Gibt da einige Admins, die das (noch) nicht ändern möchten
Wie lange noch? Viele planen die Umstellung auf Win7, da die Firmen, die noch XP fahren, mit Vista nicht zufrieden sind.
Vielleicht machen ich einen Thread im Off-Topic auf, damit dieses Thema mal diskutiert werden kann.
Gruß,
UEZ
Füge mal folgende zwei Zeilen hinzu:
[autoit]
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
Opt("MustDeclareVars", 1)
und lass' dein Skript nochmals laufen.
Gruß,
UEZ
Habe das URL Grabben einbaut und jetzt fehlt noch das Zoom Feature für die Vorschau.
Um das Problem mit OS kleiner Vista zu lösen, habe ich mich entschlossen, diese einfach wegzulassen, da auch der Screenshot
für Webseiten auf WinXP nicht läuft.
Ich finde, und das ist meine Meinung, dass WinXP mittlerweile ein obsoletes OS ist und man es langsam in Rente schicken sollte.
Die nächste Version wird kein WinXP unterstützen!
Gruß,
UEZ
Hab etwas herumprobiert und noch keine Lösung für XP gefunden.
Es schein, daß Fensterteile, die außerhalb des Bildschrims liegen nicht erfasst werden. weder mit BitBlt, noch via WM_PRINTCLIENT hatte ich Erfolg.
Bei Gelegenheit werd ich weiterforschen
E
Ich werde mich langsam, aber sicher, von WinXP verabschieden und nicht darauf achten, ob es auch unter WinXP läuft. Wenn es unter WinXP läuft, dann gut, ansonsten Pech, egal ob MS noch für WinXP Patche herausbringt oder nicht!
Ich hatte vor längerer Zeit ein nettes Programm, dass bei Fenstern allgemein einen Screenshot erstellt hat, automagisch etwas herunter gescrollt hat und den nächsten gemacht hat und die Bilder dann zusammengesetzt hat. Vielleicht ist das einfacher?
Gruß,
Matthias
Das Skript funzt doch unter Vista+, somit ist das Basteln nicht nötig. ![]()
Gruß,
UEZ
eukalyptus: geht es damit: WinMove($hGUI, "", $aWin[0] - $BodyWidth + 10, $aWin[1] - $BodyHeight+ 10) ?
andygo: vielen Dank
Geht demm jetzt ![]()
Ich habe das Skript nicht unter WinXP, sondern "nur" unter Win7 x64 getestet - XP teste ich in meiner VM gleich...
Gruß,
UEZ
Edit: das Skript scheint mit WinXP nicht richtig zu laufen, denn normalerweise wird der IE nicht direkt aufgerufen, sondern kurz in einem eigenen Fenster, von dem ein Screenshot erstellt wird!
Da haben wir es einmal wieder - WinXP und die Komptabilität :pinch:
Stimmt, mit https://autoit.de/www.autoit.de sieht man den Balken rechts nicht.
Versuche es mal mit https://autoit.de/www.autoitscript.com/forum als URL.
Ich wollte nur Bordmittel benutzen, da ich sonst IrfanView voraussetzen muss ![]()
Gruß,
UEZ
Ich will AutoIt Windows Screenshooter mit einer Web Screenshot Funktion erweitern,
bin eigentlich mit der IE Objektprogrammierung fast überhaupt nicht vertraut.
Es gibt zwar ein klasse Proggy (Web Screenshot), aber ich kenne mich überhaupt nicht
mit AutoItObject aus.
Also habe ich versucht, was eigenes auf die Beine zu stellen:
#include <Clipboard.au3>
#include <IE.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;Coded by UEZ 2011 - beta version
If @OSBuild < 6000 Then Exit MsgBox(16, "Error!", "Script is running properly only on Vista+ os!", 10)
[/autoit] [autoit][/autoit] [autoit]Global Const $hDwmApiDll = DllOpen("dwmapi.dll")
Global $sChkAero = DllStructCreate("int;")
DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero))
Global $aero = DllStructGetData($sChkAero, 1)
If Not $aero Then Exit MsgBox(16, "Error", "Aero must be enabled to grab web sites properly!", 20)
$sChkAero = 0
Global $URL, $btn, $msg, $hWnd, $input, $i
$hWnd = GUICreate("Save Web Page as an image", 320, 120)
$input = GUICtrlCreateInput("http://www.stern.de", 10, 5, 300, 20)
$btn = GUICtrlCreateButton("Ok", 40, 35, 240, 70)
ControlFocus($hWnd, "", $btn)
GUISetState()
While $msg <> -3
$msg = GUIGetMsg()
Select
Case $msg = $btn
Start()
Case $msg = -3
GUIDelete($hWnd)
Exit
EndSelect
WEnd
Func Start()
$URL = GUICtrlRead($input)
SplashTextOn("Screenshooting Web Site", "Please wait while taking screenshot", 300, 40, -1, -1, 1 + 2 + 4 + 32, "")
AdlibRegister("Wait", 300)
Web_Screenshot($URL)
AdlibUnRegister("Wait")
SplashOff()
MsgBox(0, "Information", "Web Site Image copied to clipboard!", 10)
EndFunc
Func Web_Screenshot($url, $IEwidth = 1045)
Local $oIE, $GUIActiveX, $oDocument, $oBody, $BodyWidth, $BodyHeight, $oHtml
Local $hGUI_WebGrab, $hWin, $aWin, $aMP
Local Const $BrowserNavConstant = 2 + 256 + 2048 ;BrowserNavConstant -> http://msdn.microsoft.com/en-us/library/…8(v=vs.85).aspx
$oIE = ObjCreate("Shell.Explorer.2") ;http://msdn.microsoft.com/en-us/library/…4(v=vs.85).aspx
$hWin = WinGetHandle("Program Manager")
$aWin = WinGetPos($hWin)
#region render web site to get height
$hGUI_WebGrab = GUICreate("", 0, 0, $aWin[0] - $BodyWidth + 1, $aWin[1] - $BodyHeight + 1, BitOR($WS_CLIPSIBLINGS, $WS_CLIPCHILDREN, $WS_POPUP),Default, WinGetHandle(AutoItWinGetTitle()))
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, $IEwidth, 256)
GUISetState(@SW_MINIMIZE, $hGUI_WebGrab)
Local $timeout = 30 * 1000
Local $timer = TimerInit()
With $oIE
.Silent = True
.FullScreen = True
.Resizable = False
.Visible = False
.StatusBar = False
.AddressBar = False
.Navigate($URL, $BrowserNavConstant, "_top")
Do
If TimerDiff($timer) > $timeout Then ExitLoop
Sleep(100)
Until $oIE.ReadyState = 4
.Stop
Sleep(2000)
EndWith
$oDocument = $oIE.document
$oBody = $oDocument.body
$oBody.scroll = "no"
$oBody.style.borderStyle = "none"
$BodyWidth = $oBody.scrollWidth
$BodyHeight = $oBody.scrollHeight
GUIDelete($hGUI_WebGrab)
$GUIActiveX = 0
#endregion
$hGUI_WebGrab = GUICreate("", $BodyWidth, $BodyHeight, $aWin[0] - $BodyWidth + 1, $aWin[1] - $BodyHeight + 1, BitOR($WS_CLIPSIBLINGS, $WS_CLIPCHILDREN, $WS_POPUP), Default, WinGetHandle(AutoItWinGetTitle()))
;~ $hGUI_WebGrab = GUICreate("", $BodyWidth, $BodyHeight, -1, -1, BitOR($WS_CLIPSIBLINGS, $WS_CLIPCHILDREN, $WS_POPUP), Default, WinGetHandle(AutoItWinGetTitle()))
$GUIActiveX = GUICtrlCreateObj ($oIE, 0, 0, $BodyWidth, Min($BodyHeight, 8192))
;~ GUISetState(@SW_SHOWNA, $hGUI_WebGrab) ;Show GUI for some milli seconds to make a screenshot
$timer = TimerInit()
With $oIE
.Silent = True
.FullScreen = True
.Resizable = False
.Visible = False
.StatusBar = False
.AddressBar = False
.Navigate($URL, $BrowserNavConstant, "_top")
Do
If TimerDiff($timer) > $timeout Then ExitLoop
Sleep(100)
Until $oIE.ReadyState = 4
.Stop
Sleep(1000)
EndWith
$oDocument = $oIE.document
$oBody =$oDocument.body
$oHtml = $oDocument.documentElement
$oBody.scroll = "no"
$oBody.style.borderStyle = "none"
$oBody.style.border = "0px"
$oHtml.style.overflow = 'hidden'
GUISetState(@SW_SHOWNA, $hGUI_WebGrab) ;Show GUI
[/autoit] [autoit][/autoit] [autoit]Local $hDC = _WinAPI_GetWindowDC($hGUI_WebGrab)
Local $hDC_Dummy = _WinAPI_GetWindowDC(0)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Dummy)
Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Dummy, $BodyWidth, $BodyHeight)
_WinAPI_SelectObject($hMemDC, $hBitmap)
_WinAPI_BitBlt($hMemDC, 0, 0, $BodyWidth, $BodyHeight, $hDC, 0, 0, $SRCCOPY)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_ReleaseDC($hGUI_WebGrab, $hDC)
_WinAPI_ReleaseDC(0, $hDC_Dummy)
_WinAPI_ReleaseDC(0, $hDC)
_ClipBoard_Open(0)
_ClipBoard_Empty()
_ClipBoard_SetDataEx($hBitmap, $CF_BITMAP)
_ClipBoard_Close()
_WinAPI_DeleteObject ($hBitmap)
$GUIActiveX = 0
$oIE = 0
GUIDelete($hGUI_WebGrab)
_ReduceMemory()
EndFunc
Func Min($a, $b)
If $a < $b Then Return $a
Return $b
EndFunc
Func Wait()
Switch Mod($i, 4)
Case 0
ControlSetText("Screenshooting Web Site", "", "Static1", "Please wait while taking screenshot")
Case 1
ControlSetText("Screenshooting Web Site", "", "Static1", "Please wait while taking screenshot .")
Case 2
ControlSetText("Screenshooting Web Site", "", "Static1", "Please wait while taking screenshot ..")
Case 3
ControlSetText("Screenshooting Web Site", "", "Static1", "Please wait while taking screenshot ...")
EndSwitch
$i += 1
EndFunc
Func _ReduceMemory($ProcID = 0)
If $ProcID = 0 or ProcessExists($ProcID) = 0 Then ; No process id specified or process doesn't exist - use current process instead.
Local $ai_GetCurrentProcess = DllCall('kernel32.dll', 'ptr', 'GetCurrentProcess')
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'ptr', $ai_GetCurrentProcess[0])
Return $ai_Return[0]
EndIf
Local $ai_Handle = DllCall("kernel32.dll", 'ptr', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $ProcID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'ptr', $ai_Handle[0])
DllCall('kernel32.dll', 'int', 'CloseHandle', 'ptr', $ai_Handle[0])
Return $ai_Return[0]
EndFunc
Ich habe zwei Probleme hier:Wie kann ich eine IE Seite rendern und diese abspeichern, ohne eine GUI anzuzeigen?Wie bekomme ich den vertikalen Balken auf der rechten Seite weg (einfach den Screenshot vom Clipboard in irgendein Tool einfügen)?
Ideen?
Der Code ist noch im Alpha Status und kann oder hat sehr wahrscheinlich schwachsinnigen Code! Jetzt im ßeta Stadium.
Gruß,
UEZ
Edit: scheint mit WinXP nicht zu laufen, da es kein Aero gibt, welches nötig ist, von Fenstern einen Screenshot zu erstellen, das sich außerhalb des sichtbaren Desktops befindet.!
Ja, im FileCommander habe ich diesen Workaround eingebaut. Wobei ich damit auch nicht wirklich zufrieden bin.
Ich glaube, mir gefällt die Lösung mit dem Dummy-Control (Post#2) besser.
Die ist echt clever, nur für mein Code nicht von Nutzen. Siehst du, wenn du mal in den Code reinschaust!
Edit: obwohl, könnte man auch so implementieren! ![]()
Gruß,
UEZ
Hi KaFu,
nett, dass du dein Wissen auch hier teilst! ![]()
Weiter so ![]()
Gruß,
UEZ ![]()
Mein letztes Update für dieses Tool!
Gruß,
UEZ