1. Wenn du nicht vor hast deinen eigenen Beitrag zu deinem Projekt zu leisten ist das völlig in Ordnung, aber dann ist dieser Thread im falschen Forum. Falls das also so sein sollte, dann gehört das in "Programmieranfragen - mit Gegenleistung". ![]()
Wir können dir aber auch gerne "Hilfe & Unterstützung" bei deinem Vorhaben leisten :).
2. Kann es sein, dass du Server und Client verwechselst? Es klingt nämlich ein wenig seltsam wenn sich mehrere Server zu einem einzelnen Clienten verbinden wo sie alle aufgelistet werden :S. Oder hat der Client tatsächlich die einzelnen Adressen von jedem Server?
Beiträge von name22
-
-
Da es sich sowieso um deine eigene GUI handelt brauchst du das AutoIt Window Info Tool nicht, sondern kannst einfach das Handle benutzen (Rückgabewert von GUICreate).
Das verwendest du als ersten Parameter bei ControlGetPos. Wie kommst du darauf den einfach weg zu lassen?
-
Happy Birthday chip!

-
*Tröööt*

-
Art: Neu-Implementierung
Task: http://rosettacode.org/wiki/Animate_a_pendulum
Beteiligte: name22
Skript:Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $hWnd, $hDC_Window, $hDC_Bitmap, $hBitmap, $hOldObj, $hGraphics, _
[/autoit] [autoit][/autoit] [autoit]
$hBrush_Ball, $hPen_StringGlobal Const $fPi = ACos(-1)
[/autoit] [autoit][/autoit] [autoit]
Global Const $iWidth = 400, $iHeight = 250 ;GUI Size
Global Const $iRadius_Ball = 10, $iWidth_String = 2 ;Object Sizes
Global Const $iColor_BG = 0xFFFFFFFF, $iColor_String = 0xFF000000, $iColor_Ball = 0xFF0000FF ;Colors
Global Const $iLength = 180, $fGravity = 0.1 ;Physical PropertiesGlobal $fAngle = $fPi / 2, $fSpeed = 0, $fAccel = 0, $fX_Ball, $fY_Ball
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Pendulum", $iWidth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()OnAutoItExitRegister("_Shutdown")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_RESTORE, "_DrawBuffer")
GUIRegisterMsg($WM_PAINT, "_DrawBuffer")$hDC_Window = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
$hOldObj = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Bitmap)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)$hBrush_Ball = _GDIPlus_BrushCreateSolid($iColor_Ball)
[/autoit] [autoit][/autoit] [autoit]
$hPen_String = _GDIPlus_PenCreate($iColor_String, $iWidth_String)While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hGraphics, $iColor_BG)
$fAccel = -$fGravity / $iLength * Sin($fAngle)
$fSpeed += $fAccel
$fAngle += $fSpeed
$fX_Ball = Cos($fAngle + $fPi / 2) * $iLength + $iWidth / 2
$fY_Ball = Sin($fAngle + $fPi / 2) * $iLength + 50
_GDIPlus_GraphicsDrawLine($hGraphics, $iWidth / 2, 50, $fX_Ball, $fY_Ball, $hPen_String)
_GDIPlus_GraphicsFillEllipse($hGraphics, $fX_Ball - $iRadius_Ball, $fY_Ball - $iRadius_Ball, $iRadius_Ball * 2, $iRadius_Ball * 2, $hBrush_Ball)
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
WEndFunc _DrawBuffer()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
EndFuncFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_SelectObject($hDC_Bitmap, $hOldObj)
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmap)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BrushDispose($hBrush_Ball)
_GDIPlus_PenDispose($hPen_String)
_GDIPlus_Shutdown()
EndFuncFunc _Close()
[/autoit]
Exit
EndFuncScreenshot:
Spoiler anzeigen
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Die Simulation folgt keiner sinnvollen/genauen Zeitachse. Wenn ich da mein standardmäßiges FPS management mit reingepackt hätte, wäre es irgendwie zu kompliziert finde ich. -
Oder man müsste die Rekursion umgehen, was aber ein längeres Script zur Folge hat das immer noch sehr viel Zeit für große Zahlen in Anspruch nimmt.
-
minx Danke. Ich finde die Moore-Neighbourhood lässt das ganze ein wenig.. rechteckig aussehen, aber es sollte mit den Vorgaben des Wikis übereinstimmen. Im Wikipedia Artikel ist allerdings von einer Neumann-Neighborhood die Rede
.Edit: Was findet ihr "besser"/"cooler", zeilenweises update der GUI oder Update nach jeder vollständigen Iteration?
1. Variante (Original)
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WinAPI.au3>Global $hDll_GDI32 = DllOpen("gdi32.dll")
[/autoit] [autoit][/autoit] [autoit]Global $iLength = 100
[/autoit] [autoit][/autoit] [autoit]
Global $iColor_Tree = 0x00FF00, $iColor_Fire = 0x0000FF, $iColor_Empty = 0 ;Colors
Global $fIgnition = 0.0001, $fGrowth = 0.01, $fTree = 0.55 ;PropabilitiesOpt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Forest Fire", $iLength, $iLength)
[/autoit] [autoit][/autoit] [autoit]
GUISetState();I use a second bitmap to contain the current pixel-states instead of a 2D-Array, sue me!
[/autoit] [autoit][/autoit] [autoit]
$hDC_Window = _WinAPI_GetDC($hWnd)
$hDC_BitmapTmp = _WinAPI_CreateCompatibleDC($hDC_Window)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmapTmp = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hObj_Old1 = _WinAPI_SelectObject($hDC_BitmapTmp, $hBitmapTmp)
$hObj_Old2 = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)OnAutoItExitRegister("_Shutdown")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_RESTORE, "_DrawBuffer")
GUIRegisterMsg($WM_PAINT, "_DrawBuffer")_WinAPI_SetBkColor($hDC_Bitmap, $iColor_Empty)
[/autoit] [autoit][/autoit] [autoit]For $iY = 0 To $iLength - 1
[/autoit] [autoit][/autoit] [autoit]
For $iX = 0 To $iLength - 1
If Random(0, 1) < $fTree Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Next
Next_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)While True
[/autoit] [autoit][/autoit] [autoit]
For $iY = 0 To $iLength - 1
For $iX = 0 To $iLength - 1
Switch _GetPixel($hDC_BitmapTmp, $iX, $iY)
Case $iColor_Fire
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Empty)
Case $iColor_Empty
If Random(0, 1) < $fGrowth Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Case $iColor_Tree
For $iX_Off = -1 To 1
For $iY_Off = -1 To 1
If $iX_Off = 0 And $iY_Off = 0 Then ContinueLoop
If _GetPixel($hDC_BitmapTmp, $iX + $iX_Off, $iY + $iY_Off) = $iColor_Fire Then
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
ContinueLoop 3
EndIf
Next
Next
If Random(0, 1) < $fIgnition Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
EndSwitch
Next
Next
_BitBlt($hDC_Bitmap, $hDC_Window)
_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
WEndFunc _SetPixel(ByRef $hDC, $iX, $iY, $iColor)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, 'INT', 'SetPixelV', 'HWND', $hDC, 'INT', $iX, 'INT', $iY, 'DWORD', $iColor)
EndFunc ;==>_SetPixelFunc _GetPixel(ByRef $hDC, $iX, $iY)
[/autoit] [autoit][/autoit] [autoit]
$aRet = DllCall($hDll_GDI32, 'DWORD', 'GetPixel', 'HWND', $hDC, 'INT', $iX, 'INT', $iY)
Return $aRet[0]
EndFunc ;==>_GetPixelFunc _DrawBuffer()
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)
EndFuncFunc _BitBlt(ByRef $hDC_Source, ByRef $hDC_Target)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, "BOOL", "BitBlt", "HANDLE", $hDC_Target, "INT", 0, "INT", 0, "INT", $iLength, "INT", $iLength, "HANDLE", $hDC_Source, "INT", 0, "INT", 0, "DWORD", $SRCCOPY)
EndFunc ;==>_DrawBufferFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_SelectObject($hDC_BitmapTmp, $hObj_Old1)
_WinAPI_SelectObject($hDC_Bitmap, $hObj_Old2)
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_BitmapTmp)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmapTmp)
_WinAPI_DeleteObject($hBitmap)DllClose($hDll_GDI32)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ShutdownFunc _Close()
[/autoit]
Exit
EndFunc ;==>_Close2. Variante (Zeilenweise)
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WinAPI.au3>Global $hDll_GDI32 = DllOpen("gdi32.dll")
[/autoit] [autoit][/autoit] [autoit]Global $iLength = 100
[/autoit] [autoit][/autoit] [autoit]
Global $iColor_Tree = 0x00FF00, $iColor_Fire = 0x0000FF, $iColor_Empty = 0 ;Colors
Global $fIgnition = 0.0001, $fGrowth = 0.01, $fTree = 0.55 ;PropabilitiesOpt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Forest Fire", $iLength, $iLength)
[/autoit] [autoit][/autoit] [autoit]
GUISetState();I use a second bitmap to contain the current pixel-states instead of a 2D-Array, sue me!
[/autoit] [autoit][/autoit] [autoit]
$hDC_Window = _WinAPI_GetDC($hWnd)
$hDC_BitmapTmp = _WinAPI_CreateCompatibleDC($hDC_Window)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmapTmp = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hObj_Old1 = _WinAPI_SelectObject($hDC_BitmapTmp, $hBitmapTmp)
$hObj_Old2 = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)OnAutoItExitRegister("_Shutdown")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_RESTORE, "_DrawBuffer")
GUIRegisterMsg($WM_PAINT, "_DrawBuffer")_WinAPI_SetBkColor($hDC_Bitmap, $iColor_Empty)
[/autoit] [autoit][/autoit] [autoit]For $iY = 0 To $iLength - 1
[/autoit] [autoit][/autoit] [autoit]
For $iX = 0 To $iLength - 1
If Random(0, 1) < $fTree Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Next
Next_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)While True
[/autoit] [autoit][/autoit] [autoit]
For $iY = 0 To $iLength - 1
For $iX = 0 To $iLength - 1
Switch _GetPixel($hDC_BitmapTmp, $iX, $iY)
Case $iColor_Fire
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Empty)
Case $iColor_Empty
If Random(0, 1) < $fGrowth Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Case $iColor_Tree
For $iX_Off = -1 To 1
For $iY_Off = -1 To 1
If $iX_Off = 0 And $iY_Off = 0 Then ContinueLoop
If _GetPixel($hDC_BitmapTmp, $iX + $iX_Off, $iY + $iY_Off) = $iColor_Fire Then
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
ContinueLoop 3
EndIf
Next
Next
If Random(0, 1) < $fIgnition Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
EndSwitch
Next
_BitBlt($hDC_Bitmap, $hDC_Window)
Next
_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
WEndFunc _SetPixel(ByRef $hDC, $iX, $iY, $iColor)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, 'INT', 'SetPixelV', 'HWND', $hDC, 'INT', $iX, 'INT', $iY, 'DWORD', $iColor)
EndFunc ;==>_SetPixelFunc _GetPixel(ByRef $hDC, $iX, $iY)
[/autoit] [autoit][/autoit] [autoit]
$aRet = DllCall($hDll_GDI32, 'DWORD', 'GetPixel', 'HWND', $hDC, 'INT', $iX, 'INT', $iY)
Return $aRet[0]
EndFunc ;==>_GetPixelFunc _DrawBuffer()
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)
EndFuncFunc _BitBlt(ByRef $hDC_Source, ByRef $hDC_Target)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, "BOOL", "BitBlt", "HANDLE", $hDC_Target, "INT", 0, "INT", 0, "INT", $iLength, "INT", $iLength, "HANDLE", $hDC_Source, "INT", 0, "INT", 0, "DWORD", $SRCCOPY)
EndFunc ;==>_DrawBufferFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_SelectObject($hDC_BitmapTmp, $hObj_Old1)
_WinAPI_SelectObject($hDC_Bitmap, $hObj_Old2)
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_BitmapTmp)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmapTmp)
_WinAPI_DeleteObject($hBitmap)DllClose($hDll_GDI32)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ShutdownFunc _Close()
[/autoit]
Exit
EndFunc ;==>_Close -
Art: Neu-Implementierung
Task: http://rosettacode.org/wiki/Forest_fire
Beteiligte: name22
Skript:Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WinAPI.au3>Global $hDll_GDI32 = DllOpen("gdi32.dll")
[/autoit] [autoit][/autoit] [autoit]Global $iLength = 100
[/autoit] [autoit][/autoit] [autoit]
Global $iColor_Tree = 0x00FF00, $iColor_Fire = 0x0000FF, $iColor_Empty = 0 ;Colors
Global $fIgnition = 0.0001, $fGrowth = 0.01, $fTree = 0.55 ;PropabilitiesOpt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Forest Fire", $iLength, $iLength)
[/autoit] [autoit][/autoit] [autoit]
GUISetState();I use a second bitmap to contain the current pixel-states instead of a 2D-Array, sue me!
[/autoit] [autoit][/autoit] [autoit]
$hDC_Window = _WinAPI_GetDC($hWnd)
$hDC_BitmapTmp = _WinAPI_CreateCompatibleDC($hDC_Window)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmapTmp = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iLength, $iLength)
$hObj_Old1 = _WinAPI_SelectObject($hDC_BitmapTmp, $hBitmapTmp)
$hObj_Old2 = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)OnAutoItExitRegister("_Shutdown")
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_RESTORE, "_DrawBuffer")
GUIRegisterMsg($WM_PAINT, "_DrawBuffer")_WinAPI_SetBkColor($hDC_Bitmap, $iColor_Empty)
[/autoit] [autoit][/autoit] [autoit]For $iY = 0 To $iLength - 1
[/autoit] [autoit][/autoit] [autoit]
For $iX = 0 To $iLength - 1
If Random(0, 1) < $fTree Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Next
Next_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)While True
[/autoit] [autoit][/autoit] [autoit]
For $iY = 0 To $iLength - 1
For $iX = 0 To $iLength - 1
Switch _GetPixel($hDC_BitmapTmp, $iX, $iY)
Case $iColor_Fire
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Empty)
Case $iColor_Empty
If Random(0, 1) < $fGrowth Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Tree)
Case $iColor_Tree
For $iX_Off = -1 To 1
For $iY_Off = -1 To 1
If $iX_Off = 0 And $iY_Off = 0 Then ContinueLoop
If _GetPixel($hDC_BitmapTmp, $iX + $iX_Off, $iY + $iY_Off) = $iColor_Fire Then
_SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
ContinueLoop 3
EndIf
Next
Next
If Random(0, 1) < $fIgnition Then _SetPixel($hDC_Bitmap, $iX, $iY, $iColor_Fire)
EndSwitch
Next
Next
_BitBlt($hDC_Bitmap, $hDC_Window)
_BitBlt($hDC_Bitmap, $hDC_BitmapTmp)
WEndFunc _SetPixel(ByRef $hDC, $iX, $iY, $iColor)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, 'INT', 'SetPixelV', 'HWND', $hDC, 'INT', $iX, 'INT', $iY, 'DWORD', $iColor)
EndFunc ;==>_SetPixelFunc _GetPixel(ByRef $hDC, $iX, $iY)
[/autoit] [autoit][/autoit] [autoit]
$aRet = DllCall($hDll_GDI32, 'DWORD', 'GetPixel', 'HWND', $hDC, 'INT', $iX, 'INT', $iY)
Return $aRet[0]
EndFunc ;==>_GetPixelFunc _DrawBuffer()
[/autoit] [autoit][/autoit] [autoit]
_BitBlt($hDC_Bitmap, $hDC_Window)
EndFuncFunc _BitBlt(ByRef $hDC_Source, ByRef $hDC_Target)
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDll_GDI32, "BOOL", "BitBlt", "HANDLE", $hDC_Target, "INT", 0, "INT", 0, "INT", $iLength, "INT", $iLength, "HANDLE", $hDC_Source, "INT", 0, "INT", 0, "DWORD", $SRCCOPY)
EndFunc ;==>_DrawBufferFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_SelectObject($hDC_BitmapTmp, $hObj_Old1)
_WinAPI_SelectObject($hDC_Bitmap, $hObj_Old2)
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_BitmapTmp)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmapTmp)
_WinAPI_DeleteObject($hBitmap)DllClose($hDll_GDI32)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ShutdownFunc _Close()
[/autoit]
Exit
EndFunc ;==>_CloseScreenshots:
Spoiler anzeigen
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Ja das geht.
[autoit]_WinAPI_SetWindowLong($hWnd, $GWL_HWNDPARENT, $hWnd_NewParent)
[/autoit]
Es würde mich aber echt interessieren wozu man das braucht.
-
Versuch es mal so:
Spoiler anzeigen
[autoit]#include "WinHttp.au3"
[/autoit] [autoit][/autoit] [autoit]$host = "192.168.178.18"
[/autoit] [autoit][/autoit] [autoit]
$data = '<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>Up</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>'
;=============HEADER=============
;~ $command_lenght = StringLen($data);~ $head = ""
[/autoit] [autoit][/autoit] [autoit]
;~ $head &= "POST /YamahaRemoteControl/ctrl HTTP/1.1" & @CRLF
;~ $head &= "Host " & $host & @CRLF
;~ $head &= "User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv12.0) Gecko/20100101 Firefox/12.0" & @CRLF
;~ $head &= "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF
;~ $head &= "Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF
;~ $head &= "Accept-Encoding gzip, deflate" & @CRLF
;~ $head &= "Connection keep-alive" & @CRLF
;~ $head &= "Content-Type text/xml; charset=UTF-8" & @CRLF
;~ $head &= "Referer http;" & $host & "/" & @CRLF
;~ $head &= "Content-Length " & $command_lenght & @CRLF
;~ $head &= "Pragma no-cache" & @CRLF
;~ $head &= "Cache-Control no-cache" & @CRLF & @CRLF
;~ $head &= $data; Initialize and get session handle
[/autoit] [autoit][/autoit] [autoit]
Global $hOpen = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv12.0) Gecko/20100101 Firefox/12.0"); Get connection handle
[/autoit] [autoit][/autoit] [autoit]
Global $hConnect = _WinHttpConnect($hOpen, $host); Make a request
[/autoit] [autoit][/autoit] [autoit]
Global $hRequest = _WinHttpOpenRequest($hConnect, "POST", "/YamahaRemoteControl/ctrl") ;Pfad zur Ressource vergessen; Send it. Specify additional data to send too. This is required by the Google API:
[/autoit] [autoit][/autoit] [autoit]
_WinHttpSendRequest($hRequest, "Content-Type: text/xml", $data) ;Doppelpunkt bei Header vergessen; Wait for the response
[/autoit] [autoit][/autoit] [autoit]
_WinHttpReceiveResponse($hRequest); See what's returned
[/autoit] [autoit][/autoit] [autoit]
Global $sReturned
If _WinHttpQueryDataAvailable($hRequest) Then ; if there is data
Do
$sReturned &= _WinHttpReadData($hRequest)
Until @error
EndIf; Close handles
[/autoit] [autoit][/autoit] [autoit]
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen); See what's returned
[/autoit]
MsgBox(0, "Returned", $sReturned)
Ich hab die Fehler die mir aufgefallen sind kommentiert. -
Ja dafür gibt es eine UDF: WinHTTP
-
Ich denke du suchst:
[autoit]_GUICtrlComboBox_GetCurSel
[/autoit] -
Schau dir mal die Hilfe zu dem Befehl GUICtrlSetData an. Da steht, dass die Funktion als zweiten Parameter für ComboControls einen String erwartet, der die einzelnen Items (durch "|" getrennt) enthält. Du versuchst aber direkt ein Array zu übergeben und damit kommt die Funktion nicht klar.
-
Zitat
Was mich anfangs abgeschreckt hatte, war, dass sie lediglich vertikal und horizontal anzuwenden sind und nicht diagonal. Das hiesse also, dass ich mein Bild erst drehen müsste, um einen „schrägen“ Bildausschnitt zu erhalten. Aber mit Matrixfunktionen habe ich ein wenig Erfahrung und sollte kein grosses Problem sein. Ausserdem habe ich in der GDIP.au3 auch die Funktionen TextureScale- und TextureRotate-Transform entdeckt. Muss ich aber noch ausprobieren.
Das hatte ich schon vermutet, aber ich konnte es nicht eindeutig aus deinen Beiträgen herauslesen ^^. Da versucht man das Thema möglichst simpel zu halten und dann ist das genau das Falsche...
-
"Funkiton" klingt irgendwie interessant :D.
Versuch es doch mal mit ControlCommand. Falls es sich um ein SysTabControl32 Control handelt, dann solltest du mit dem Command "TabRight" bzw. "TabLeft" den Tab wechseln können.
In der Hilfe müsstest du auch ein Beispiel finden. -
So in etwa?
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]$sString = "SRX00052" & @CRLF & "Other Data" & @CRLF & "SRX00053"
[/autoit][autoit][/autoit][autoit]
$aRes = StringRegExp($sString, "(SRX\d+)", 3)_ArrayDisplay($aRes)
[/autoit]Falls du nur die Zahlen willst, nimm stattdessen dieses Pattern:
Edit: Da war wohl jemand schneller ^^.
-
Als erstes brauchst du ein Request, das du mit _WinHttp_OpenRequest erstellst, bevor du ein Request senden kannst
, nichts überstürzen.
Dann empfehle ich dir die Hilfedatei zu nutzen die beim WinHTTP Archiv beiliegt wenn du es von der richtigen Quelle herunterlädst. Falls du das noch nicht getan haben solltes, bitte nachholen: http://code.google.com/p/autoit-winhttp/downloads/list
In dieser Hilfedatei findest du Erklärungen zu den einzelnen Funktionen sowie einige Beispiele. Ich würde dir empfehlen das Beispiel zu _WinHttpOpenRequest anzuschauen, da dort die grundlegenden Funktionen u.A. anhand eines "POST"-Requests erläutert werden. Das ist ja genau das was du vorhast. -
Es scheint alles ganz gut zu funktionieren. Nettes Script ;). Ich denke das mangelnde Interesse an deinem Script rührt zum einen von den begrezten Anwendungsmöglichkeiten und zum anderen haben die meisten kleinen AutoIt Spiele u.Ä. die bis jetzt entwickelt wurden meist nicht mehr als 1 Teammitglied.
In meinem Fall sähe das Ganze also recht eintönig aus (siehe Anhang). -
-
Zitat
Wenn ich "_GDIPlus_GraphicsFillPie" anwende, dann zeichne ich doch die gesamte Torte und nicht "nur den Ausschnitt, der übrig bleibt".
Nein du zeichnest nur das Tortenstück, dass durch die beiden Winkelangaben spezifiziert ist. Du willst doch dieses Tortenstück, dass man in deinem Script sieht nachdem man auf "Color All but One" geklickt hat, direkt irgendwo hinzeichnen, ohne dazu das ganze Bild zeichnen zu müssen, oder? Und genau das kannst du auch machen, indem du von vornerein dieses Tortenstück das übrigbleibt (nicht das, dass du im Moment per _GDIPlus_GraphicsFillPie zeichnest) zeichnest. Die vorher geladene Textur kannst du dann als Füllfarbe für dieses "Objekt" verwenden.
Probier es doch erstmal aus, so wie ich es eben beschrieben habe. Dann siehst du ja, ob es das ist was du meintest.