funktioniert unter win 7 genaus wie unter win viste nur bringt das agnze bei ner exe nix
Beiträge von Darter
-
-
Moin
Also im Prinzip ganz einfach(oder auch nicht^^). Ich hab einen in einem Coordinatensystem eine Linie und davon den anfangs x und y wert und den end x und y wert. und möchte einen auf dieser Geraden liegenden Punkt herrausfinden.
EDIT. Was hier noch bekannt ist ist die stecke von punkt 1(anfangspunkt) zu dem zu findenden punkt
Hier noch ein Bild zur veranschaulichung
[Blockierte Grafik: http://s3.directupload.net/images/100606/b2a2uoif.jpg]
-
ich habs mal so probiert:
die dll:
Code
Alles anzeigenextern "C" int* __declspec(dllexport) myfunc2 (int x) { int array[3]; int* zeiger; int i; array[0] = 111; array[1] = 222; array[2] = 333; zeiger=array[0]; return zeiger; }und ein script dazu:
[autoit]$Dll = DllOpen("Dll_Test.dll")
[/autoit][autoit][/autoit][autoit]
Myerrorcheck()
$aRet = DllCall($Dll, "ptr", "myfunc2")
Myerrorcheck()
$tStruct = DllStructCreate("int", $aRet[0])
Myerrorcheck()
$Structdata = DllStructGetData($tStruct, 1, 1)
Myerrorcheck()
MsgBox(0,"",$Structdata)Func Myerrorcheck()
[/autoit]
If @error Then
MsgBox(0,"Fehler",@error)
Exit
EndIf
EndFuncich hab kp ob das auch nur ansatzweise richig ist aber im prinzip zeigt mein pointer auf das erste element meines Arrays so müsste das doch richitg sein oder?
-
wow tut mir leid aber ich verste da nur bahnhof ich war froh, dass ich ne einfache dll erstellen konnte und diese callen aber vllt kannst du mir ja deinen code etwas erläutern.

-
-
extern "C" bedeutet, dass die dll Funktion im C Stil erstellt wird (zumindest glaub ich das)
Und den Quellcode zum Tic Tac Toe gibts NOCH nicht, damit yxyx ein bissl nachdenken muss

Aber mein bsp mit mehr funktionen in einer dll ist schon richtig so oder und du könntest mir wenn du willst du source ja als pm schicken
-
Hab auch mal eins gemacht. Du kannst den Stil ja kopieren.
nicht schlecht aber hast du da auch mal die Source daz? -
hoi ich habs auch direkt mal ausprobiert, weil es mich schon ne ganze zeit interessiert wie die dlls so aufgebaut sind aber ein paar fragen hätte ich noch.
das ist ja der code:so, was bedeutet denn jetzt genau das:
wieso extern"C"?? wieso int__declspec(dllexport)?? das letzte ist klar.Und was ist wenn ich in eine Dll mehr Fubktionen packen will sieht das dann so aus?
Spoiler anzeigen
und zum teil werden ja auch Icons in eine dll gepackt wie funktioniert das?
mfg Darter
-
Dann waren es wohl doch Außerirdische und sie wollten das ganze erst geheimhalten und jetzt mussten sie ich was ausdenken warum da so ein Mega nund vorallem Kreisrundes Loch in der Erde ist. Also duch einen Sturm, wenn ein gebäude einstürtzt ensteht mit sicherheit nicht so ein Loch.
Nicht in Hunderttasend Jahren ensteht so ein 300 Meter tiefes Kreisrundes Loch ich bin der meinnung da haben Außerirdische mit ner Laserwaffe auf und geschossen

-
ich hab kein dunzt was du von damit meinst aber wird wohl ein bot sein wie du schon selber sagtst und es reicht leider nicht Anti davor zu schreiben, denn das was du beschreibst ist kein ANti bot sondern ein bot
-
Sehr geil danke genau sowas thx

-
na klar. Das hab ich drinn, weil sich die ctrls immer weiter zusammenschieben, obwohl das fenster dann nicht kleiner wird. Sonst keiner ne idee?
-
Moin ich versuch schon seit knapp ner dreiviertel stunde was zu basteln, dass mein Fenster nicht kleiner gemacht werden kann als ich das will leider ohne erfolg.
ich habs so probiert :
Spoiler anzeigen
[autoit]Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
$teeeeest = WinGetPos($hauptgui)
If $teeeeest[2] <= 255 Or $teeeeest[3] <= 385 Then
GUICtrlSetResizing($label,$GUI_DOCKALL)
GUICtrlSetResizing($listview,$GUI_DOCKALL)
GUICtrlSetResizing($label2,$GUI_DOCKALL)
GUICtrlSetResizing($Button9,$GUI_DOCKALL)
WinMove ( $hauptgui, "", $teeeeest[0], $teeeeest[1] , 255 , 385)
Else
_GUICtrlStatusBar_Resize($hstatusbar)
Return $GUI_RUNDEFMSG
EndIf
EndFunc ;==>WM_SIZEso kann ich mein fentser daran hindern kleiner zu werden als ich das will nur leider resizen die ctrls natürlich nicht mit wenn ich das Fenter wieder größer zieh. Gibt es da schon irgend ne funk, mit der ich die Minimalgröße eines Fensterns festlegen kann?
-
jop das klapp allerdings können dan die ctlrs die noch erstellt werden nicht benutzt werden. Da es mich auch interessiert ware es schön zu wissen, ob es eine func gibt die bilder in hintergrund so zu zeichnen, dass die ctrls noch benutzt werden können?
-
ich würd mal sagen das dehnt sich bei wärem aus
-
klasse thx habs auch gerade bei der hilfe von den udfs unter GUITab gefunden
-
moin.
Ich hab ein ganz normales Tabmenü mit mehreren Items nur leider sind das sehr viele, sodass es sehr breit wird, was ich verhindern will, indem ich das ganze 2 Spaltig mache.
Ich habe bei mehreren Windows Fenstern schon gesehen, dass es machbar ist aber wie? -
.gif werden glaube ich mit GUICtrlCreateAvi() gemacht. Deswegen mach es mit .jpg's. Funktioniert:
nope. Nicht animierte gif Dateien können genauso mit GUICtrlCreatePic() dargestellt werden wie im JPG Format.
-
Bewertungen, Kritik, Anregungen und dergleichen sind gern gesehen !






EDIT: das forum gehört nicht dir ich darf hier also einen post einsetzten und ihr wolltet doch Bewertungen, Kritik, Anregungen und dergleichen sehen und meins war ebenen eine kritik. Kannst du damit nicht umgehen??
Außerdem ist in der Funktion _Startup das : GUISetOnEvent(-3, "_ShutDown") nicht unbedingt angebracht, wenn der oneventmodusnicht benutzt weredn will ,da das guigetmsg nicht mehr funzt.
-
Naja ich weiß nicht genau, was das sein soll und das als free autoit Objekt zu bezeichnen ist denke ich mal nicht richtig. das es keine Objekte sind, sondern nur etwas auf eine gui gezeichnet wird.
Das ist die einige Funktion aus eurer UDF die wirklich wichtig ist und die es im Web so, oder so ähnlich schon 1000 mal gibt.Spoiler anzeigen
[autoit]Func _StartUp($title, $width, $height, $X, $Y)
[/autoit] [autoit][/autoit] [autoit]
$hWnd = GUICreate($title, $width, $height, $X, $Y, 0x80000000, BitOR(0x00000080, 0x00080000, 0x00000008))
GUISetOnEvent(-3, "_ShutDown")
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)$ScreenDc = _WinAPI_GetDC($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$dc = _WinAPI_CreateCompatibleDC($ScreenDc)$tSize = DllStructCreate($tagSIZE)
[/autoit]
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", $width)
DllStructSetData($tSize, "Y", $height)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", 255)
DllStructSetData($tBlend, "Format", 1)
$tPoint = DllStructCreate($tagPOINT)
$pPoint = DllStructGetPtr($tPoint)
DllStructSetData($tPoint, "X", 0)
DllStructSetData($tPoint, "Y", 0)
EndFunc ;==>_StartUpdiese funktion:
Spoiler anzeigen
[autoit]Func _AutoIt_FreeObject_StringDraw($String, $WindowTitle, $WindowX, $WindowY, $iSize = 15, $brush = 0xA50029)
[/autoit]
Local $WinPosition = WinGetPos($WindowTitle)
$State = WinGetState($WindowTitle)
If BitAND($State,
Then
$Family = _GDIPlus_FontFamilyCreate("Arial")
$Font = _GDIPlus_FontCreate($Family, $iSize, 1)
$Layout = _GDIPlus_RectFCreate($WinPosition[0] + $WindowX + 1, $WinPosition[1] + $WindowY + 27, @DesktopWidth, @DesktopHeight)
$Format = _GDIPlus_StringFormatCreate()
$brush = _GDIPlus_BrushCreateSolid($brush + 0xFF000000)
$Info = _GDIPlus_GraphicsMeasureString($backbuffer, $String, $Font, $Layout, $Format)
_GDIPlus_GraphicsDrawStringEx($backbuffer, $String, $Font, $Info[0], $Format, $brush)
EndIf
EndFunc ;==>_AutoIt_FreeObject_StringDraw
ist nichts anderes als die hier aus der gdi+Spoiler anzeigen
[autoit]Func _GDIPlus_GraphicsDrawString($hGraphics, $sString, $nX, $nY, $sFont = "Arial", $nSize = 10, $iFormat = 0)
[/autoit]
Local $hBrush = _GDIPlus_BrushCreateSolid()
Local $hFormat = _GDIPlus_StringFormatCreate($iFormat)
Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
Local $hFont = _GDIPlus_FontCreate($hFamily, $nSize)
Local $tLayout = _GDIPlus_RectFCreate($nX, $nY, 0, 0)
Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat)
Local $aResult = _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
Local $iError = @error
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrush)
Return SetError($iError, 0, $aResult)
EndFunc ;==>_GDIPlus_GraphicsDrawStringund solch eine funktion:
Spoiler anzeigen
[autoit]Func _GDIPlus_GraphicsDrawRoundedRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius = 30, $Pen = "")
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY, $iRadius, $iRadius, 180, 90, $Pen)
_GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY, $iRadius, $iRadius, 270, 90, $Pen)
_GDIPlus_GraphicsDrawArc($hGraphics, $iX, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 90, 90, $Pen)
_GDIPlus_GraphicsDrawArc($hGraphics, $iX + $iWidth - $iRadius, $iY + $iHeight - $iRadius, $iRadius, $iRadius, 360, 90, $Pen)_GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY, $iX + $iWidth - $iRadius / 2, $iY, $Pen)
[/autoit]
_GDIPlus_GraphicsDrawLine($hGraphics, $iX, $iY + $iRadius / 2, $iX, $iY + $iHeight - $iRadius / 2, $Pen)
_GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iRadius / 2, $iY + $iHeight, $iX + $iWidth - $iRadius / 2, $iY + $iHeight, $Pen)
_GDIPlus_GraphicsDrawLine($hGraphics, $iX + $iWidth, $iY + $iRadius / 2, $iX + $iWidth, $iY + $iHeight - $iRadius / 2, $Pen)
EndFunc ;==>_GDIPlus_GraphicsDrawRoundedRect
hat letztens jemand hier im forum veröffentlicht.