Sammlung von Scriptfunktionen

05/02/2008 19:10 blackWorkx#16
ach er brauch doch nur ein post lesen xD

edit: der letzte auf der ersten seite
05/02/2008 21:10 -Anthrax-#17
$file=FileOpen(@ScriptDir & "HowTo.txt", 0)
danach dann
$var= FileRead ($file [, count])
nur open bringt wenig ^^
unf fileclose am ende ist auch ganz gut ^^
05/02/2008 21:12 Azunai#18
jemand will ein bild in einem gui erscheinen lassen, da frag ich mich, warum er dies nicht einfach durch ressourcen hinzufügung beim compilen macht xD
dann muss man das bild nicht auslagern ;)

Code:
#AutoIt3Wrapper_Res_File_Add=bild.bmp  , bitmap, bild  ; bild ist hier der pointer

GUICreate("GUI",200,200)
$id_pic=GUICtrlCreatepic("",0,0,200,200)
_ResourceSetImageToCtrl($id_pic, "bild",$RT_BITMAP)
GUISetState(@sw_show)
etwas vergessen ;)

das hier muss entweder als include, oder die funktionen einzeln rausgepickt davor xD sonst kann man die eingebundenen datein nicht nutzen ;)


Code:
Global Const $RT_CURSOR = 1
Global Const $RT_BITMAP = 2
Global Const $RT_ICON = 3
Global Const $RT_MENU = 4
Global Const $RT_DIALOG = 5
Global Const $RT_STRING = 6
Global Const $RT_FONTDIR = 7
Global Const $RT_FONT = 8
Global Const $RT_ACCELERATORS = 9
Global Const $RT_RCDATA = 10
Global Const $RT_MESSAGETABLE = 11
Global Const $RT_GROUP_CURSOR = 12
Global Const $RT_GROUP_ICON = 14
Global Const $RT_VERSION = 16

Global Const $RT_ANICURSOR = 21
Global Const $RT_ANIICON = 22
Global Const $RT_HTML = 23
Global Const $RT_MANIFEST = 24

Global Const $SND_RESOURCE = 0x00040004
Global Const $SND_SYNC = 0x0
Global Const $SND_ASYNC = 0x1
Global Const $SND_LOOP = 0x8
Global Const $SND_NOSTOP = 0x10
Global Const $SND_NOWAIT = 0x2000
Global Const $SND_PURGE = 0x40

Func _ResourceGet($ResName, $ResType = 10, $ResLang = 0) ; $RT_RCDATA = 10
	Local Const $IMAGE_BITMAP = 0
	Local $hInstance, $hBitmap, $InfoBlock, $GlobalMemoryBlock, $MemoryPointer, $ResSize
	
	$hInstance = DllCall("kernel32.dll", "int", "GetModuleHandleA", "int", 0)
	$hInstance = $hInstance[0]

	If $ResType = $RT_BITMAP Then
		$hBitmap = DllCall("user32.dll", "hwnd", "LoadImage", "hwnd", $hInstance, "str", $ResName, _
				"int", $IMAGE_BITMAP, "int", 0, "int", 0, "int", 0)
		If @error Then Return SetError(1, 0, 0)
		$hBitmap = $hBitmap[0]
		Return $hBitmap ; returns handle to Bitmap
	EndIf

	If $ResLang <> 0 Then
		$InfoBlock = DllCall("kernel32.dll", "int", "FindResourceExA", "int", $hInstance, "str", $ResName, "long", $ResType, "short", $ResLang)
	Else
		$InfoBlock = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hInstance, "str", $ResName, "long", $ResType)
	EndIf
	
	If @error Then Return SetError(2, 0, 0)
	$InfoBlock = $InfoBlock[0]
	If $InfoBlock = 0 Then Return SetError(3, 0, 0)
	
	$ResSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hInstance, "int", $InfoBlock)
	If @error Then Return SetError(4, 0, 0)
	$ResSize = $ResSize[0]
	If $ResSize = 0 Then Return SetError(5, 0, 0)
	
	$GlobalMemoryBlock = DllCall("kernel32.dll", "int", "LoadResource", "int", $hInstance, "int", $InfoBlock)
	If @error Then Return SetError(6, 0, 0)
	$GlobalMemoryBlock = $GlobalMemoryBlock[0]
	If $GlobalMemoryBlock = 0 Then Return SetError(7, 0, 0)
	
	$MemoryPointer = DllCall("kernel32.dll", "int", "LockResource", "int", $GlobalMemoryBlock)
	If @error Then Return SetError(8, 0, 0)
	$MemoryPointer = $MemoryPointer[0]
	If $MemoryPointer = 0 Then Return SetError(9, 0, 0)
	
	SetExtended($ResSize)
	Return $MemoryPointer
EndFunc

