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