Jep Danke!
Jetzt noch ein paar Fehlerbehandlungen eingebaut und ich bin wieder einen Schritt weiter.
Jep Danke!
Jetzt noch ein paar Fehlerbehandlungen eingebaut und ich bin wieder einen Schritt weiter.
Die Sleeps hatte ich reingemacht, um erst mal sicherzustellen, dass das nicht daran liegt, dass der versucht vor dem Ende des Kopieren schon zu lesen...
...ne reine Vorsichtsmassnahme. Die hba ich jetzt auch wieder draussen.
Jep Danke!!! so geht es!!!
Jetzt muss ich mir das mal ansehen, was ich da falsch gemacht habe...
na logisch...
Hier das Verschlüsselungstool mit dem festen PW, was ich zum Erstellen der verschlüsselten INI verwende.
Der Text wird dann mit C&P in die INI kopiert und gespeichert. Wenn das dann mal läuft, werde ich das dynamisch machen... aer erst muss das mal klappen...
;====================================================
;============= Encryption Tool With GUI =============
;====================================================
; AutoIt version: 3.0.103
; Language: English
; Author: "Wolvereness"
;
; ----------------------------------------------------------------------------
; Script Start
; ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <String.au3>
;#include files for encryption and GUI constants
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local $WinMain, $EditText, $InputLevel, $InputPass, $UpDownLevel
Local $EncryptButton, $DecryptButton, $string
#forceref $UpDownLevel
;~~
$WinMain = GUICreate('Encryption tool', 400, 400)
; Creates window
;~~
$EditText = GUICtrlCreateEdit('', 5, 5, 380, 350)
; Creates main edit
;~~
$InputPass = "test"
; Creates the password box with blured/centered input
;~~
$InputLevel = "2"
; These two make the level input with the Up|Down ability
;~~
$EncryptButton = GUICtrlCreateButton('Encrypt', 170, 360, 105, 35)
$DecryptButton = GUICtrlCreateButton('Decrypt', 285, 360, 105, 35)
; Encryption/Decryption buttons
;~~
GUISetState()
; Shows window
;~~
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $EncryptButton
; When you press Encrypt
;~~
GUISetState(@SW_DISABLE, $WinMain)
; Stops you from changing anything
;~~
$string = GUICtrlRead($EditText)
; Saves the editbox for later
;~~
GUICtrlSetData($EditText, 'Please wait while the text is Encrypted/Decrypted.')
; Friendly message
;~~
GUICtrlSetData($EditText, _StringEncrypt(1, $string, $InputPass, $InputLevel))
; Calls the encryption. Sets the data of editbox with the encrypted string
;~~
GUISetState(@SW_ENABLE, $WinMain)
; This turns the window back on
;~~
Case $DecryptButton
; When you press Decrypt
;~~
GUISetState(@SW_DISABLE, $WinMain)
; Stops you from changing anything
;~~
$string = GUICtrlRead($EditText)
; Saves the editbox for later
;~~
GUICtrlSetData($EditText, 'Please wait while the text is Encrypted/Decrypted.')
; Friendly message
;~~
GUICtrlSetData($EditText, _StringEncrypt(0, $string, $InputPass, $InputLevel))
; Calls the encryption. Sets the data of editbox with the encrypted string
;~~
GUISetState(@SW_ENABLE, $WinMain)
; This turns the window back on
;~~
EndSwitch
WEnd
EndFunc ;==>_Main
Dann hier der unverschlüsselte Inhalt der GP.ini:
last but not least der aktuelle Teil:
If FileExists(@ScriptDir & "\GP.ini") Then
FileCopy(@ScriptDir & "\GP.ini", $pfad & '\GP_1.ini')
$file = FileOpen($pfad & 'GP_1.ini', 0)
If $file = -1 Then
MsgBox(0, "ACHTUNG", "GP.ini ist leer " & @CRLF & "oder beschädigt. " & @CRLF & " Bitte die INI erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
Exit
EndIf
EndIf
$chars = FileRead($file)
FileClose($file)
$s_EncryptPassword = "test"
$i_EncryptLevel = "2"
$text = _StringEncrypt(0, $chars, $s_EncryptPassword, $i_EncryptLevel)
Sleep(500)
$inifile = FileOpen ($pfad & 'gp.ini',2)
_FileWriteFromArray($inifile, $text)
Sleep(500)
FileClose($inifile)
Edit:
die Links sind korrekt so und benötigen keinen Backjslash
Edit2:
auch mit FileWrite($inifile, $text) ist die INI leer...
Vielen Dank!
Leider bleibt die neue entschlüsselte INI leer. Ich hab keine Ahnung warum.
Der Schlüssel ist richtig, mit der ich die INI vorher verschlüsselt habe...
Hi zusammen...
Hab da ein Problem mit einem Teilscript.
Ich habe eine verschlüsselte INI, die ich in meinem Programm einlesen, entschlüsseln und in eine neue INI ablegen möchte.
Wie ich es jetzt habe, schreibt er mir nix in die GP.ini... Helft Ihr mir mal bitte aufs Pferd???
[autoit]
if Fileexists(@ScriptDir & "\GP.ini") Then
FileCopy(@ScriptDir & "\GP.ini", $pfad & 'GP_1.ini')
Sleep(100)
$file = FileOpen($pfad & "GP_1.ini", 0)
If $file = -1 Then
MsgBox(0, "ACHTUNG", "GP.ini ist leer " & @CRLF & "oder beschädigt. " & @CRLF & " Bitte die INI erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
Exit
EndIf
EndIf
$chars = FileRead($pfad & "GP_1.ini")
[/autoit][autoit][/autoit][autoit]$s_EncryptPassword = 'irendeinPasswort'
$i_EncryptLevel = '2'
$text = _StringEncrypt(0, $chars, $s_EncryptPassword, $i_EncryptLevel)
Sleep(100)
$file_new = _FileCreate($pfad & 'gp.ini')
$inifile = FileOpen ($pfad & 'gp.ini',2)
[/autoit][autoit][/autoit][autoit]_FileWriteFromArray($pfad & 'gp.ini', $text)
;~ $FileWrite($pfad & 'gp.ini', $text)
;~ FileClose($pfad & 'gp.ini')
FileClose($pfad & "GP_1.ini")
Wenn Deine Hardware geeignet ist für 64-Bit, dann steige auf jeden Fall auf das Win7 64 um.
Du hast noch nie so einen schnell startenden PC gesehen....
Hat da niemand ne Idee zu?
Hallo,
mal ne bescheidene Frage, ob Ihr vielleicht ne bessere Lösung für mich habt als meine.
Ist zwar jetzt eine AutoIt übergreifende Geschichte, aber vielleicht....
Die Setup.exe läuft auf dem angeschlossenen PNA, also habe ich keine Möglichkeit zu kontrollieren, wie weit das Ding da ist.
Zur Zeit schreibe ich vor dem Beenden der Setup.Exe auf dem über Active Sync verbundenen PNA eine Textdatei auf die Storage Card
src = _wfopen(L"\\Storage Card\\setup.txt\0", L"w");
wcscpy(variable, L"-\n");
fputws(variable, src);
fclose(src);
In AutoIt auf dem PC habe ich das dann so gelöst:
[autoit]While 1
GUICtrlSetData($progress, $x)
Run($pfad & 'cecopy.exe ' & $setuptxt & ' ' & '"' & @ScriptDir & '\setup.txt' & '"', @ScriptDir, @SW_HIDE)
If WinExists("No Device Connected") Then
WinClose("No Device Connected")
Exit
EndIf
Sleep(1000)
$x = $x + 4
If $x > 90 Then $x = 90
If FileExists(@ScriptDir & '\setup.txt') Then ExitLoop
WEnd
GUICtrlSetData($progress, 100)
GUICtrlDelete($label_6)
$label_6 = GUICtrlCreateLabel("SKIN WURDE ERFOLGREICH INSTALLIERT", 10, 130, 300, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Habt Ihr da ne andere, bessere Idee, als das hier???
Diese Schnittstelle ist extern und hängt am USB-Anschluss dran.
Ein Fernthermostat damit zu machen ist relativ einfach, da Du über die mitgelieferte 8055.dll den analogen Eingang der Karte auslesen kannst.
Ein Thermofühler reagiert auf die Temperatur mit Veränderung des Widerstandes. Mit einer Berechnung anhand der vorgegebenen Widerstandswerten kannst du dann die Temperatur auf dem PC auslesen. Bei mir zeigt die Software die Vorgabe-Kurve und zusätzlich die Ist-Kurve auf dem Monitor an. Auf Wunsch (wenn meine Frau mal wieder andere Werte haben will... ) kann ich die mittels INI-Datei komplett neu konfigurieren.
Leider habe ich zur Zeit keine Lust an dem Teil weiter zu arbeiten...
Theoretisch kannst du über die verschiedenen analogen und digitalen Eingänge auch den PC steuern... aber damit hab ich mich noch nie befasst...
Die Karte bringt eine DLL mit, die Du in Autoit einbinden musst. das ist alles...
Ich habe z.B. damals eine Ofensteuerung gehäkelt, die über einen Thernofühler den Ofen in mehreren auf dem PC auszuwählenden Temperkurven steuert.
Alles was über digitale, oder analoge Signale zu steuern ist, kannst du damit machen. z.B. auch Roboter-Steuerungen usw... Lichtorgel.
Schau Dich mal bei Velleman.be um, da gibt es auch Beispiel-Projekte
Hallo Darter,
ich benutze seit ca.2- 3 Jahren dieses Teil: --->USB-Interface-Board
Das ding kann ich nur empfehlen!
Da hast du analoge, sowie digitale Ausgänge... kann man viel mit anstellen.
Hallo zusammen,
hatte mich bislang ja noch nicht vorgestellt, was ich hiermit nachhole....
Mein Name ist Peter und ich bin zur Zeit 51 Jahre jung, also Bj: 1959
Ich komme aus dem Umland von Bonn im Rhein-Sieg-Kreis.
Ich betreibe mit einem Kumpel ein Forum für Navigationsgeräte, hier vorwiegend MEDION Gopal-Geräte ---> GoPalWorld
Meine Aufgabe ist das Erstellen der Installer und der Hintergrund-Programme, die es dem User so einfach wie möglich machen sollen, Skins, Tools und Addons zu installieren.
Deshalb hab ich mich jetzt in den vergangenen 2 Jahren mehr oder weniger in AutoIt und ANSI C "eingearbeitet". ...eher weniger als mehr...
Aber bislang hab ich auch mit Eurer Hilfe noch alles ans Laufen bekommen.... auch wenn es mal was länger dauert...
Also habt ein wenig Nachsicht mit mir, wenn ich vielleicht mal DAU-Fragen stelle.
Hallo AutoBert,
da ich über Active Sync auf ein Windows CE zugreife, komme ich mit xCopy nicht an das CE dran. Ich muss hier leider über CECopy gehen, ob mir das gefällt oder nicht...
(Jedenfalls wüsste ich nicht, dass das gehen sollte... )
Ich hab das jetzt so gelöst, dass ich im Verlauf der Installation nach einer Abfrage, ob man wirklich installieren will, eine kleine Exe in Ansi C geschrieben habe, die über die WinAPI in einem Rutsch den Ordner mitsamt Unterordnern löscht. Danach schiebe ich dann CECopy an und lasse die neuen Dateien auf das CE kopieren...
#include <windows.h>
#include <direct.h>
#pragma comment (lib,"ceshell.lib")
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpszCmdLine, int nCmdShow)
{
SHFILEOPSTRUCT fos;
ZeroMemory(&fos, sizeof(fos));
fos.wFunc = FO_DELETE;
fos.pFrom = L"\\Storage Card\\BLUBB\\*\0";
fos.fFlags = FOF_NOCONFIRMATION;
SHFileOperation(&fos);
Sleep(100);
_rmdir("Storage Card\\BLUBB");
Sleep(300);
return 0;
}
Alles anzeigen
Ich denke, das auch dieses Problem mit dem fehlenden #RequireAdmin zu tun hat...
Hallo BugFix,
danke für Deine Antwort.
Das mit dem Umbenennen und dann löschen wollte ich eigentlich umgehen.
Viele User haben die SD so voll gepackt, dass da keine 10MB mehr Platz ist...
Ich dachte, dass der Schalter:
/is Copy file even if identical.
eben genau dies macht?!? Oder liege ich da so falsch???
Stimmt, das hab ich auch gelesen...
Wie du siehts hab ich das gleiche in zeile 6 stehten
Werde deinen tip denoch gleich mal versuchen.
thx
Naja... so ganz richtig war das nicht in Zeile 6...
Du hast die Variable in die Anführungszeichen gepackt:
"Setup von $#PRODUCTNAME$"
[/autoit]Richtig wäre es so:
[autoit]"Setup von" & $#PRODUCTNAME$
[/autoit]Hallo folks,
ich hab hier ein Problem mit CeCopy in einer AutoIt-Source:
Ich rufe mit der Zeile:
[autoit]
RunWait($pfad & 'cecopy.exe /is /s ' & '"' & 'desk:' & $pfad & 'Blubb' & '"' & ' ' & '"' & 'dev:\storage card\Blubb' & '"', @ScriptDir, @SW_HIDE)
die cecopy.exe aus meinem Directory auf, die ich in der Exe includiert habe.
Was mache ich da falsch???
Sobald der Ordner vorhanden ist, überspringt der Installer das Kopieren und geht einfach weiter...
Hier die Doku zu CeCopy:
ZitatAlles anzeigenNAME: CeCopy
DESCRIPTION:
Command line tool for copying files to the device currently connected to desktop ActiveSync.SUPPORTED PLATFORMS:
.Pocket PC 2002 or later
.Smartphone 2002 or laterREQUIREMENTS:
ActiveSync installed and connected to device.SETUP:
None.INSTRUCTIONS:
Usage: CeCopy [options] <Source_FileSpec> <Destination>Options:
/is Copy file even if identical.
/s Include subdirectories, hierarchy reproduced on device.Arguments:
Source_FileSpec File specification denoting the source of the copy.
Destination Where files should be copied to.For the source, wild cards or directory names may be specified, as may be single files. The destination can be either a directory or a file name, depending on the type of source specified.
By default, an argument is assumed to live on a local file system. To indicate that either argument denotes a location on a device connected via ActiveSync, prepend 'dev:' to that argument. To articulate that a local file system is referenced, prepend 'desk:' to the argument.
Examples:
"cecopy readme.txt dev:\readme.txt" copies this readme to the device's root.
"cecopy /s *.* dev:\" copies all files and subfolders of current directory to device's root. Generates new folders on device as needed.
"cecopy /s *.dll dev:\windows" copies all dlls and dlls in subfolders of current directory to the device's root. Generates new folders on device as needed.KNOWN ISSUES:
None.