Hallo sokobana,
nehmen wir mal den einfachsten Fall:
Ein WinCE-Programm (=exe-Datei) erzeugt ein Fenster.
Jedes Fenster hat drei "Namen" mit denen man sie identifizieren kann:
- den Fensternamen
- den Klassennamen
- das eindeutige Fensterhandle
Der Fenstername steht z.B. in der Taskleiste oder in der Fenstertitel-Zeile, falls vorhanden.
Den Klassennamen kann man nur mit spezieller Software anzeigen
Intern arbeitet WinCE nur mit dem Fensterhandle, einer Hex-Zahl (DWORD), diese wird aber erst bei der Erzeugung des Fensters zugewiesen und ist nur so lange gültig, wie das Fenster existiert.
Im Bild unten sieht man alle Fenster, die bei mir gerade existieren.
GoPal hat hier das Fensterhandle 7C019200 und den Fensternamen "GoPal Navigator" sowie den Klassennamen "SkinFrame".
Es gibt aber auch Fenster, die keinen Fensternamen haben, diese sind i.d.R. unsichtbar. Den Fenster- und Klassennamen kann jedes Programm für sich selbst definieren.
Will man nun etwas an ein bestimmtes Fenster senden, so benötigt man dazu das Fensterhandle. Um dieses zu ermitteln gibt es in WinCE Funktionen mit denen man anhand des Fenster- und/oder Klassennamens ein bestimmtes Fenster suchen kann. Bei Erfolg bekommt man das Handle zurück. An diese Handle kann man nun z.B. einen Klick oder eine andere Windows-Message senden.
Was das Zielprogramm dann damit macht, entscheidet es selbst.
So nun zum Fenster selbst:
Wie man sieht, besteht GoPal (aus Sicht von außen, d.h. von WinCE) auch nur aus einem Fenster.
Die verschiedenen Ansichten in GoPal (Map, Menü, Kompass, ...) können von außen nicht unterschieden werden! Koord kann also per se nicht feststellen, welche Ansicht GoPal gerade darstellt, da diese alle in dem selben Fenster angezeigt werden (Ein Bildbetrachtungsprogramm ändert auch nicht seinen Namen nur deshalb, weil man ein anderes Foto ansieht). Um die einzelnen Ansichten dennoch unterscheiden zu können, arbeiten wir ja mit diesen Farbpixel an bestimmten Stellen.
Also kurz zusammengefasst:
Du kannst mit Koord Klicks nur global an "GoPal Navigator" senden. Welche Ansicht gerade aktiv ist, muss af anderem Wege festgestellt werden.
Noch eine Anmerkung zum KoordServer:
mit dem Parameter ClassName= setzt man genau den o.g. Klassennamen. Nur KoordServer mit unterschiedlichen Klassennamen können parallel laufen. Bei gleichem Klassennamen wird der Server beendet!
Gruß,
Stefan