Func _ResourceGetAsString($ResName, $ResType = 10, $ResLang = 0) ; $RT_RCDATA = 10
	Local $ResPointer, $ResSize, $struct

	$ResPointer = _ResourceGet($ResName, $ResType, $ResLang)
	If @error Then
		SetError(1, 0, 0)
		Return ''
	EndIf
	$ResSize = @extended
	$struct = DllStructCreate("char[" & $ResSize & "]", $ResPointer)
	Return DllStructGetData($struct, 1) ; returns string
EndFunc

Func _ResourceGetAsBytes($ResName, $ResType = 10, $ResLang = 0) ; $RT_RCDATA = 10
	Local $ResPointer, $ResSize

	$ResPointer = _ResourceGet($ResName, $ResType, $ResLang)
	If @error Then Return SetError(1, 0, 0)
	$ResSize = @extended
	Return DllStructCreate("byte[" & $ResSize & "]", $ResPointer) ; returns struct with bytes
EndFunc

Func _ResourceSaveToFile($FileName, $ResName, $ResType = 10, $ResLang = 0, $CreatePath = 0) ; $RT_RCDATA = 10
	Local $ResStruct, $ResSize, $FileHandle

	$ResStruct = _ResourceGetAsBytes($ResName, $ResType, $ResLang)
	If @error Then Return SetError(1, 0, 0)
	$ResSize = DllStructGetSize($ResStruct)
	
	If $CreatePath Then $CreatePath = 8 ; mode 8 = Create directory structure if it doesn't exist
	$FileHandle = FileOpen($FileName, 2+16+$CreatePath)
	If @error Then Return SetError(2, 0, 0)
	FileWrite($FileHandle, DllStructGetData($ResStruct, 1))
	If @error Then Return SetError(3, 0, 0)
	FileClose($FileHandle)
	If @error Then Return SetError(4, 0, 0)

	Return $ResSize
EndFunc

Func _ResourceSetImageToCtrl($CtrlId, $ResName, $ResType = 10) ; $RT_RCDATA = 10
	Local $ResData = _ResourceGet($ResName, $ResType)
	If @error Then Return SetError(1, 0, 0)
	
	If $ResType = $RT_BITMAP Then
		_SetBitmapToCtrl($CtrlId, $ResData)
		If @error Then Return SetError(2, 0, 0)
		Return 1
	EndIf
	
	; for other types then BITMAP not implemented yet (must be used GDI+) ...
	; ...
	Return SetError(-1, 0, 0)
EndFunc

; internal helper function
Func _SetBitmapToCtrl($CtrlId, $hBitmap)
    Local Const $STM_SETIMAGE = 0x0172
    Local Const $IMAGE_BITMAP = 0

    Local $hWnd = GUICtrlGetHandle($CtrlId)
	If $hWnd = 0 Then Return SetError(1, 0, 0)
    DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
	If @error Then Return SetError(2, 0, 0)
	Return 1
EndFunc

; thanks Larry
; MSDN: http://msdn2.microsoft.com/en-us/library/ms712879.aspx
; default flag is $SND_SYNC = 0
Func _ResourcePlaySound($ResName, $Flag = 0)
	Local $ret = DllCall("winmm.dll", "int", "PlaySound", "str", $ResName, "hwnd", 0, "int", BitOr($SND_RESOURCE,$Flag))
	If @error Then Return SetError(1, 0, 0)
	Return $ret[0]
EndFunc
05/02/2008 21:35 blackWorkx#19
Code:
func howTo()

 =FileOpen(@ScriptDir & "dataHowTo.txt", 0)
 = FileRead (, 1)
 FileClose()


	EndFunc
iwi klappt das nicht.. der öffnet einfach nicht die txt file :(

ach jetzt fehlen da die scheiß $



func howTo()

$file=FileOpen(@ScriptDir & "\data\HowTo.txt", 0)
$var= FileRead ($file, 1)
FileClose($file)


EndFunc
05/03/2008 14:00 -Anthrax-#20
hm...seh ich aber keinen fehler drinn, sollte gehen ^^
exestioert die datei denn auch`? ;P

wenn ja probiers mal mit denen:

Sets @error to -1 if end-of-file is reached. Failure: Sets @error to 1 if file not opened in read mode or other error.
Sets @error to 2 if count not defined for file open in raw read mode.
dann weisst du wenigstens mal worans hängt ^^
05/03/2008 14:34 blackWorkx#21
natürlich exestiert die dat xD, habe auch schon probiert auf die art ne pdf zu öffnen aber klappte auch nicht.. werde dein 2tipp da gleich probieren.. melde mich dann wieder :D
05/04/2008 03:24 Azunai#22
schick mir mal die date ;) so schwer kann das doch nicht sein
05/04/2008 11:41 blackWorkx#23
hat sich schon erledigt :D