Also, ich hab n merkwürdiges Problem...
und nen komplizierten Skriptcode mit nem möchtegern-OOP
leider konnte ich nach längerer Zeit den Fehler nicht killen, jetzt brauchts Verstärkung
Ich habe versucht die Taskliste nachzubauen
habs auch geschafft
also das Aussehen ist nachgebaut, die Funktion will ich lieber nicht nachbeuen
Also ich hoste mal das Skript, das Problem lautet:
Skript reagiert nicht wenn man auf ein Pic im Startmenü clickt (Sperren & Ausschalten)
Spoiler anzeigen
#Region initialize
#NoTrayIcon
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("WinTitleMatchMode", 4)
Global $mpar = "go"
_onEvent("start")
configuration("start")
taskbar("create")
programm("start")
desklock("start")
Icons("start")
#EndRegion
While True
taskbar()
sleep(300)
programm("work")
WEnd
Func taskbar($mpar="work", $par1="")
Switch $mpar
Case "work"
$taskbar_pos = WinGetPos($taskbar_shellgui)
WinMove($taskbar_gui, "", @DesktopWidth-$taskbar_pos[2]-$taskbar_pos[0], @DesktopHeight-$taskbar_pos[3]-$taskbar_pos[1], $taskbar_pos[2], $taskbar_pos[3], 1)
If $taskbar_pos[2] = @DesktopWidth And $taskbar_align = 0 Then
GUICtrlDelete($taskbar_b1)
GUICtrlDelete($taskbar_b2)
GUISwitch($taskbar_gui)
$taskbar_b1 = GUICtrlCreatePic("blue_b3.bmp", 102, 0, @DesktopWidth-102, 22)
$taskbar_b2 = GUICtrlCreatePic("blue_b4.bmp", 0, $taskbar_pos[3]-14, @DesktopWidth, 14)
$taskbar_align = 1
GUICtrlSetImage($programm_start, "blue_start2.bmp")
ElseIf $taskbar_pos[3] = @DesktopHeight And $taskbar_align = 1 Then
GUICtrlDelete($taskbar_b1)
GUICtrlDelete($taskbar_b2)
GUISwitch($taskbar_gui)
$taskbar_b1 = GUICtrlCreatePic("blue_b1.bmp", 0, 33, 13, @DesktopHeight-33)
$taskbar_b2 = GUICtrlCreatePic("blue_b2.bmp", $taskbar_pos[2]-13, 0, 13, @DesktopHeight)
$taskbar_align = 0
GUICtrlSetImage($programm_start, "blue_start1.bmp")
EndIf
$wins = WinList()
If $taskbar_pos[2] = @DesktopWidth Then
$width = @DesktopWidth
$wpos = 0
Else
$width = @DesktopWidth-$taskbar_pos[2]-$taskbar_pos[2]
$wpos = $taskbar_pos[2]
EndIf
If $taskbar_pos[3] = @DesktopHeight Then
$height = @DesktopHeight
$hpos = 0
Else
$height = @DesktopHeight-$taskbar_pos[3]-$taskbar_pos[3]
$hpos = $taskbar_pos[3]
EndIf
For $c = 1 To $wins[0][0]
If BitAND(WinGetState($wins[$c][1]), 32) Then
$pos2 = WinGetPos($wins[$c][1], "")
If $pos2[0] > -7 And $pos2[0] < @DesktopWidth-7 And $pos2[1] > -7 And $pos2[1] < @DesktopHeight-7 Then
WinMove($wins[$c][1], "", $wpos-4, $hpos-4, $width+8, $height+8, 1)
EndIf
EndIf
Next
Case "create"
Global $taskbar_shellgui = WinGetHandle("classname=Shell_TrayWnd")
Global $taskbar_pos = WinGetPos($taskbar_shellgui)
Global $taskbar_gui = GUICreate("Taskbar 2", $taskbar_pos[2], $taskbar_pos[3], @DesktopWidth-$taskbar_pos[2]-$taskbar_pos[0], @DesktopHeight-$taskbar_pos[3]-$taskbar_pos[1], $WS_POPUP, $WS_EX_TOOLWINDOW)
If $taskbar_pos[2] = @DesktopWidth Then
Global $taskbar_b1 = GUICtrlCreatePic("blue_b3.bmp", 102, 0, @DesktopWidth-102, 22)
Global $taskbar_b2 = GUICtrlCreatePic("blue_b4.bmp", 0, $taskbar_pos[3]-14, @DesktopWidth, 14)
Global $taskbar_align = 1
ElseIf $taskbar_pos[3] = @DesktopHeight Then
Global $taskbar_b1 = GUICtrlCreatePic("blue_b1.bmp", 0, 33, 13, @DesktopHeight-33)
Global $taskbar_b2 = GUICtrlCreatePic("blue_b2.bmp", $taskbar_pos[2]-13, 0, 13, @DesktopHeight)
Global $taskbar_align = 0
EndIf
Global $taskbar_contextmenu = GUICtrlCreateContextMenu()
GUISetBkColor(0x235BDD, $taskbar_gui)
WinSetOnTop($taskbar_gui, "", 1)
Global $taskbar_show = True
GUISetState(@SW_SHOW, $taskbar_gui)
EndSwitch
EndFunc
Func icons($mpar="save", $par1="")
Switch $mpar
Case "save"
IniDelete(@ProgramFilesDir&"\TimBlo\Tasklist\Icon0.icn", "Icons")
For $c = 0 To _GUICtrlListView_GetItemCount($icons_mhandle) - 1
$sIconText = _GUICtrlListView_GetItemText($icons_mhandle, $c)
$aPos = _GUICtrlListView_GetItemPosition($icons_mhandle, $c)
IniWrite(@ProgramFilesDir&"\TimBlo\Tasklist\Icon0.icn", "Icons", $sIconText, $aPos[0] & ";" & $aPos[1])
Next
Case "load"
For $c = 0 To _GUICtrlListView_GetItemCount($icons_mhandle) - 1
$sIconText = _GUICtrlListView_GetItemText($icons_mhandle, $c)
$aPos = StringSplit(IniRead(@ProgramFilesDir&"\TimBlo\Tasklist\Icon0.icn", "Icons", $sIconText, "0"), ";")
If $aPos[0] == 2 Then
_GUICtrlListView_SetItemPosition($icons_mhandle, $c, $aPos[1], $aPos[2])
EndIf
Next
Case "start"
Global $icons_mhandle = ControlGetHandle("Program Manager", "", "SysListView321")
$Icons_menu = GUICtrlCreateMenu("Icons", $taskbar_contextmenu)
$Icons_load = GUICtrlCreateMenuItem("Icons ausrichten", $Icons_menu)
_onEvent("create", $taskbar_gui, $Icons_load, "icons", "load")
$Icons_save = GUICtrlCreateMenuItem("Icons speichern", $Icons_menu)
_onEvent("create", $taskbar_gui, $Icons_save, "icons", "save")
EndSwitch
EndFunc
Func programm($mpar="go", $par1="")
Switch $mpar
Case "start"
If $taskbar_pos[2] = @DesktopWidth Then
Global $programm_start = GUICtrlCreatePic("blue_start2.bmp", 0, 0, 102, 33)
ElseIf $taskbar_pos[3] = @DesktopHeight Then
global $programm_start = GUICtrlCreatePic("blue_start1.bmp", 0, 0, 102, 33)
EndIf
_onEvent("create", $taskbar_gui, $programm_start, "programm", "startmenu")
Global $programm_startgui = GUICreate("Startmenu2", 470, 650, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
GUISetBkColor(0x1B6BD1, $programm_startgui)
GUICtrlCreatePic("blue_header.bmp", 0, 0, 470, 65)
GUICtrlCreatePic("blue_footer.bmp", 0, 610, 470, 41)
Global $programm_exit = GUICtrlCreatePic("blue_exit.bmp", 371, 616, 92, 29)
_onEvent("create", $programm_startgui, $programm_exit, "OnAutoItExit")
WinSetOnTop($programm_startgui, "", 1)
Global $programm_menu_show = False
Case "startmenu"
$left = @DesktopWidth-$taskbar_pos[2]-$taskbar_pos[0]
$top = @DesktopHeight-$taskbar_pos[3]-$taskbar_pos[1]+32
$right = $left+470
$bottom = $top+650
If $right > @DesktopWidth Then
$left -= 470
EndIf
If $bottom > @DesktopHeight Then
$top -= 650
EndIf
WinMove($programm_startgui, "", $left, $top, 470, 650, 0)
If $taskbar_align = 0 Then
GUICtrlSetImage($programm_start, "blue_start3.bmp")
Else
GUICtrlSetImage($programm_start, "blue_start4.bmp")
EndIf
GUISetState(@SW_SHOW, $programm_startgui)
$programm_menu_show = True
Case "work"
If $programm_menu_show Then
If not WinActive($programm_startgui) Then
GUISetState(@SW_HIDE, $programm_startgui)
If $taskbar_align = 0 Then
GUICtrlSetImage($programm_start, "blue_start1.bmp")
Else
GUICtrlSetImage($programm_start, "blue_start2.bmp")
EndIf
$programm_menu_show = False
EndIf
EndIf
EndSwitch
EndFunc
Func configuration($mpar="go", $par1="", $par2="", $par3="", $par4=1)
Switch $mpar
Case "go"
return IniRead($configuration_files[$par4], $par1, $par2, $par3)
Case "save"
IniWrite($configuration_files[$par4], $par1, $par2, $par3)
Case "start"
Global $configuration_files[2]
$configuration_files[1] = @ProgramFilesDir&"\TimBlo\Tasklist\configuration.ini"
EndSwitch
EndFunc
Func desklock($mpar="unlock", $par1="", $par2="")
Switch $mpar
Case "start"
Global $programm_lock = GUICtrlCreatePic("blue_lock.bmp", 285, 616, 73, 31)
_onEvent("create", $programm_startgui, $programm_lock, "desklock", "lock")
$pos2 = WinGetPos("Program Manager")
$desklock_gui = GUICreate("Desklocker", $pos2[2], $pos2[3], $pos2[0], $pos2[1], $WS_POPUP, $WS_EX_TOOLWINDOW)
Case "lock"
$desklock_password = configuration("go", "desklock", "password", "none")
If $desklock_password <> "none" Then
$pos2 = WinGetPos("Program Manager")
WinMove($desklock_gui, "", $pos2[0], $pos2[1], $pos2[2], $pos2[3], 0)
GUISetState(@SW_SHOW, $desklock_gui)
WinSetOnTop($desklock_gui, "", 1)
Else
MsgBox(48, "Fehler", "Der Desktop kann nicht ohne Passwort gesperrt werden.")
EndIf
EndSwitch
EndFunc
Func _onEvent($mpar="go", $par0="0x0", $par1="0x0", $par2="", $par3="", $par4="")
Switch $mpar
Case "go"
For $c = 1 To $_onEvent_events[0][0]
If $_onEvent_events[$c][0] = @GUI_CtrlId Then
Call($_onEvent_events[$c][1], $_onEvent_events[$c][2], $_onEvent_events[$c][3])
MsgBox(0, "function endet", $_onEvent_events[$c][1]&"("&$_onEvent_events[$c][2]&", "&$_onEvent_events[$c][3]&")")
Return 1
EndIf
Next
MsgBox(0, "Fehler", "GuiControl nicht erkannt")
Case "create"
$_onEvent_events[0][0] += 1
ReDim $_onEvent_events[$_onEvent_events[0][0]+1][4]
$_onEvent_events[$_onEvent_events[0][0]][0] = $par1 ;ControlId
$_onEvent_events[$_onEvent_events[0][0]][1] = $par2 ;Funktion
$_onEvent_events[$_onEvent_events[0][0]][2] = $par3 ;Par1
$_onEvent_events[$_onEvent_events[0][0]][3] = $par4 ;Par2
GUISwitch($par0)
GUICtrlSetOnEvent($par1, "_onEvent")
Case "start"
Global $_onEvent_events[1][4]
$_onEvent_events[0][0] = 0
EndSwitch
EndFunc
Func OnAutoItExit($mpar=0, $par1=0)
Exit
EndFunc
Da die entsprechenden Grafiken vllt auch da sein sollten hab ich ne zip gemacht und angehängt