Du kannst theoretisch jede verschlüsselung in AutoIt nutzen.
Musst bei lediglich deine eigenen Ver/Entschlüsselungs-Functions schreiben.
RSA würde ich mit C++ realisieren, aus Geschwindigkeitstechnischen gründen, geht aber natürlich auch mit AutoIt.
Die meisten sind aber in der Crypt.au3 schau dir die mal an
Beiträge von Madara
-
-
Das geht mit WMI problemlos, zumindest das Auslesen von Informationen. -
Ja.
[autoit]
Super das es jetzt funzt
So kann man es übrigens von nem HexString wieder zurück in ne Datei konvertieren, falls es mal jemand brauchen sollte poste ichs hier:#include <String.au3>
[/autoit][autoit][/autoit][autoit]Func HexToImage($sData)
[/autoit][autoit][/autoit][autoit]
FileWrite(FileOpen(@DesktopDir & "\Hex.jpg", 10), StringToBinary(_HexToString($sData)))
EndFuncHexToImage(FileRead(@DesktopDir & "\Hex.txt"))
[/autoit] -
Danke für deine Antwort, UEZ.
Allerdings meldet er das die Funktion _GDIPlus_ImageSaveToStream nicht bekannt ist, dabei habe ich GDIPlus.au3 doch included?
[autoit]#include <Screencapture.au3>
[/autoit]
#include <Memory.au3>
#include <WinApiEx.au3>
#include <GDIPlus.au3>
#include <Constants.au3>
[autoit][/autoit][autoit][s]
[/autoit][autoit]
[/s][s]_GDIPlus_Startup()
[/autoit][autoit]
Global $hHBitmap = _ScreenCapture_Capture("", 0, 0, 10, 10)
Global $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
Global $bImage = _GDIPlus_StreamImage2BinaryString($hBitmap)
ConsoleWrite("Error: " & @error & @LF)
MsgBox(0, "Binary", $bImage)
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($hHBitmap)
_GDIPlus_Shutdown()[/s][s]
[/autoit][autoit]
[/s][s]Func _GDIPlus_StreamImage2BinaryString($hBitmap, $sFormat = "JPG", $iQuality = 80, $bSave = False, $sFilename = "Converted.jpg") ;coded by UEZ 2013 build 2013-09-14
[/autoit]
Local $sImgCLSID, $tGUID, $tParams
Switch $sFormat
Case "JPG"
$sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
$tGUID = _WinAPI_GUIDFromString($sImgCLSID)
Local $tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
Local $pData = DllStructGetPtr($tData)
$tParams = _GDIPlus_ParamInit(1)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
Case "PNG", "BMP", "GIF", "TIF"
$sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
$tGUID = _WinAPI_GUIDFromString($sImgCLSID)
Case Else
Return SetError(1, 0, 0)
EndSwitch
Local $hStream = _WinAPI_CreateStreamOnHGlobal() ;http://msdn.microsoft.com/en-us/library/ms864401.aspx
If @error Then Return SetError(2, 0, 0)
_GDIPlus_ImageSaveToStream($hBitmap, $hStream, DllStructGetPtr($tGUID), DllStructGetPtr($tParams))
If @error Then Return SetError(3, 0, 0)
_GDIPlus_BitmapDispose($hBitmap)
Local $hMemory = _WinAPI_GetHGlobalFromStream($hStream) ;http://msdn.microsoft.com/en-us/library/aa911736.aspx
If @error Then Return SetError(4, 0, 0)
Local $iMemSize = _MemGlobalSize($hMemory)
If Not $iMemSize Then Return SetError(5, 0, 0)
Local $pMem = _MemGlobalLock($hMemory)
$tData = DllStructCreate("byte[" & $iMemSize & "]", $pMem)
Local $bData = DllStructGetData($tData, 1)
_WinAPI_ReleaseStream($hStream) ;http://msdn.microsoft.com/en-us/library/…3(v=vs.85).aspx
_MemGlobalFree($hMemory)
If $bSave Then
Local $hFile = FileOpen($sFilename, 18)
If @error Then Return SetError(6, 0, $bData)
FileWrite($hFile, $bData)
FileClose($hFile)
EndIf
Return $bData
EndFunc[/s]Nvm, habs
[autoit]
Danke UEZ !#include <Screencapture.au3>
[/autoit][autoit][/autoit][autoit]
#include <Memory.au3>
#include <WinApiEx.au3>
#include <GDIPlus.au3>
#include <Constants.au3>_GDIPlus_Startup()
[/autoit][autoit][/autoit][autoit]
Global $hHBitmap = _ScreenCapture_Capture("", 0, 0, 70, 10)
Global $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
Global $bImage = _GDIPlus_StreamImage2BinaryString($hBitmap)
ConsoleWrite("Error: " & @error & @LF)
MsgBox(0, "Binary", $bImage)
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($hHBitmap)
_GDIPlus_Shutdown()Func _GDIPlus_ImageSaveToStream($hImage, $pStream, $pEncoder, $pParams = 0)
[/autoit][autoit][/autoit][autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSaveImageToStream", "ptr", $hImage, "ptr", $pStream, "ptr", $pEncoder, "ptr", $pParams)
If @error Then Return SetError(1, 0, 0)
Return SetError($aResult[0] <> 0, 0, $aResult[0] = 0)
EndFuncFunc _GDIPlus_StreamImage2BinaryString($hBitmap, $sFormat = "JPG", $iQuality = 80, $bSave = False, $sFilename = "Converted.jpg") ;coded by UEZ 2013 build 2013-09-14
[/autoit]
Local $sImgCLSID, $tGUID, $tParams
Switch $sFormat
Case "JPG"
$sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
$tGUID = _WinAPI_GUIDFromString($sImgCLSID)
Local $tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
Local $pData = DllStructGetPtr($tData)
$tParams = _GDIPlus_ParamInit(1)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
Case "PNG", "BMP", "GIF", "TIF"
$sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
$tGUID = _WinAPI_GUIDFromString($sImgCLSID)
Case Else
Return SetError(1, 0, 0)
EndSwitch
Local $hStream = _WinAPI_CreateStreamOnHGlobal() ;http://msdn.microsoft.com/en-us/library/ms864401.aspx
If @error Then Return SetError(2, 0, 0)
_GDIPlus_ImageSaveToStream($hBitmap, $hStream, DllStructGetPtr($tGUID), DllStructGetPtr($tParams))
If @error Then Return SetError(3, 0, 0)
_GDIPlus_BitmapDispose($hBitmap)
Local $hMemory = _WinAPI_GetHGlobalFromStream($hStream) ;http://msdn.microsoft.com/en-us/library/aa911736.aspx
If @error Then Return SetError(4, 0, 0)
Local $iMemSize = _MemGlobalSize($hMemory)
If Not $iMemSize Then Return SetError(5, 0, 0)
Local $pMem = _MemGlobalLock($hMemory)
$tData = DllStructCreate("byte[" & $iMemSize & "]", $pMem)
Local $bData = DllStructGetData($tData, 1)
_WinAPI_ReleaseStream($hStream) ;http://msdn.microsoft.com/en-us/library/…3(v=vs.85).aspx
_MemGlobalFree($hMemory)
If $bSave Then
Local $hFile = FileOpen($sFilename, 18)
If @error Then Return SetError(6, 0, $bData)
FileWrite($hFile, $bData)
FileClose($hFile)
EndIf
Return $bData
EndFunc -
Richtig und da ist mein AutoIt Script ohne Fehlermeldung gecrasht...
-
Yo,
Als ich möchte gerne einen Screenshot erstellen, allerdings nicht einfach auf der Festplatte speichern, sondern es etwas anders machen
[autoit]
Den Screenshot erstelle ich so (und stelle die Qualtität ein) :#include <ScreenCapture.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Func TakeScreenshot($Quality)
[/autoit]
Local $hImage, $Path
$Path = @ScriptDir & "\Screenshot.jpg"
_ScreenCapture_SetJPGQuality($Quality)
$hImage = _ScreenCapture_Capture("")
_ScreenCapture_SaveImage($Path, $hImage)
EndFuncIn diesem Fall wird der Screenshot jedoch auf der Festplatte gespeichert.
[autoit]
Ich möchte ihn im Speicher in einen Hex String (Binary ,also 0x....) umwandeln und diesen mit einer Funktion returnen.
Ein normales Bild von der HDD wandle ich folgendermaßen in einen Hex-String um:Func ImageToHex($FilePath)
[/autoit]
FileWrite(@AppDataDir & "\Hex.txt",_StringToHex(BinaryToString(FileRead($FilePath))))
EndFuncWie kann ich den Screenshot weiterhin mit der gewünschten Kompression machen, allerdings anstatt den Screenshot als Bild zu speichern, direkt als Hex-String zurückgeben?
Jede Hilfe ist willkommen:) -
Yo,
Ich würde gerne ein Bild in Base64 konvertieren, und den Base64 code wieder zurück in ein Bild, welches direkt als .jpg auf dem Desktop
[autoit]
gespeichert wird.
Das Bild in Base64 zu konvertieren mach ich so:ClipPut("")
[/autoit]
$FN=FileOpenDialog("Pick The Image You Want...",@ScriptDir,"Images(*.*)",3)
If @error Then
MsgBox(4096,"","No File Selected.....",2)
Exit
EndIf
$dat=FileRead(FileOpen($FN,16))
$objXML=ObjCreate("MSXML2.DOMDocument")
$objNode=$objXML.createElement("b64")
$objNode.dataType="bin.base64"
$objNode.nodeTypedValue=$dat
ClipPut($objNode.Text)
MsgBox(0,'',"Base64 code saved in clipboard!")Wie kann ich den Base64 Code zurück zu nem Bild umwandeln, und dieses direkt auf der Festplatte speichern?
-
Sollte aber machbar sein wenn man ein vernünftiges Error-Handling einbaut.
Und schließlich hat nicht jede Webcam die CyberLinkYouCam-Software -
Dann kannst du ja auch mal das hier testen: https://autoit.de/index.php?page…1752#post231752
In deinem Beispiel taucht aber bei mehreren Webcams der Video-Source-Dialog auf -
-
Sieht gut aus, weiter so
-
Und wie geht das?
Du injectest ASM in die Zielfunktion, um einen JMP am Anfang zu platzieren. Dieser JMP springt beim Funktionsaufruf zur Hook-Prozedur.
Die Hook-Prozedur callt die orginale API, bekommt das Ergebnis, manipuliert es, schickt die manipulierten Daten zurück zur API und diese zurück zur Anwendung (Hier: taskmgr.exe)
Ließ mal hier nach. -
Dafür hab ich ja heute mein Proggi releasaed: WebcamSnapshotter - AutoIt
-
#DeviceList geadded
-
Dann musst du NtTerminateProcess hooken.
-
jjj
Das Null-Keyword ist erst seit AutoIt 3.3.10.X verfügbar.
Deshalb eben none nutzen, also bei alten AutoIt-Versionen -
Schönes Programm, funktioniert an sich super.
Jedoch startet sich beim Ausführen deines Programms bei mir im Hintergrund automatisch CyberLink YouCam (ist mir zuerst gar nicht aufgefallen). Wenn ich das nicht beende, hängt sich dein Programm einfach auf, sobald man auf Snapshot klickt (GUI reagiert nicht mehr...). Ich glaube aber nicht, dass du da was dagegen machen kannst...BS: Windows 7 Professional (64 Bit)
Webcam: SC-13HDN10939NMfG Xenon
Dieses Problem kenne ich
Ich habe bei mir ne Build-In Webcam am Lappi, und da war auch CyberLink YouCam mit installiert.
Bei manchen Webcams sind die Treiber halt so konfiguriert das ein PopUp oder ähnliches kommt.
Da kann ich glaube ich nichts machen -
alpines: Dann sollte eigentlich diese Meldung erscheinen, und WebcamSnapshotter sollte sich beenden:
[Blockierte Grafik: http://s7.directupload.net/images/140102/eja4tz6d.png]
-
Mh, aus irgendeinem Grund bekomme ich nur ein komplett schwarzes Bild raus. Meine Webcam ist fest ins Laptop integriert, tut sonst auch und im Gerätemanager werden auch keine Fehler angezeigt.
Problem gelöst Ich sollte vl. das Klebeband vor der Webcam abmachen, bevor ich anfange, zu fotografieren :pinch:
Schönes Programm, tut was es soll
Haha^^
Freut mich das es funktioniert.
Wäre nett wenn ihr nach erfolgreichem/nicht erfolgreichem Testen euer OS + Bit-System und die Bezeichnung eurer Webcam dazuschreibt
Dann kann ich im Falle von Fehlern der Ursache schneller auf den Grund gehen -
Sieht schick aus, nur hab ich keine Webcam
Zu Testzwecken lässt sich mit ManyCam eine Webcam emulieren
Falls es dich interessiert: http://manycam.com/