Kleiner Gedankenhänger

10/13/2010 21:16 mipez#1
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <Misc.au3>

$Form1 = GUICreate("Form1", 354, 188, 192, 124)
$List1 = GUICtrlCreateList("", 16, 16, 177, 149)
GUICtrlSetState(-1,$GUI_DISABLE)
$Radio1 = GUICtrlCreateRadio("Coords = Desktop", 216, 24, 113, 17)
GUICtrlSetState(-1,$GUI_CHECKED)
$Radio2 = GUICtrlCreateRadio("Coords = Window", 216, 48, 113, 25)
GUISetState(@SW_SHOW)

Global $read1
Global $read2
Global $ini

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Radio2
            Opt("MouseCoordMode",0)
            $win = WinList()
            _ArrayDisplay($win)
            GUICtrlSetState($List1,$GUI_ENABLE)
            GUICtrlSetData($List1,"")
            For $i = 1 To $win[0][0]
                If $win[$i][0] <> "" OR "Program Manager" OR "Start" AND _WinAPI_IsWindowVisible($win[$i][1]) Then 
                    GUICtrlSetData($List1,$win[$i][0],"")
                EndIf
            Next
        Case $Radio1
            GUICtrlSetState($List1,$GUI_DISABLE)
            Opt("MouseCoordMode",1)
            $ini = "Desktop"
            If NOT FileExists("Desktop.ini") Then
            IniWrite($ini & ".ini","X","","")
            IniWrite($ini & ".ini","Y","","")
            Else
            $read1 = IniReadSection($ini & ".ini","X")
            $read2 = IniReadSection($ini & ".ini","Y")
            EndIf
        Case $List1
            $ini = GUICtrlRead($List1)
            If NOT FileExists($ini & ".ini") Then
            IniWrite($ini & ".ini","X","","")
            IniWrite($ini & ".ini","Y","","")
            Else
            $read1 = IniReadSection($ini & ".ini","X")
            $read2 = IniReadSection($ini & ".ini","Y")
            EndIf
        EndSwitch
    If _IsPressed("2D") Then
        $tu = MouseGetPos()
        IniWrite($ini & ".ini","X",$read1[0][0],$tu[0])
        IniWrite($ini & ".ini","Y",$read2[0][0],$tu[1])
    EndIf
