Programm in den Autostart :D

03/25/2012 10:18 ҭὄẋἷƈṩҭẏłἔ#1
Hallo Leutz :D

Ich will mit AutoIT ein Programm schreiben.
Es soll sich durch doppelklick (also wenn man es startet) selbst in den Autostart Ordner Kopieren ! Nicht Verschieben.

Und es ist kein Virus sondern ein Programm das beim drücken auf meine Laptop play Taste die Uhrzeit anzeigt ^^
z.B. beim Css gamen :D
(Uhrzeit-Programm schon fertig brauch nur hilfe beim Autostart "dingsbumbs"

[Only registered and activated users can see links. Click Here To Register...] im vorraus
03/25/2012 14:30 KDeluxe#2
Code:
If @Compiled == 1 Then
	FileCreateShortcut(@AutoItExe, @StartupDir & "\" & @ScriptName & ".lnk", @ScriptDir) ;für den aktuellen Benutzer
	FileCreateShortcut(@AutoItExe, @StartupCommonDir & "\" & @ScriptName & ".lnk", @ScriptDir) ;für alle Benutzer
EndIf
03/25/2012 16:49 ҭὄẋἷƈṩҭẏłἔ#3
Quote:
Originally Posted by KDeluxe View Post
Code:
If @Compiled == 1 Then
    FileCreateShortcut(@AutoItExe, @StartupDir & "\" & @ScriptName & ".lnk", @ScriptDir) ;für den aktuellen Benutzer
    FileCreateShortcut(@AutoItExe, @StartupCommonDir & "\" & @ScriptName & ".lnk", @ScriptDir) ;für alle Benutzer
EndIf
Wow, danke :D

Kann geschlossen werden!



Edit : Doch nicht >.<

Hab grad mal versucht eine MsgBox einzubauen..
MsgBox öffnet sich aber nichts wird in den Autostart kopiert..
Ich will das hier :

Code:
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WinAPI.au3>
#include <WindowsConstants.au3>
OnAutoItExitRegister('OnAutoItExit')
HotKeySet('{ESC}', '_Exit')
Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)
While True
    Sleep(50)
WEnd
Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
        Switch $wParam
            Case $WM_MBUTTONDOWN
                _MButton(1)
            Case $WM_MBUTTONUP
                _MButton(0)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc
Func _MButton($iDown)
    If $iDown Then
        ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
        ToolTip('')
    EndIf
EndFunc
Func _Exit()
    Exit
EndFunc
Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
EndFunc   ;==>OnAutoItExit
Mit einem Programm verbinden (so wie deins ^^ Wenns funzt) .Dass es in den Autostart (Wenn der Pc Hochgefahren wird, das erste was er öffnet...) Ordner kopiert.
P.S. Programm gehört nem Freund :)
03/26/2012 00:46 KDeluxe#4
Und was soll jetzt das Problem sein? Die Verknüpfung wird nur erstellt, wenn das Script eine .exe ist. Die AutoIt .exe auszuführen wäre ja sinnlos, außer man übergibt die .au3 als Parameter.

Code:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

If @Compiled == 1 Then ;nur wenn das Script eine kompilierte .exe ist
	$Shortcut = @StartupCommonDir & "\" & @ScriptName & ".lnk"
	If Not FileExists($Shortcut) Then
		FileCreateShortcut(@AutoItExe, $Shortcut, @ScriptDir)
		;ShellExecute(@StartupCommonDir) ;öffnet den Startup Ordner
	EndIf
EndIf

OnAutoItExitRegister('OnAutoItExit')
HotKeySet('{ESC}', '_Exit')

Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
        Switch $wParam
            Case $WM_MBUTTONDOWN
                _MButton(1)
            Case $WM_MBUTTONUP
                _MButton(0)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func _MButton($iDown)
    If $iDown Then
        ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
        ToolTip('')
    EndIf
EndFunc

Func _Exit()
    Exit
EndFunc

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
EndFunc

While True
    Sleep(50)
WEnd
03/28/2012 18:28 ҭὄẋἷƈṩҭẏłἔ#5
Ich glaub das der Code funktioniert da du ja sicher kein Anfänger bist..
Aber er funktioniert aufjedenfall nicht bei mir...
Und so dumm bin ich auch wieder nicht, wenn da "If @Compiled == 1 Then" steht weiß ich das man es Compilen muss...
Also die Anzeige funktioniert aber wenn ich Neustarte dann wird die Datei nicht geöffnet..

Edit :
Hab mal gekuckt ob das manuell geht... (Ich dachte es wird vl geblockt etc.)
Und dann hab ich den Fehler gefunden...
Man braucht Adminrechte das man etwas in den Autostart Ordner kopieren kann^^

So für den ders will ;)
Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#RequireAdmin
If @Compiled == 1 Then ;nur wenn das Script eine kompilierte .exe ist
	$Shortcut = @StartupCommonDir & "\" & @ScriptName & ".lnk"
	If Not FileExists($Shortcut) Then
		FileCreateShortcut(@AutoItExe, $Shortcut, @ScriptDir)
		;ShellExecute(@StartupCommonDir) ;öffnet den Startup Ordner
	EndIf
EndIf

OnAutoItExitRegister('OnAutoItExit')
HotKeySet('{ESC}', '_Exit')

Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
        Switch $wParam
            Case $WM_MBUTTONDOWN
                _MButton(1)
            Case $WM_MBUTTONUP
                _MButton(0)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func _MButton($iDown)
    If $iDown Then
        ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
        ToolTip('')
    EndIf
EndFunc

Func _Exit()
    Exit
EndFunc

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
EndFunc

While True
    Sleep(50)
WEnd
Danke ! nochmal ^^
03/28/2012 18:38 Lawliet#6
Kannst auch ein Registry Eintrag setzen.
Code:
If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", "REG_SZ") = False and @compiled Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Run\", "Shell", "REG_SZ", @ScriptFullPath)
03/28/2012 18:39 ҭὄẋἷƈṩҭẏłἔ#7
Kannst du den Code auch erklären ?^^
03/28/2012 18:43 Lawliet#8
Quote:
Originally Posted by ҭὄẋἷƈṩҭẏłἔ View Post
Kannst du den Code auch erklären ?^^
Der Code schreibt den Pfad zu deinem Programm in die Registrierungsdatenbank von Windows und zwar in den Bereich, der für das starten von Programmen nach dem erfolgreichen Anmelden jedes Users verantwortlich ist:
Quote:
Auch hier gibt es einen Unterschlüssel „SOFTWARE\Microsoft\Windows\CurrentVersion\Ru n”, der jedoch alle Anwendungen enthält, die nach dem erfolgreichen Anmelden jedes Benutzers auf diesem Rechner ausgeführt werden.
03/28/2012 18:55 ҭὄẋἷƈṩҭẏłἔ#9
1.
Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WinAPI.au3>
#include <WindowsConstants.au3>

If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", "REG_SZ") = False and @compiled Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Run\", "Shell", "REG_SZ", @ScriptFullPath)


OnAutoItExitRegister('OnAutoItExit')
HotKeySet('{ESC}', '_Exit')

Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
        Switch $wParam
            Case $WM_MBUTTONDOWN
                _MButton(1)
            Case $WM_MBUTTONUP
                _MButton(0)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func _MButton($iDown)
    If $iDown Then
        ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
        ToolTip('')
    EndIf
EndFunc

Func _Exit()
    Exit
EndFunc

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
EndFunc

While True
    Sleep(50)
WEnd
So richtig ?
2.
wenn 1. richtig ist dann funktioniert es nicht..
Oder braucht man hierfür auch Adminrechte ?
03/28/2012 19:26 .SkyneT.#10
Quote:
Originally Posted by ҭὄẋἷƈṩҭẏłἔ View Post
1.
Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WinAPI.au3>
#include <WindowsConstants.au3>

If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", "REG_SZ") = False and @compiled Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Run\", "Shell", "REG_SZ", @ScriptFullPath)


OnAutoItExitRegister('OnAutoItExit')
HotKeySet('{ESC}', '_Exit')

Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = ""
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
        Switch $wParam
            Case $WM_MBUTTONDOWN
                _MButton(1)
            Case $WM_MBUTTONUP
                _MButton(0)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func _MButton($iDown)
    If $iDown Then
        ToolTip(@HOUR & ':' & @MIN & ':' & @SEC) ; Anzeige Tooltip solange Middle gedrückt
    Else
        ToolTip('')
    EndIf
EndFunc

Func _Exit()
    Exit
EndFunc

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
EndFunc

While True
    Sleep(50)
WEnd
So richtig ?
2.
wenn 1. richtig ist dann funktioniert es nicht..
Oder braucht man hierfür auch Adminrechte ?
Für das ändern der Registry wirst du mit ziemlicher Sicherheit Administratorrechte brauchen.
03/28/2012 19:44 ҭὄẋἷƈṩҭẏłἔ#11
Okey^^
Naja Problem gelöst..

#Close
03/28/2012 20:37 Lawliet#12
Fehlende Admin Rechte waren warscheinlich auch das Problem bei KDs Möglichkeit.
03/29/2012 08:47 fReeZ.#13
Wenn du die Uhrzeit nachgucken willst während du CSS spielst musst du nur "Shirt + Tab" drücken. Dann sollte oben Links leserlich die Zeit angezeigt werden.

Grüße
fReeZ.