Hi,
ich würde gerne die Position eines Icons auf dem Desktop ermitteln.
Leider habe ich keine Idee, wie ich das bewerkstelligen soll und über die Suche und Google habe ich auch nichts passendes gefunden :(.
Hat jemand eine Idee?
So long,
owi
Hi,
ich würde gerne die Position eines Icons auf dem Desktop ermitteln.
Leider habe ich keine Idee, wie ich das bewerkstelligen soll und über die Suche und Google habe ich auch nichts passendes gefunden :(.
Hat jemand eine Idee?
So long,
owi
also wenn du das icon / symbol kennst, könntest du mit pixelsearch arbeiten... wird natürlich blöd, wenn das symbol unterschiedlich groß auf verschiedenen desktops ist. falls du es irgendwie anklicken willst, könntest du noch schauen (Falls der desktop link immer den gleichen namen trägt), ob du nicht besser unter @desktop die links nach der linkbeschreibung durchsuchst.
Ich weiß sowohl den Namen der Verknüpfung und das Icon. Mit PixelSearch klappt das aber wahrscheinlich nur kaum, da ich nicht die Größe der Icons kenne und oft ja auch Transparenz verwendet wird, wo man dann das Wallpaper, welches ich auch nicht kenne, sieht.
Kann man die Position nicht anhand des Namens irgendwie in der Registry oder so bestimmen?
na dann ruf doch einfach die verknüfung auf.
[autoit]run("namederverknuepung", @DesktopDir)
[/autoit]oder brauchst du wirklich die position ?
falls "ja" wozu ?
Ich brauche die Position, damit ich da einen BallonTip dranmachen kann mit einer Information.
das hier schon gesehen ?:
http://de.autohotkey.com/forum/topic2549.html
einer der links oben führt zu einem artikel in dem das hier steht:
Laut diesem deutschsprachigen Artikel beherbergt der benutzerspezifische Schlüssel
"Hkey_Current_User\Software\Microsoft\WindowsCurrentVersion\ Explorer\Streams"
die gespeicherten Einstellungen für geöffnete Fenster in durchnummerierten Unterschlüsseln.
Die Positionen für die Symbole am Desktop sollen ebenfalls hier gespeichert sein. Mehr Details verrät Microsoft nicht, doch offenbart ein Blick in die genannte Schlüsselstruktur neben den durchnummerierten Einträgen auch den Unterschlüssel "Desktop" mit Binärwerten für das Desktop-Layout.
Um die aktuelle Icon-Anordnung zu sichern, exportieren Sie also den Schlüssel
"Hkey_Current_User\Software\Microsoft\Windows\ CurrentVersion\Explorer\Streams\Desktop"
in eine REG-Datei.
Alles anzeigen
mit _imagesearch funktioniert das super. google mal..
Probier mal folgendes Beispiel:
#include <GuiListView.au3>
If Not WinActive("Program Manager") Then WinActivate("Program Manager")
$hwnd = ControlGetHandle("Program Manager", "", "SysListView321")
$hwnd = HWnd($hwnd)
WinMinimizeAll()
For $i = 0 To _GUICtrlListView_GetItemCount($hwnd) - 1
$pos = _GUICtrlListView_GetItemPosition($hwnd, $i)
If IsArray($pos) Then
; Icongröße ist bei mir 48x48 und er ist bei mir ~ 6 Pixel über dem Feld =>
; 48x54, damit man nun die Mitte hat :2 rechnen => 24x27 jeweils hinzufügen:
MouseMove($pos[0] + 24, $pos[1] + 27)
EndIf
Sleep(100)
Next
PS: Testsystem = Windows 7 x64 @ 1680 x 1050 Auflösung mit Standard Design
- ist vllt. wichtig für die Anvisierung der Icons (bei mir ist es mit dem Beispiel mittig)
WhiteLion: Da stehen zwar einige Verknüpfungen vom Desktop, aus dem Binären Wirrwarr kann ich allerdings keine Positionen rauslesen.
@Twodollarbillie: Ich möchte eigendlich möglichst fern von allem was mit PixelSearch und so zu tun hat bleiben, da das Icon theoretisch auch komplett transparent o.Ä. sein kann.
XovoxKingdom: Klingt gut, nur was ist der Program Manager?^^
Bei mir (siehe letzter Post Infos zu OS) heißt der Desktop so...
Du kannst es via AutoItinfotool herausfinden und ggf. anpassen, da ich nicht
weiß wie er bei anderen OS heißt.
Die Controlgethandle-Funktion muss dann selbstverständlich auch angepasst werden.
Welches OS hast du denn?
Ahh, jetzt habe ich dein Script verstanden
Ich habe jetzt dein Script so umgeschrieben, dass man den Namen der Verknüpfung eingeben muss und da dann ein BalloonTip erscheint.
#include <GuiListView.au3>
ShowBalloonTip("Papierkorb")
Sleep(4000)
Func ShowBalloonTip($LinkName)
If Not WinActive("Program Manager") Then WinActivate("Program Manager")
$hwnd = ControlGetHandle("Program Manager", "", "SysListView321")
$hwnd = HWnd($hwnd)
WinMinimizeAll()
For $i = 0 To _GUICtrlListView_GetItemCount($hwnd) - 1
If _GUICtrlListView_GetItemText($hwnd, $i)=$LinkName Then
$pos = _GUICtrlListView_GetItemPosition($hwnd, $i)
If IsArray($pos) Then
ToolTip("Das ist die Verknüpfung",$pos[0] + 24, $pos[1] + 27,"Hier",1,5)
ExitLoop
EndIf
EndIf
Next
EndFunc
Das war genau das, was ich gesucht habe, vielen Dank!
P.S.: Vista x32, 1440x900, Aero-Design