dll findest du hier:
C++ - Icon in DLL hinzufügen
und icons kannst du mit dem resource hacker einfügen (google)
dll findest du hier:
C++ - Icon in DLL hinzufügen
und icons kannst du mit dem resource hacker einfügen (google)
Mit dem Oscar Protokoll kannst du über TCP einen eigenen ICQ Client schreiben, aber halt nicht dein installiertes ICQ steuern.
(Wenn trotzdem Interesse besteht, könnt ich dir etwas Lektüre uploaden.)
Sollte doch auch gehen, indem du die Shutdown.exe umbenennst und an deren Stelle ein compiliertes AutoIt-Script erstellst mit dem Namen: Shutdown.exe.
Was mir auf Anhieb auffällt ist, schreib mal lieber im OnEventModus.
Das GUIGetMsg() bremst deine Schleife stark aus, und verursacht das Ruckeln.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Width = 300
$Height = 460
$JumpSpeed = 0.07
$JumpHeight = 250
$MoveSpeed = 10
$GUI1 = GUICreate("Doodle Jump - Beta", $Width, $Height)
GUISetState(@SW_SHOW)
$pDoodle_Rechts = @ScriptDir & "\Doodle_Rechts.png"
$pDoodle_Links = @ScriptDir & "\Doodle_Links.png"
$pBalken_Gruen = @ScriptDir & "\Balken-Grün.png"
_GDIPlus_Startup()
$Background = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\background.jpg")
$Doodle_Rechts = _GDIPlus_ImageLoadFromFile($pDoodle_Rechts)
$Doodle_Links = _GDIPlus_ImageLoadFromFile($pDoodle_Links)
$Balken_Gruen = _GDIPlus_ImageLoadFromFile($pBalken_Gruen)
$Doodle_Height = _GDIPlus_ImageGetHeight($Doodle_Rechts)
$Doodle_Width = _GDIPlus_ImageGetWidth($Doodle_Rechts)
$AktuellerDoodle = $Doodle_Rechts
$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI1)
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $Graphic)
$Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit] [autoit][/autoit] [autoit]$i = 0
$x = 50
While Sleep(5)
If _IsPressed("25") Then
If $x >= 10 Then
$x -= $MoveSpeed
$AktuellerDoodle = $Doodle_Links
ElseIf $x <= 10 Then
$x = 0
$AktuellerDoodle = $Doodle_Links
EndIf
ElseIf _IsPressed("27") Then
If $x <= $Width - $Doodle_Width - 15 Then
$x += $MoveSpeed
$AktuellerDoodle = $Doodle_Rechts
ElseIf $x >= $Width - $Doodle_Width - 15 Then
$x = $Width - $Doodle_Width - 14
$AktuellerDoodle = $Doodle_Rechts
EndIf
EndIf
$i += $JumpSpeed
$y = $Height - $Doodle_Height - 5 - Abs(Sin($i)) * $JumpHeight
_GDIPlus_GraphicsDrawImage($Buffer, $Background, 0, 0)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImage($Buffer, $AktuellerDoodle, $x, $y)
_GDIPlus_GraphicsDrawImage($Buffer, $Balken_Gruen, 100, 230)
_GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width, $Height)
WEnd
Func _Exit()
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_ImageDispose($Buffer)
_WinAPI_DeleteObject($Bitmap)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Probier es mal mit: StdinWrite($pid, 0x1B)
0x1B ist der Hexcode für das ESC-Zeichen im ASCII-Zeichensatz
Probiers mal so:
#include <ScreenCapture.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
While 1
Sleep(50)
WEnd
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam <> $WM_KEYDOWN Then
Local $flags = DllStructGetData($tKEYHOOKS, "flags")
If $flags = $LLKHF_UP Then
If DllStructGetData($tKEYHOOKS, "vkCode") = 27 Then Exit ; Esc-Taste gedrückt
ConsoleWrite("$LLKHF_UP: Tastencode (scanCode) - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & " Virtueller Tastencode (vkCode) - " & DllStructGetData($tKEYHOOKS, "vkCode") & @LF)
ElseIf $flags = 129 Then
If DllStructGetData($tKEYHOOKS, "vkCode") = 44 Then ; Print-Taste gedrückt
$i = 1
$u = 0
Do
If FileExists($i & ".jpg") Then
Else
_ScreenCapture_Capture(@DesktopDir & "/" & $i & ".jpg", 0, 0, -1, -1, True)
$u = 1
EndIf
$i = $i + 1
Until $u = 1
EndIf
EndIf
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Func OnAutoItExit()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc ;==>OnAutoItExit
Es fragt global ab ob die Tasten "Print" oder "Esc" betägtigt wurden. Print speichert die Datei, Esc beendet das Programm. Hab auf meinem Netbook leider keine Games, aber mit Flash gehts im Vollbildmodus.
Wenn er mit der Print-Taste Screenshots machen kann, dann sollte das doch auch mit der Api-Funktion gehen, oder hat die Windowsinterne Print-Tasten-Funktion auf eine andere Vorgehensweise?
Werden die HotKeys ausgeführt? Wenn nicht könnte vllt der Artikel helfen:
http://www.bauer-martin.com/detailansicht/…cken/index.html
Hast du mal @error abgefragt?
Wenn ein Fehler auftritt ist $Socket = -1, es wird also kein Array erzeugt.
Edit: zu langsam
Stimmt, da hab ich gar nicht dran gedacht.
Besten Dank!
Ich habe ein Archiv mit über 2000 Bildern. Alle sind durchweg nummeriert und haben die gleichen Maße, sowie keine Dateiinformationen. Leider sind vor dem Durchnummerieren einige Doppler dazwischen geraten.
Nun würde ich gerne die doppelten Bilder löschen lassen. Bisher ist mir nur die Möglichkeit über PixelChecksum eingefallen. Aber wie sicher ist das ganze? Kann es mir passieren das ich damit falsche Bilder rauslösche?
Oder hat jemand noch eine andere Idee?
Danke schonmal!
beim drüberschaun ist mir auch gerade noch aufgefallen:
müsste es nicht statt char byte und statt uchar ubyte heißen?
edit: C++ hab ich auch mal begonnen und sehr schnell das Interessa dran verloren,
find Nasm da toller, nur leider meckert mein Vierenscanner einige Programme danach an ![]()
komisch, sonst geht das eigtl.
ansonsten könntest du noch die andere Funktion "fnGetCoreTempInfoAlt" probieren
ZitatFor compatibility with some programming languages a function was added.
It uses Win32 API calling convention and is declared as follows:bool WINAPI fnGetCoreTempInfoAlt(CORE_TEMP_SHARED_DATA *pData);
typedef bool (*fnGetCoreTempInfoAlt)(CORE_TEMP_SHARED_DATA *pData);
fnGetCoreTempInfoAlt GetCoreTempInfo;
dann probiers mal mit "int"^^
Probiers mal so, kanns aber gerade nicht testen
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("The Game", 633, 454, 193, 115)
GUISetBkColor(0x0000FF)
$Start = GUICtrlCreateButton("Start", 192, 280, 217, 97, 0)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
$Pic1 = GUICtrlCreatePic("bsp1.jpg", 64, 40, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Pic2 = GUICtrlCreatePic("bsp2.jpg", 256, 40, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Pic3 = GUICtrlCreatePic("bsp3.jpg", 456, 40, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Form2 = GUICreate("The Game", 633, 454, 193, 115)
GUISetBkColor(0x0000FF)
GUICtrlSetFont(-1, 25, 400, 0, "")
$1 = GUICtrlCreateButton("bsp", 232, 120, 153, 41, 0)
$Label = GUICtrlCreateLabel("Game", 168, 24, 286, 41)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
$2 = GUICtrlCreateButton("bsp", 232, 176, 153, 41)
$3 = GUICtrlCreateButton("bsp", 232, 232, 153, 41)
$Back = GUICtrlCreateButton("Zurück", 470, 400, 153, 41)
GUISetState(@SW_SHOW, $Form1)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $Start
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form2)
Case $GUI_EVENT_CLOSE
If $msg[1] = $Form1 Then ;Fenster 1 geschlossen
ExitLoop
Else ;Fenster 2 geschlossen
GUISetState(@SW_SHOW, $Form1)
GUISetState(@SW_HIDE, $Form2)
EndIf
Case $Back
MsgBox(0, '', 'Button 2 geklickt')
EndSwitch
WEnd
GUIDelete($Form1)
GUIDelete($Form2)
Ich kanns gerade nicht testen, aber was mir aufgefallen ist:
im DllCall fehlt die aufzurufende Funktion der Dll
ZitatDllCall ( "dll", "return type", "function" [, "type1" [, param1 [, "type n" [, param n]]]] )
also:
[autoit]
DllCall("GetCoreTempInfo.dll", "bool", "fnGetCoreTempInfo", "ptr", DllStructGetPtr($CORE_TEMP_SHARED_DATA))
ZitatUnd genau da liegt der Hase im Pfeffer. Wer das KnowHow hat, der macht alles andere als zu versuchen in irgendwelchen "Pixelbots" für WOW den Angel-Code zu "knacken"....Wobei mal wieder die Zielgruppe der Decompiler-User festgelegt wäre
Wer das KnowHow hat, wird sich dann aber wohl lieber an größeren Projekte austoben (Spiele, gut geschützte Software, ...), als mal nebenbei nen kleines Autoit-Script zu knacken. Also sollte es doch reichen die Scripte gegen Anfänger zu sichern, damit diese keine Passwörter usw. auslesen!?
ZitatJetzt wäre nur noch die Frage, wozu jemand, der fit in Assembler ist, einen Decompiler braucht?!
Nen Autoitdecompiler wird er wohl dann nicht benötigen, aber wenn der Debugger an einem Protector verzweifelt, sollte man den Maschienencode zumindest in Assembler übersetzen. Denn Maschienencode können wahrscheinlich nur die wenigsten direkt lesen, falls überhaupt jemand.
Du könntest die Exe noch einmal durch einen Protector jagen, wie zum Beispiel MEW. Dieser sollte den Meisten Debugger und Decompilierern schon etwas Kopfzerbrechen bereiten
Bietet natürlich auch keinen 100%igen Schutz, sollte aber zumin Anfänger vom Cracken abhalten.
Die Syntax von Autoit ist aber auch schon so eher schwerer zu durchschauen und nichts für i-welche Scriptkiddies.
C++, VB und ASM sind da m.E. viel einfacher zu verstehen.
Kannst du die Aufgabenstellung mal bitte genau abschreiben, zumin sieht mir das gerade nur nach einer groben Umschreibung aus^^
Also davon ausgegangen, das man alle 30s einen Samen setzen darf, aber dafür keine 30s braucht:
Also wenn ein Baum zum Wachsen 6 Minuten und du zum Hacken 1 Minute brauchst, dann müsstest du den zweiten Samen nach 1min 5s setzen, sodass der zweite Baum nach 7min 5s gewachsen ist, also 5 Sekunden nachdem der erste gehackt ist, nach 2min 10s den Dritten, sodass du diese 5s nach dem 2. fällen kannst (bei 8:10min), usw.
Also jede 1:05 Minuten nen Samen setzen. (1:05min * x)
Davon ausgegangen, das man 30s braucht um einen Samen zu setzen:
(1:05min * x - 30s)
- Wiedergabeliste zusammenstellen
- unter Medienbibliothek -> rechtsklick auf die entsprechende Liste
- "Datenspeicherort öffnen"
- nun einfach noch in die Verknüpfung zum Mediaplayer den Pfad und Namen der Liste als Parameter angeben (an die Anführungszeichen denken)
z.B: "C:\Programme\Windows Media Player\wmplayer.exe" "C:\Dokumente und Einstellungen\User\Eigene Dateien\Eigene Musik\Eigene Wiedergabelisten\Test.wpl"
nun wird beim Start des Mediaplayer die Wiedergabeliste abgespielt, hoffe das ist das was du suchst
lg ahnungslos