FFSaveBMP

07/30/2015 23:54 Moneypulation#1
Hey,

ich benutze die FFSaveBMP Funktion von der FastFind.au3, um Screenshots zu speichern. Leider hab ich ein Problem damit. Wenn man nämlich die Funktion mehrmals für den selben Pfad aufruft, bekommt man das:

FFSaveBMP("test")

[Only registered and activated users can see links. Click Here To Register...]

Ich würde aber gerne das Bild immer überschreiben lassen, da ein Screenshot 6MB groß ist und ich nicht nach ein paar Stunden die Festplatte voll machen will ...

Ich konnte die Funktion nicht so umschreiben, dass sie das Bild immer überschreibt. Merkwürdigerweise funktioniert FileDelete() bei den Bildern nicht. Auch wenn ich sie davor mit FileSetAttrib auf -F stelle. Ich will ungern eine andere Funktion als FFSaveBMP benutzen, weil sie sehr schnell ist. Hat daher jemand eine Lösung für mich?
07/31/2015 01:01 Daifoku#2
ersetze die Alte Funktion mit der hier, damit gehts

Code:
Func FFSaveBMP($FileNameWithNoExtension, $ForceNewSnap=false, $Left=0, $Top=0, $Right=0, $Bottom=0, $NoSnapShot=$FFLastSnap, $WindowHandle=-1)
	if Not SnapShotPreProcessor($Left, $Top, $Right, $Bottom, $ForceNewSnap, $NoSnapShot, $WindowHandle) Then
		SetError(2)
		Return False
		EndIf
	local $Result = DllCall($FFDllHandle, "BOOLEAN", "SaveBMP", "int", $NoSnapShot, "str", $FileNameWithNoExtension)
	If ((Not IsArray($Result)) OR $Result[0]<>1) Then
		SetError(1)
		Return False
	EndIf
	local $Suffixe = DllCall($FFDllHandle, "int", "GetLastFileSuffix")
	If (IsArray($Result)) Then
			$LastFileNameParam = $FileNameWithNoExtension+".BMP"
	EndIf
	return true
EndFunc
07/31/2015 01:10 °Incinerate#3
Bei mir fuktioniert FileDelete wunderbar.
07/31/2015 01:12 Moneypulation#4
Quote:
Originally Posted by Daifoku View Post
ersetze die Alte Funktion mit der hier, damit gehts

Code:
Func FFSaveBMP($FileNameWithNoExtension, $ForceNewSnap=false, $Left=0, $Top=0, $Right=0, $Bottom=0, $NoSnapShot=$FFLastSnap, $WindowHandle=-1)
	if Not SnapShotPreProcessor($Left, $Top, $Right, $Bottom, $ForceNewSnap, $NoSnapShot, $WindowHandle) Then
		SetError(2)
		Return False
		EndIf
	local $Result = DllCall($FFDllHandle, "BOOLEAN", "SaveBMP", "int", $NoSnapShot, "str", $FileNameWithNoExtension)
	If ((Not IsArray($Result)) OR $Result[0]<>1) Then
		SetError(1)
		Return False
	EndIf
	local $Suffixe = DllCall($FFDllHandle, "int", "GetLastFileSuffix")
	If (IsArray($Result)) Then
			$LastFileNameParam = $FileNameWithNoExtension+".BMP"
	EndIf
	return true
EndFunc
Das hab ich schon versucht. Es funktioniert nicht
07/31/2015 02:01 °Incinerate#5
Soweit ich das sehe steckt dein Problem in der FastFind.dll.
Du kannst ja mal versuchen mit FileWrite den Inhalt der des Bildes zu löschen und mit FileMove in den Papierkorb schieben.