doch so einfach ... tatsächlich, hat geklappt ... und ich dachte, dass ich jetzt eine seminar über das rechtemanagement von windows belegen müsste.
DANK DIR!
Beiträge von WhiteLion
-
-
Moin Leute,
bislang hab ich immer auf meiner Machine mit abgeschalteten UAC und als Admin gearbeitet. Neuerdings muss ich auch auf
anderen Rechnern mit Win 7,8,8.1 ... als Standardbenutzer meine Scripte ausführen, was mich bei Tests jedoch für ein Problem sorgte:Die Funktion #RequireAdmin verursacht, dass meine Scripte beim Starten in eine Endlosschleife gelaufen sind.
Nun stelle ich mir die Frage, wie ich mein Script was ich irgendwie in den Autostart bringen muss
am einfachsten und ohne den Nutzer zu nerven mit vollen rechten starte.
Weiterhin startet dieses Script in verschienden abständen einen Update-Script was für die (automatische) Aktuallisierung des Programmes
dient und später evtl noch andere Aufgaben übernehmen soll für das dann (da bin ich mir noch unsicher) evtl auch Adminrechte benötigt werden.Ich möchte den Nutzer eigentlich nur einmal (bei der Installation) mit einerAdminrechte-Frage nerven, auf kenen Fall aber jedes Mal beim Autostart.
Wie stelle ich das am besten an und warum geht #RequireAdmin nicht ?
-
Ich muss Euch leider enttäuschen.... ich habe leider nichts, außer meine Fantasie
Auch ist mir ein Großteil der Problem bekannt- Nein halt, ich will es mal so ausdrücken:
Mir ist folgendes auch bekannt:
Ein ASSEMBLER übersetzt lediglich die in Assemblersprache geschriebenen Mnemonics eins zu eins in Opcodes.
Nur war mir nicht bekannt dass ich aus einer 64-bit Anwendung keine module mit 32 bit ansprechen kann.
Ich rufe ja nur funktionen der DLL auf denen ich was übergebe. (zb "push ebx"... oder so)
heraus bekomme ich dann eben den opcode für 32 bit, oder eben den für 64 bit (das funktioniert ja schon)
dann herhalte ich einen rückgabewert oder pointer auf eine struct ...etc
warum kann ich jetzt nicht angeben, dass diese rückgabe eine 32 oder 64 ist um dann das richtige (stack/calling convention)
zu veranlassen um die rückgabe richtig zu interpretieren.
gibt es dafür keine windows API´s oder OS - seitige lösung ? - das 64 bit betriebsystem kommt ja auch mit beidem klar ...
sich denke ich wohl viel zu naiv, trotzdem würde ich mich freuen etwas dazu zu lernen und die probleme zu verstehen.ich bin /war ich wohl von der AutoIt Community so verwöhnt (es gibt mittlerweile so
viele spielereien mit ASM in den AutoIt - Foren), dass ich dachte es würde dafür auch bereits was geben.
Das einfachste wäre dann wohl einfach die Make-Grafik - Variante zu benutzen und eine 32-bit anwendung zu droppen
und dann mir den krams zurückgeben zu lassen in meine 64 -bit anwendung zu importieren. -
Ja sorry, ich meinte ja auch nicht, dass es doppelt kompiliert wird ... war etwas unglücklich von ausgedrückt.
Was ich genau möchte ist eigentlich gar nicht so kompliziert (dachte ich):
Ich möchte nur bytecode und zwar aus assembler code welchen ich in einem edit-feld schreibe. (so wie das halt ein assembler macht jmp 0040FA100 = EB ...... )
die Autoit-Anwendung aus der ich diesen code generiere muss zwingend 64-kompiliert werden. (also #AutoIt3Wrapper_UseX64=y)
und der bytecode soll optional 32 oder auch als 64 bit variante assembliert herauskommen. (dazu benuzte ich eine checkbox [x] genetiere 32Bit Bytecode (sonst 64))
schön wäre es, wenn es ohne irgendwelche dll oder exe drops auf die platte funktioniert, ist aber kein muss.Mein Problem hat Make-Grafik ja schon gut erkannt: sobald man sein programm 64-kompiliert funktioniert das ganze nicht mehr, weil wohl dann aus einer 64 bit anwendung eine
32 bit dll gecalled wird .... -
klasse ... das geht.... danke für die mühe
allerdings geht es nur bei der kompilierung mit 32 bit
geht:
#AutoIt3Wrapper_UseX64=n
geht nicht:
#AutoIt3Wrapper_UseX64=y -
danke an euch beide für die mühe....
@Make-Grafik
deine version läuft bei mir nicht wegen dieser "neumodischen objekte" ala "$tCode.var" die mein AutoIt 3.3.8.1 nicht mag (leider kann ich nicht updaten, da ich dann bei meinem projekt viele anpassungen machen muss - (hatte es versucht und bekomme dann abstürtze ohne fehlermeldungen in meinem großen projekt die ich nicht nachvollziehen kann und aufgrund von zeitmangel hab ich dann wieder die alte version eingespielt.)@Andy
das doppelte kompilieren kommt für mich irgendwie auch auch nicht in frage, denn ich hatte mir das so vorgestellt, dass ich in meiner 64bit kompilieren anwendung bytecode erzeugen lasse, den ich per klick als 32 oder halt 64 bit bitcode ausgeben lasse. (den code an sich und nicht starten oder sowas) -
vielen dank, aber das entscheide hast du mir leider nicht verraten... funktioniert sie auch mit 64bit kompilierung ? / kann sie 64 bit code erzeugen ?
-
moin leute,
ich hab längere zeit die alte fasm.au3 verwendet. Und zwar ging und geht es mir nur darum aus einem inputfenster bytecode zu erzeugen, sowohl x86 als auch x64 ... letzteres war ein problem was ich hier mit zu lösen hoffte, es aber irgendwie nciht hinbekomme... evtl könnt ihr mich untersützen ... ich kompiliere sowohl als 32, als auch als 64 bit... 32 bit geht, aber bei 64 bit registern gehts nicht
[autoit]Func _CreatBYTECODEofASM($setMode = 32)
[/autoit]
if $setMode = 32 then $setMode = "use32" ; Wir arbeiten im 32-Bit Modus
if $setMode = 64 then $setMode = "use64" ; Wir arbeiten im 64-Bit Modus
$AsmInput = "push rax"
$AsmInputRA = StringSplit($setMode & @CR & $AsmInput,@CR)
For $x=1 to $AsmInputRA[0]
$z = StringRegExpReplace($AsmInputRA[$x], '\r', '')
$z = StringRegExpReplace($z, '\n', '')
Next
$Bytecode = _FASM_CompileASM($AsmInputRA[2]) ; Binärcode erzeugen
$Bytecode = StringTrimLeft($Bytecode,2)
MsgBox(0,"Out", $Bytecode)
Return $Bytecode
EndFunc -
ich hab das scrolling mal mit kleinen grafiken versucht 200x200 pixel, was in etwa deinem vorschlag entspricht.... das flimmert zwar nicht, aber der bildaufbau dürfte so bei 3-5 frames pro sekunde liegen. das ist natürlich alles andere als ausreichend.
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <GDIPlus.au3>Global $gui, $guiPos, $pic, $picPos
[/autoit][autoit][/autoit][autoit]; Initialisiert (startet) Microsoft Windows GDI+ und lädt das Bild
[/autoit][autoit][/autoit][autoit]
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile("c:\Programme\AutoIt3\AutoIT-eigenerkrams\2.jpg")
$hGraphic2 = _GDIPlus_GraphicsCreateFromHWND($Gui)
Example1()Func Example1()
[/autoit][autoit][/autoit][autoit]
Local $n, $msg$Gui = GUICreate("My GUI picture", 350, 300, -1, -1, $WS_SIZEBOX + $WS_SYSMENU)
[/autoit][autoit][/autoit][autoit]GUISetBkColor(0x000000)
[/autoit][autoit][/autoit][autoit]
;$n = GUICtrlCreatePic("c:\Programme\AutoIt3\AutoIT-eigenerkrams\formular.jpg", 50, 50, 200, 50)
GUISetState()While 1
[/autoit][autoit][/autoit][autoit]
$msg = GUIGetMsg()If $msg = $GUI_EVENT_CLOSE Then ExitLoop
[/autoit][autoit][/autoit][autoit]
for $x = 0 To 200 step 5;_GDIPlus_GraphicsDrawImage($hGraphic2, $hImage, 200, 100+$x)
[/autoit][autoit][/autoit][autoit]_GDIPlus_GraphicsDrawImageRectRect($hGraphic2, $hImage, 50, 50, 200, 200, 300, 100+$x, 400, 300)
[/autoit][autoit][/autoit][autoit]Next
[/autoit][autoit][/autoit][autoit]
WEndGUIDelete()
[/autoit]
EndFunc -
*bump*
niemand eine idee ?
-
moin leute,
[autoit]
ich hab eigentlich vor ein 500 x 2000 pixel grosses bild in einer 500x500 GUI scrollen zu lassen.
jetzt hab ich etwas rumprobiert und stoße schon bei sehr kleinen bildern auf probleme.
d.h. beim scrollen flackert es ordentlich, was mir gar nicht gefällt. - ich suche nach einer lösung, bin jedoch planlos.#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>Global $gui, $guiPos, $pic, $picPos
[/autoit][autoit][/autoit][autoit]Example1()
[/autoit][autoit][/autoit][autoit]Func Example1()
[/autoit][autoit][/autoit][autoit]
Local $n, $msgGUICreate("My GUI picture", 350, 300, -1, -1, $WS_SIZEBOX + $WS_SYSMENU)
[/autoit][autoit][/autoit][autoit]GUISetBkColor(0x000000)
[/autoit][autoit][/autoit][autoit]
$n = GUICtrlCreatePic("c:\Programme\AutoIt3\AutoIT-eigenerkrams\formular.jpg", 50, 50, 200, 50)
GUISetState()While 1
[/autoit][autoit][/autoit][autoit]
$msg = GUIGetMsg()If $msg = $GUI_EVENT_CLOSE Then ExitLoop
[/autoit][autoit][/autoit][autoit]
for $x = 0 To 200
Sleep(10)
GUICtrlSetPos($n, 50, 59+$x, 200, 100)
Next
WEndGUIDelete()
[/autoit]
EndFunc -
danke für die erklärung .... ich hatte bei der beschreibung erst die befürchtung, dass ich das für jeden ctrl einzeln machen müsse.
-
danke....
das problem: wie kommt man auf....:
Opt("GUIResizeMode",802)
....bei der beschreibung von GUIResizeMode???!!!:
Ändert das Standardverhalten bei Größenveränderung für ein Control.
0 = (Standard) behält das Standardverhalten bei.
<1024 = jede Art der Größenveränderung, siehe GUICtrlSetResizing.bei GUIResizeMode ... steht dazu auch nix
was bedeutet die 802 ?
-
Also hier ein beispiel.... die knöpfe und alles sonst sollte beim vergrößern an gleicher position bleiben.
[autoit]#include <WinAPI.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <FontConstants.au3>$Form1_1 = GUICreate("Test", 400, 780, -1, -1, BitOR($GUI_SS_DEFAULT_GUI,$DS_MODALFRAME), 0)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
$res = GUICtrlCreateGroup("res", 16, 336, 314, 105)
$chk_2 = GUICtrlCreateCheckbox("Type 2", 123, 351, 57, 15)
$chk_3 = GUICtrlCreateCheckbox("Type 3", 196, 351, 57, 15)
$chk_4 = GUICtrlCreateCheckbox("Type 4", 271, 351, 57, 15)
$chk_5 = GUICtrlCreateCheckbox("Type 5", 123, 373, 57, 15)
$chk_6 = GUICtrlCreateCheckbox("Type 6", 196, 373, 57, 15)
$chk_7 = GUICtrlCreateCheckbox("Type 7", 271, 373, 57, 15)
$chk_8 = GUICtrlCreateCheckbox("Type 8", 123, 394, 65, 15)
$chk_9 = GUICtrlCreateCheckbox("Type 9", 123, 415, 105, 15)
$chk_10 = GUICtrlCreateCheckbox("Type 10", 196, 394, 65, 15)
$chk_11 = GUICtrlCreateCheckbox("Type 11", 271, 394, 57, 15)GUISetState(@SW_SHOW)
[/autoit]
Sleep(2000)
WinMove($Form1_1, "", Default, Default, 1200,810, 100)
Sleep(2000) -
habe ich, trotzdem bekomme es nicht hin
ich möchte das ändern der größe von allen controlls einfach abstellen, wenn sich das fenster in der größe ändert.... gibt aber auch kein ordentliches beispiel dafür.
die option ist ja mal echt schlecht beschrieben. -
moin Leute,
[autoit]
wenn ich per WinMove die Größes meiner GUI verändere, dann dehnen oder quetschen dadurch alle Controll-Elemente.
Wie kann ich das verhindern ? - Ich möchte nur in der Horizontalen nach rechts weg ein bisschen mehr Fenster dazu haben bzw schrumpfen. gibt es andere Möglichkeiten ?$Form1_1 = GUICreate("Test", 1260, 780, -1, -1, BitOR($GUI_SS_DEFAULT_GUI,$DS_MODALFRAME), 0)
[/autoit]
WinMove($Form1_1, "", Default, Default, 780+($horizintal_width*10),810, 100) -
-
super. danke dir
-
moin leute,
ich würde gerne wissen wie ich ascii grafiken (ich hänge mal ein beispiel an)
anzeigen lassen kann. im editfeld geht das ganze ja leider nicht.
notepad++ kann es ... wie löse ich das problem ?
danke und LG -
fazit: du musst dir einfach ein großes botnetzwerk aufbauen, damit es sich lohnt