Leider kenne ich micht mit dem ganzen DLL Zeug nicht aus und hab auch hier somit keinen Plan, wie das geht.
Wär ntt, wenn das jemand für mich machen könnte:
Beiträge von jjj
-
-
Hilft dir das:
[autoit]_IEGetObjById
[/autoit]
;und
_IEAction?
-
Hab mir den Link durchgelesen, ich glaube, ich hab das Prinzip verstanden, aber ich hab keinen Plan, wie man das in AutoIt umsetzt. Wär nett, wenn das jemand hier einbauen könnte:
[autoit]#include <Security.au3>
[/autoit][autoit][/autoit][autoit]
#include <WinAPI.au3>#RequireAdmin
[/autoit][autoit][/autoit][autoit];Debug-Privlegien holen...
[/autoit][autoit][/autoit][autoit]
Local $hToken = _Security__OpenProcessToken(_WinAPI_GetCurrentProcess(), $TOKEN_ALL_ACCESS)
_Security__SetPrivilege($hToken, $SE_DEBUG_NAME, True)
_WinAPI_CloseHandle($hToken);Escape-Funktion registrieren
[/autoit][autoit][/autoit][autoit]
HotKeySet("{ESC}", "_Escape");Critical-Flag auf <TRUE> setzen
[/autoit][autoit][/autoit][autoit]
_WinAPI_SetProcessIsCritical(True);Hauptschleife
[/autoit][autoit][/autoit][autoit]
While True
Sleep(20)
WEndFunc _Escape()
[/autoit][autoit][/autoit][autoit]
;Critical-Flag auf <FALSE> setzen
MsgBox(0, "", _WinAPI_SetProcessIsCritical(False))
Exit
EndFuncFunc _WinAPI_SetProcessIsCritical($bState)
[/autoit]
$avReturn = DllCall("ntdll.dll", "int:cdecl", "RtlSetProcessIsCritical", "boolean", $bState, "ptr", 'none', "boolean", False)
Return $avReturn[0]
EndFuncDanke
-
Und wie geht das?
-
Hatte ich versucht, ging aber nicht. Hab dann wahrscheinlich die " vergessen , oder so.
Trotzdem sollte da eine MsgBox kommen, das Problem ist, dass iich als Admin angemeldet bin.
-
Danke,
Problem fast gelöst. Es wäre gut, wenn nicht gleich der ganze PC abkratzen würde, wenn man des Progamm versucht zu beenden. So ist es dann ja auch geschlossen, und die Daten sind Weg.
Geht es nicht irgendwie, dass einfach nur eine MsgBox kommt, von wegen "Kann nicht beendet werden" und dann läuft alles normal weiter? -
Danke für die ganzen Antworten, werde das gleicht mal einbauen.
Ich hab das Scripte von chesstiger mal getestet, aber da kommt immer eine Fehlermeldung in Z. 29: $avReturn = DllCall("ntdll.dll", "int:cdecl", "RtlSetProcessIsCritical", "boolean", $bState, "ptr", Null^ ERROR
Missing separator character after keyword.
Weiß jeman, warum, bzw. wie man das beheben kann? -
Ich kann versichern, dass das kein Virus ist
Und danke, ich habs jetzt so gelöst, dass der Aktuelle schritt in einer Variablen steht und die Funktion bei OnAutoItExitRegister das dann zu Ende führt.
Ist aber nicht gerade schön. -
dafür müssen dann aber alle Variablen Global sein, oder geht das auch anders?
-
Danke, aber das Problem mit dieser Funktion ist, dass der geschützte Teil von Anfang bis Ende durchlaufen soll. Mit OnAutoItExitRegister startet man doch nur eine registrierte Funktion, oder irre ich mir da? Oder kann man da reinschreiben, dass das Script fortgesetzt werden soll?
-
Hallo zusammen und Frohes Neues,
ich hab ein Script, dass vor dem Schließen geschützt werden soll. Egal ob durch den Taskmanger, über die CMD, oder durch das Herunterfahren des PCs. Das Script läuft in einer Endlosschleife und zwischendrin gibt es einen Bereich, in dem einige Daten nur in den Variablen des programms gespeichert sind. In diesem bereich sollte es nicht geschlossen werden können, sondern erst wieder wenn alle daten wieder in anderen dateien gesichert sind. Es sollte zuminset eine Nachfrage kommen, ob es wirklich beendet werden soll.
Ich hoffe, ihr versteht, was ich meine.Schonmal Danke im Vorraus.
-
Danke für die Tipps, ich denke, ich bekomme das jetzt hin.
-
ok, danke
mit InetGet kann ich das natürlich machen, nur soll es auch gehen, wenn man alles innerhalb eines Netzwerkes macht.
Kann man dafür, um die dateien prarllel hoch- bzw. runterzuladen die Funktion mit AdlibRegister aufrufen und zu Beginn AdlibUnRegister in die Funktion schreiben? -
Wie kann man denn eine Funktion aufrufen, ohne dass auf die Beendigung gewartet wird. Damit man normal weiter machen kann, wärend gedownloadet wird.
-
Man kann das nicht so einfach Rückwärts machen, weil man die Datei ja noch auswählen muss.
Aber Trotzdem danke. -
Du kannst Threads abbonieren, dann bekommst du alles per EMail.
-
Da hat die Tastatur wohl ein bisschen was verschluckt.
Ist geändert. -
Hallo zusammen,
ich hab mal einen Chat geschrieben und will noch ein par Extras einbauen.
Der Chat funktioniert wunderbar, nur stehe ich bei der Umstzung der Extras ziemlich auf dem Schlauch.
Der Client:Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>$gui = GUICreate(@UserName, 850, 300)
[/autoit] [autoit][/autoit] [autoit]
GUISetFont(11, 700, 1, "Lucida Console")
$Edit1 = GUICtrlCreateEdit("", 0, 0, 650, 250, $ES_READONLY+$WS_VSCROLL+$ES_MULTILINE)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$Input1 = GUICtrlCreateEdit("", 0, 250, 550, 50, $ES_AUTOVSCROLL+$ES_WANTRETURN)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$button = GUICtrlCreateButton("hohladen", 550, 250, 100, 25)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$button2 = GUICtrlCreateButton("ruterladen", 550, 275, 100, 25)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$list = GUICtrlCreateList("", 650, 0, 200, 310)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
GUISetState()
GUISetBkColor(0x000000)$dummy = GUICtrlCreateDummy()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $AccelKeys[1][2]=[["{Enter}", $dummy]]
GUISetAccelerators($AccelKeys)TCPStartUp()
[/autoit] [autoit][/autoit] [autoit]
$Socket = TCPConnect(@IPAddress1,3333)
If @error Then Exit
$SocketDatei = TCPConnect(@IPAddress1,3334)
If @error Then ExitWhile sleep(10)
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $dummy
_Senden()
Case $button
_DateiSenden()
EndSwitch
_Empfangen()
WEndFunc _Empfangen()
[/autoit] [autoit][/autoit] [autoit]
$Message = TCPRecv($Socket,2048)
If $Message <> "" Then
GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & @crlf & $Message)
EndIf
EndFuncFunc _Senden()
[/autoit] [autoit][/autoit] [autoit]If GUICtrlRead($Input1) <> "" Then TCPSend($Socket,"<" & @UserName & "> "& GUICtrlRead($Input1))
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($Input1, "")
EndFuncFunc _DateiSenden()
[/autoit]
$filep = FileOpenDialog ("Datei wäheln", @DesktopDir, "(*.*)" )
If $filep <> "" Then
$file = FileRead($filep)
$name = StringSplit($filep , "")
$name1 = $name[$name[0]]
While StringLen($name1) < 2048
$name1 = $name1 & "_"
WEnd
$bin = StringToBinary($file)
TCPSend($SocketDatei, $name1)
While $file <> ""
$r = StringLeft($file, 2048)
$file = StringTrimLeft($file, 2048)
TCPSend($SocketDatei, $r)
WEnd
TCPSend($Socket, "<Datei von " & @UserName & "> " & $name[$name[0]])
EndIf
EndFunc
Der Server:Spoiler anzeigen
[autoit];Server
[/autoit] [autoit][/autoit] [autoit]
Global $MaxConnect = 50TCPStartup() ; TCP starten
[/autoit] [autoit][/autoit] [autoit]
$Socket = TCPListen(@IPAddress1, 3333, $MaxConnect)Dim $Verbindung[$MaxConnect]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($Verbindung) - 1
$Verbindung[$i] = -1
NextWhile 1
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $MaxConnect - 1
If $Verbindung[$i] = -1 Then
$Verbindung[$i] = TCPAccept($Socket)
TCPSend($Verbindung[$i], "Willkommen im Chat")
EndIfIf $Verbindung[$i] <> -1 Then
[/autoit] [autoit][/autoit] [autoit]
$Resv = TCPRecv($Verbindung[$i], 2048)
If @error Then
TCPCloseSocket($Verbindung[$i])
$Verbindung[$i] = -1
EndIfIf $Resv <> "" Then
[/autoit] [autoit][/autoit] [autoit]
For $j = 0 To $MaxConnect - 1
If $Verbindung[$j] <> -1 Then TCPSend($Verbindung[$j], $Resv)
Next
EndIfEndIf
[/autoit]
Next
WEnd
Der Server zum hochladen von Dateien:Spoiler anzeigen
[autoit];Server für dateien
[/autoit] [autoit][/autoit] [autoit]
Global $MaxConnect = 50TCPStartup() ; TCP starten
[/autoit] [autoit][/autoit] [autoit]
$Socket = TCPListen(@IPAddress1, 3334, $MaxConnect)Dim $Verbindung[$MaxConnect]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($Verbindung) - 1
$Verbindung[$i] = -1
NextWhile 1
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $MaxConnect - 1
If $Verbindung[$i] = -1 Then
$Verbindung[$i] = TCPAccept($Socket)
EndIfIf $Verbindung[$i] <> -1 Then
[/autoit]
$Resv = TCPRecv($Verbindung[$i], 2048)
If @error Then
TCPCloseSocket($Verbindung[$i])
$Verbindung[$i] = -1
EndIf
$name = $Resv
While StringRight($name, 1) = "_"
$name = StringTrimRight($name, 1)
WEnd
ConsoleWrite($name)
While $Resv <> ""
$Resv = TCPRecv($Verbindung[$i], 2048)
$q = BinaryToString($Resv)
FileWrite($name, $q)
WEnd
EndIf
Next
WEnd
Was der Chat schon kann:
-Mit bis zu 50 Teilnehmern schreiben
-Dateien auf den Server ladenJetzt die Extras, die ich einbauen will:
-in der Liste $list sollen alle Benutzernamen von Chatteilnehmern sein
-es sollen zu Beginn alles vervügbaren IP-Adressen nach den Ports durchprobiert werden, damit man den Server überall starten kann, ohne die IP-Adresse zu ändern
-beim Hochladen von dateien auf dn Server soll man ganz normal weiterchatten können, bisher muss man warten, bis die Datei vollsändig hohgeladen ist.
-jeder soll die hochgeladenen Datein natürlich auch wieder runterladen können.Wie gesagt, ich stehe da irgendwie ziemlich auf dem Schlauch und hoffe, ihr könn mir helfen
-
Ich das Script einfach mal kopiert und etwas geändert.
Spoiler anzeigen
[autoit]Global Const $DESKTOP_ENUMERATE = 0x40
[/autoit] [autoit][/autoit] [autoit]
Global Const $SPI_GETSCREENSAVERRUNNING = 114
Global Const $DESKTOP_SWITCHDESKTOP = 0x100While(sleep(60000))
[/autoit] [autoit][/autoit] [autoit]
Local $p_lngHwnd, $p_lngRtn, $p_lngErr, $p_lngScreenSaver, $p_blnIsScreenSaverIf @OSTYPE = "WIN32_WINDOWS" Then
[/autoit] [autoit][/autoit] [autoit]
$p_lngHwnd = DllCall("user32.dll", "int", "OpenDesktopA", "str", "screen-saver", "int", 0, "int", False, "int", $DESKTOP_ENUMERATE)
If $p_lngHwnd[0] <> 0 Then
$p_blnIsScreenSaver = True
Else
$p_blnIsScreenSaver = False
EndIf
Else
$p_lngRtn = DllCall("user32.dll", "int", "SystemParametersInfoA", "int", $SPI_GETSCREENSAVERRUNNING, "int", 0, "int", $p_lngScreenSaver, "int", 0)
If Not $p_lngRtn[0] = 0 Then
$p_blnIsScreenSaver = $p_lngScreenSaver
EndIf
EndIfIf $p_blnIsScreenSaver Then
[/autoit]
If @OSTYPE = "WIN32_WINDOWS" Then
$p_lngHwnd = DllCall("user32.dll", "int", "CloseDesktop", "int", $p_lngHwnd[0])
EndIf
Else
$p_lngHwnd = DllCall("user32.dll", "int", "OpenDesktopA", "str", "Default", "int", 0, "int", False, "int", $DESKTOP_SWITCHDESKTOP)
If Not $p_lngHwnd[0] = 0 Then
$p_lngRtn = DllCall("user32.dll", "int", "SwitchDesktop", "int", $p_lngHwnd[0])
If $p_lngRtn[0] = 0 Then
If $p_lngErr = 0 Then
Shutdown(4)
Exit
EndIf
EndIf
$p_lngHwnd = DllCall("user32.dll", "int", "CloseDesktop", "int", $p_lngHwnd[0])
EndIf
EndIf
WEnd
Funktioniert das so, wenn ich das um 10:00 Uhr mi der Aufgabenplanung ausführen lasse?Oder wie kann man das mit Windows machen?
-
dass man den Pc um eine bestimmte Uhrzeit mit der Aufgebenplanung runterfahren kann weiß ich auch, aber es geht ja darum, dass ich nicht will , dass der runterfährt, wenn ich noch daran arbeite.
Ich hatte auch vor, das Script mit der aAufgabnplanung auszuführen.