WEnd
Bei "Case $Radio1" funzt iwas mit den .inis nich. Mir fällt nur gerade nich auf was xD
10/13/2010 21:44 bassbanane#2
Sag mal genau, was er deiner Meinung nach machen soll. Denn wenn ich mir das so anschau weiß ich nicht worauf du hinaus willst.
10/13/2010 21:51 mipez#3
Es funzt alles, nur eben der Part von "Case $Radio1" nicht (soll heißen, es wird keine neue .ini ge- und keine vorhandene überschrieben.
Schau dir einfach "Case $List1" an.
10/13/2010 22:34 lolkop#4
also wenn ich mir den source anschaue kann aber radio 2 auchnicht funktionieren...

If $win[$i][0] <> "" OR "Program Manager" OR "Start" AND _WinAPI_IsWindowVisible($win[$i][1]) Then
sowas geht mal garnicht... erstmal musst du nach jeder logischen verknüpfung natürlich sagen was du da mit dem string sagen willst, und ausserdem musst du das ganze sowieso und verknüpfen und nicht oder...

oder heist doch wenn eins zutrifft, ist die bedinung erfüllt. also wenn der string nicht "Start" ist kann er auch gerne "" oder "Program Manger" sein.

richtig wäre also:
Code:
If $win[$i][0] <> "" And $win[$i][0] <> "Program Manager" And $win[$i][0] <> "Start" And BitAND(WinGetState($win[$i][1]), 2) Then GUICtrlSetData($List1,$win[$i][0],"")
10/13/2010 22:56 mipez#5
Quote:
Originally Posted by lolkop View Post
also wenn ich mir den source anschaue kann aber radio 2 auchnicht funktionieren...

If $win[$i][0] <> "" OR "Program Manager" OR "Start" AND _WinAPI_IsWindowVisible($win[$i][1]) Then
sowas geht mal garnicht... erstmal musst du nach jeder logischen verknüpfung natürlich sagen was du da mit dem string sagen willst, und ausserdem musst du das ganze sowieso und verknüpfen und nicht oder...

oder heist doch wenn eins zutrifft, ist die bedinung erfüllt. also wenn der string nicht "Start" ist kann er auch gerne "" oder "Program Manger" sein.

richtig wäre also:
Code:
If $win[$i][0] <> "" And $win[$i][0] <> "Program Manager" And $win[$i][0] <> "Start" And BitAND(WinGetState($win[$i][1]), 2) Then GUICtrlSetData($List1,$win[$i][0],"")
Hm logischweise ja, aber auf meine Art zeigts trotzdem nur die optisch vorhandenen Fenster an xD
Btw. hast zu meinem Hauptproblem keine Lösung?
10/13/2010 23:15 lolkop#6
ich versteh nicht was das tool denn überhaupt machen soll...
und deine ganzen ini-funktionen da verstehe ich schon garnicht :o

kannst uns ja mal aufklären
10/13/2010 23:32 mipez#7
Überarbeitet:
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <Misc.au3>

$Form1 = GUICreate("Form1", 354, 188, 192, 124)
$List1 = GUICtrlCreateList("", 16, 16, 177, 149)
GUICtrlSetState(-1,$GUI_DISABLE)
$Radio1 = GUICtrlCreateRadio("Coords = Desktop", 216, 24, 113, 17)
$Radio2 = GUICtrlCreateRadio("Coords = Window", 216, 48, 113, 25)
GUISetState(@SW_SHOW)

Global $read1
Global $read2
Global $ini

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Radio2
			Opt("MouseCoordMode",0)
			$win = WinList()
			_ArrayDisplay($win)
			GUICtrlSetState($List1,$GUI_ENABLE)
			GUICtrlSetData($List1,"")
			For $i = 1 To $win[0][0]
				If $win[$i][0] <> "" AND $win[$i][0] <> "Program Manager" AND $win[$i][0] <>  "Start" AND _WinAPI_IsWindowVisible($win[$i][1]) Then 
					GUICtrlSetData($List1,$win[$i][0],"")
				EndIf
			Next
		Case $Radio1
			GUICtrlSetState($List1,$GUI_DISABLE)
			Opt("MouseCoordMode",1)
			$ini = "Desktop"
			If NOT FileExists("Desktop.ini") Then
			IniWrite($ini & ".ini","X","","")
			IniWrite($ini & ".ini","Y","","")
			Else
			$read1 = IniReadSection($ini & ".ini","X")
			$read2 = IniReadSection($ini & ".ini","Y")
			EndIf
		Case $List1
			$ini = GUICtrlRead($List1)
			If NOT FileExists($ini & ".ini") Then
			IniWrite($ini & ".ini","X","","")
			IniWrite($ini & ".ini","Y","","")
			Else
			$read1 = IniReadSection($ini & ".ini","X")
			$read2 = IniReadSection($ini & ".ini","Y")
			EndIf
		EndSwitch
	If _IsPressed("2D") Then
		$tu = MouseGetPos()
		IniWrite($ini & ".ini","X",$read1[0][0],$tu[0])
		IniWrite($ini & ".ini","Y",$read2[0][0],$tu[1])
	EndIf
WEnd



...Urgh erklären :x

Alsooooo:
Radio1 wird angeklickt: Falls die Desktop.ini nicht vorhanden ist, wird ne neue erstellt. Falls doch, wird die Anzahl der Keys in $read1 und $read2 gespeichert. In $ini wird "Desktop" gespeichert.

Radio2 wird angeklickt: Es wird die Liste mit allen optisch vorhandenen Fenstern angezeigt.

List1 wird angeklickt: Falls nicht bereits vorhanden, wird eine eine .ini nach dem Schema Fenstertitel.ini angelegt, prinzipiell Selbiges wie bei Radio1, nur dass in $ini der Fenstertitel gespeichert wird.

Sobald man "Einfügen" auf der Tasta drückt, speichert es die Mauskoordinaten in der jeweiligen .ini.


...hoffe das reicht xD